diff --git a/pkg/cli/release.go b/pkg/cli/release.go index a51dc81..4de46d8 100644 --- a/pkg/cli/release.go +++ b/pkg/cli/release.go @@ -191,6 +191,10 @@ func releasePublishAction( return fmt.Errorf("invalid --type \"%s\"", rlsType) } + if c.Args().Len() > 0 { + rlsOpts.AssetFiles = c.Args().Slice() + } + if rOpts.Plan != nil { rlsOpts.Source = rOpts.Plan.Source @@ -205,7 +209,8 @@ func releasePublishAction( } } - if rOpts.Plan.Output != nil { + // Set asset files based on plan if no file arguments were given. + if len(rlsOpts.AssetFiles) == 0 && rOpts.Plan.Output != nil { rlsOpts.AssetFiles = []string{ filepath.Join( rOpts.Plan.Output.Directory, diff --git a/pkg/release/publish.go b/pkg/release/publish.go index ea61c2b..81ae6fd 100644 --- a/pkg/release/publish.go +++ b/pkg/release/publish.go @@ -237,7 +237,7 @@ func uploadReleaseAssets( } func publishFileList(files []string) ([]string, error) { - var output []string + results := map[string]struct{}{} for _, file := range files { var err error file, err = filepath.Abs(file) @@ -253,7 +253,7 @@ func publishFileList(files []string) ([]string, error) { return nil, fmt.Errorf("\"%s\" is not a file", file) } - output = append(output, file) + results[file] = struct{}{} sumFile := file + ".sha256" _, err = os.Stat(sumFile) @@ -264,7 +264,12 @@ func publishFileList(files []string) ([]string, error) { return nil, err } - output = append(output, sumFile) + results[sumFile] = struct{}{} + } + + var output []string + for f := range results { + output = append(output, f) } return output, nil