MCPcopy
hub / github.com/cli/cli / PreserveInput

Function PreserveInput

pkg/cmd/pr/shared/preserve.go:12–68  ·  view source on GitHub ↗
(io *iostreams.IOStreams, state *IssueMetadataState, createErr *error)

Source from the content-addressed store, hash-verified

10)
11
12func PreserveInput(io *iostreams.IOStreams, state *IssueMetadataState, createErr *error) func() {
13 return func() {
14 if !state.IsDirty() {
15 return
16 }
17
18 if *createErr == nil {
19 return
20 }
21
22 if cmdutil.IsUserCancellation(*createErr) {
23 // these errors are user-initiated cancellations
24 return
25 }
26
27 out := io.ErrOut
28
29 // this extra newline guards against appending to the end of a survey line
30 fmt.Fprintln(out)
31
32 data, err := json.Marshal(state)
33 if err != nil {
34 fmt.Fprintf(out, "failed to save input to file: %s\n", err)
35 fmt.Fprintln(out, "would have saved:")
36 fmt.Fprintf(out, "%v\n", state)
37 return
38 }
39
40 tmpfile, err := io.TempFile(os.TempDir(), "gh*.json")
41 if err != nil {
42 fmt.Fprintf(out, "failed to save input to file: %s\n", err)
43 fmt.Fprintln(out, "would have saved:")
44 fmt.Fprintf(out, "%v\n", state)
45 return
46 }
47
48 _, err = tmpfile.Write(data)
49 if err != nil {
50 fmt.Fprintf(out, "failed to save input to file: %s\n", err)
51 fmt.Fprintln(out, "would have saved:")
52 fmt.Fprintln(out, string(data))
53 return
54 }
55
56 cs := io.ColorScheme()
57
58 issueType := "pr"
59 if state.Type == IssueMetadata {
60 issueType = "issue"
61 }
62
63 fmt.Fprintf(out, "%s operation failed. To restore: gh %s create --recover %s\n", cs.FailureIcon(), issueType, tmpfile.Name())
64
65 // some whitespace before the actual error
66 fmt.Fprintln(out)
67 }
68}

Callers 2

createRunFunction · 0.92
Test_PreserveInputFunction · 0.85

Calls 7

IsUserCancellationFunction · 0.92
TempFileMethod · 0.80
ColorSchemeMethod · 0.80
FailureIconMethod · 0.80
IsDirtyMethod · 0.65
WriteMethod · 0.65
NameMethod · 0.65

Tested by 1

Test_PreserveInputFunction · 0.68