diff --git a/api/request/request.go b/api/request/request.go index e1f6eacaa9413812668e585fa7d396c0441bf71f..72876b73371224984590b3b67f7242cbb3663715 100644 --- a/api/request/request.go +++ b/api/request/request.go @@ -23,7 +23,11 @@ func MakeRequest(payload, url, method string) (string, error) { if err != nil { return "", err } - defer resp.Body.Close() + defer func() { + if err := resp.Body.Close(); err != nil { + log.Fatal(err) + } + }() bodyBytes, _ := io.ReadAll(resp.Body) bodyString := string(bodyBytes) diff --git a/cmd/gen-docs/docs.go b/cmd/gen-docs/docs.go index 04ab2d015eabc50fbd402ea0fccd65ab532a8f07..a15e3272216e88ba5709a697672aa6efdbf2abbe 100644 --- a/cmd/gen-docs/docs.go +++ b/cmd/gen-docs/docs.go @@ -174,7 +174,11 @@ func GenMarkdownTreeCustom(cmd *cobra.Command, dir string) error { if err != nil { return err } - defer f.Close() + defer func() { + if err := f.Close(); err != nil { + fatal(err) + } + }() if err := GenMarkdownCustom(cmd, f); err != nil { return err diff --git a/commands/api/api.go b/commands/api/api.go index e41a9437f33d33847a4869e605ca24dcefc28e85..d3ce9e984ab8da88e97774629bf2116153b21276 100644 --- a/commands/api/api.go +++ b/commands/api/api.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "io" + "log" "net/http" "net/url" "os" @@ -219,7 +220,12 @@ func apiRun(opts *ApiOptions) error { if err != nil { return err } - defer file.Close() + defer func() { + if err := file.Close(); err != nil { + log.Fatal(err.Error()) + } + }() + requestPath, err = parseQuery(requestPath, params) if err != nil { return err @@ -487,7 +493,13 @@ func readUserFile(fn string, stdin io.ReadCloser) ([]byte, error) { return nil, err } } - defer r.Close() + + defer func() { + if err := r.Close(); err != nil { + log.Fatal(err.Error()) + } + }() + return io.ReadAll(r) } diff --git a/commands/auth/login/login.go b/commands/auth/login/login.go index a79fd577c2fbb0a3022c399325693853a101d1b3..f42039d4adb1f7f27d3590fd0c8b9d083ba57489 100644 --- a/commands/auth/login/login.go +++ b/commands/auth/login/login.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "io" + "log" "os" "regexp" "strings" @@ -72,7 +73,12 @@ func NewCmdLogin(f *cmdutils.Factory) *cobra.Command { } if tokenStdin { - defer opts.IO.In.Close() + defer func() { + if err := opts.IO.In.Close(); err != nil { + log.Fatal(err.Error()) + } + }() + token, err := io.ReadAll(opts.IO.In) if err != nil { return fmt.Errorf("failed to read token from STDIN: %w", err) diff --git a/commands/cmdutils/cmdutils.go b/commands/cmdutils/cmdutils.go index 7d402276ebc7e18eaab266e0bb4a06141e709219..1ef514c01ab30489a6df8b21ceea47fe581d0edf 100644 --- a/commands/cmdutils/cmdutils.go +++ b/commands/cmdutils/cmdutils.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "io" + "log" "os" "path/filepath" "sort" @@ -78,7 +79,12 @@ func ListGitLabTemplates(tmplType string) ([]string, error) { return files, nil } fileNames, err := f.Readdirnames(-1) - defer f.Close() + defer func() { + if err := f.Close(); err != nil { + log.Fatal(err) + } + }() + if err != nil { // return empty slice if error return files, nil diff --git a/commands/release/create/create.go b/commands/release/create/create.go index 594d0b0ced054298bae8cb0666a3d1f2dac3a6d4..f57aedbf58e9a2dab31fb930515755ade229c94e 100644 --- a/commands/release/create/create.go +++ b/commands/release/create/create.go @@ -338,7 +338,6 @@ func createRun(opts *CreateOpts) error { } release, _, err = client.Releases.CreateRelease(repo.FullName(), createOpts) - if err != nil { return releaseFailedErr(err, start) } diff --git a/commands/release/download/download.go b/commands/release/download/download.go index 57854b4ae57a6255fae506c96bfb06fbf796e58d..82c6b4ded88f58c1cf268a314cb9ba307732e6de 100644 --- a/commands/release/download/download.go +++ b/commands/release/download/download.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "io" + "log" "net/http" "net/url" "os" @@ -233,7 +234,11 @@ func downloadAsset(client *api.Client, assetURL, destinationPath string) error { return err } - defer resp.Body.Close() + defer func() { + if err := resp.Body.Close(); err != nil { + log.Fatal(err) + } + }() if resp.StatusCode > 299 { return errors.New(resp.Status) @@ -243,7 +248,12 @@ func downloadAsset(client *api.Client, assetURL, destinationPath string) error { if err != nil { return err } - defer f.Close() + + defer func() { + if err := f.Close(); err != nil { + log.Fatal(err) + } + }() _, err = io.Copy(f, resp.Body) return err diff --git a/commands/release/releaseutils/upload/upload.go b/commands/release/releaseutils/upload/upload.go index 5707bdfaa5e12c3bfaeab3e16e14a0b8bffa75b0..654b558de4196478b5e6ee9ab51b7293d91a9168 100644 --- a/commands/release/releaseutils/upload/upload.go +++ b/commands/release/releaseutils/upload/upload.go @@ -81,7 +81,6 @@ func (c *Context) UploadFiles(projectID, tagName string) error { FilePath: &filename, LinkType: file.Type, }) - if err != nil { return err } diff --git a/commands/ssh-key/add/add.go b/commands/ssh-key/add/add.go index b20c6bfb7909dbab97a9e18c7319af1aecd2a363..c8c64d61efee8f2d2e9f5cd83ba1e1178ee2320e 100644 --- a/commands/ssh-key/add/add.go +++ b/commands/ssh-key/add/add.go @@ -3,6 +3,7 @@ package add import ( "errors" "io" + "log" "os" "github.com/MakeNowJust/heredoc" @@ -83,13 +84,21 @@ func addRun(opts *AddOpts) error { var keyFileReader io.Reader if opts.KeyFile == "-" { keyFileReader = opts.IO.In - defer opts.IO.In.Close() + defer func() { + if err := opts.IO.In.Close(); err != nil { + log.Fatal(err) + } + }() } else { f, err := os.Open(opts.KeyFile) if err != nil { return err } - defer f.Close() + defer func() { + if err := f.Close(); err != nil { + log.Fatal(err) + } + }() keyFileReader = f } diff --git a/commands/variable/variableutils/value.go b/commands/variable/variableutils/value.go index 38032fd50b5bb3dcc2e3d8f33ee524c572980519..ab63cb03ef1af2c4ea759279c1ccb825140088c5 100644 --- a/commands/variable/variableutils/value.go +++ b/commands/variable/variableutils/value.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "io" + "log" "strings" "gitlab.com/gitlab-org/cli/commands/cmdutils" @@ -21,8 +22,12 @@ func GetValue(value string, ios *iostreams.IOStreams, args []string) (string, er return "", &cmdutils.FlagError{Err: errors.New("no value specified but nothing on STDIN")} } - // read value from STDIN if not provided - defer ios.In.Close() + defer func() { + if err := ios.In.Close(); err != nil { + log.Fatal(err) + } + }() + stdinValue, err := io.ReadAll(ios.In) if err != nil { return "", fmt.Errorf("failed to read value from STDIN: %w", err) diff --git a/internal/recovery/recovery.go b/internal/recovery/recovery.go index fcc49e4f7114284491b24adb253a5e138323d757..64a0938bcac2628a9bc6a9495eed6ef8e5c2e447 100644 --- a/internal/recovery/recovery.go +++ b/internal/recovery/recovery.go @@ -3,6 +3,7 @@ package recovery import ( "encoding/json" "fmt" + "log" "os" "path/filepath" @@ -41,7 +42,11 @@ func CreateFile(repoName, filename string, i any) (string, error) { return "", fmt.Errorf("creating recovery file: %w", err) } - defer f.Close() + defer func() { + if err := f.Close(); err != nil { + log.Fatal(err) + } + }() if err := json.NewEncoder(f).Encode(i); err != nil { return "", fmt.Errorf("writing file: %w", err) diff --git a/pkg/git/ssh_config.go b/pkg/git/ssh_config.go index 135f072049e6395d54d5d23fb725d7c1be00b0b5..bc3ed703701f4a9a704a2a292d64d280bb021053 100644 --- a/pkg/git/ssh_config.go +++ b/pkg/git/ssh_config.go @@ -3,6 +3,7 @@ package git import ( "bufio" "io" + "log" "net/url" "os" "path/filepath" @@ -56,7 +57,11 @@ func (p *sshParser) read(fileName string) error { if err != nil { return err } - defer f.Close() + defer func() { + if err := f.Close(); err != nil { + log.Fatal(err) + } + }() file = f } else { var err error diff --git a/pkg/iostreams/iostreams.go b/pkg/iostreams/iostreams.go index f3448d1f510d3adcc4be17797a84297408908517..4ba0e589ef9a9af6bc7f6a5b6156e0353b079425 100644 --- a/pkg/iostreams/iostreams.go +++ b/pkg/iostreams/iostreams.go @@ -5,6 +5,7 @@ import ( "bytes" "fmt" "io" + "log" "os" "os/exec" "regexp" @@ -148,7 +149,11 @@ func (s *IOStreams) StartPager() error { // We should eventually add some error reporting for the go function go func() { - defer pagedOut.Close() + defer func() { + if err := pagedOut.Close(); err != nil { + log.Fatal(err) + } + }() scanner := bufio.NewScanner(pipeReader)