chore: simplify error handling in template push (#6065)

This commit is contained in:
Ammar Bandukwala
2023-02-06 20:35:48 +00:00
committed by GitHub
parent 46fe59f5e7
commit 3724d81413
+4 -14
View File
@@ -35,14 +35,10 @@ func (pf *templateUploadFlags) stdin() bool {
func (pf *templateUploadFlags) upload(cmd *cobra.Command, client *codersdk.Client) (*codersdk.UploadResponse, error) {
var (
content io.Reader
pipeErrCh = make(chan error, 1)
content io.Reader
)
if pf.stdin() {
content = cmd.InOrStdin()
// No piping if reading from stdin.
pipeErrCh <- nil
close(pipeErrCh)
} else {
prettyDir := prettyDirectoryPath(pf.directory)
_, err := cliui.Prompt(cmd, cliui.PromptOptions{
@@ -56,11 +52,8 @@ func (pf *templateUploadFlags) upload(cmd *cobra.Command, client *codersdk.Clien
pipeReader, pipeWriter := io.Pipe()
go func() {
defer pipeWriter.Close()
defer close(pipeErrCh)
bufWr := bufio.NewWriter(pipeWriter)
defer bufWr.Flush()
pipeErrCh <- provisionersdk.Tar(bufWr, pf.directory, provisionersdk.TemplateArchiveLimit)
err := provisionersdk.Tar(pipeWriter, pf.directory, provisionersdk.TemplateArchiveLimit)
_ = pipeWriter.CloseWithError(err)
}()
defer pipeReader.Close()
content = pipeReader
@@ -72,13 +65,10 @@ func (pf *templateUploadFlags) upload(cmd *cobra.Command, client *codersdk.Clien
spin.Start()
defer spin.Stop()
resp, err := client.Upload(cmd.Context(), codersdk.ContentTypeTar, content)
resp, err := client.Upload(cmd.Context(), codersdk.ContentTypeTar, bufio.NewReader(content))
if err != nil {
return nil, xerrors.Errorf("upload: %w", err)
}
if err = <-pipeErrCh; err != nil {
return nil, xerrors.Errorf("pipe: %w", err)
}
return &resp, nil
}