From 161ad92b20631ee8e367b59d0018ccfbf4dc3c9d Mon Sep 17 00:00:00 2001 From: Azeem Sajid Date: Sun, 9 Feb 2025 21:58:15 +0500 Subject: [PATCH] [gh release create/upload] Expand glob patterns on Windows --- pkg/cmd/release/shared/upload.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/pkg/cmd/release/shared/upload.go b/pkg/cmd/release/shared/upload.go index 38add7425..10da2e556 100644 --- a/pkg/cmd/release/shared/upload.go +++ b/pkg/cmd/release/shared/upload.go @@ -4,12 +4,15 @@ import ( "context" "encoding/json" "errors" + "fmt" "io" "mime" "net/http" "net/url" "os" "path" + "path/filepath" + "runtime" "strings" "time" @@ -36,6 +39,12 @@ type AssetForUpload struct { } func AssetsFromArgs(args []string) (assets []*AssetForUpload, err error) { + if runtime.GOOS == "windows" { + args, err = globAssetPatterns(args) + if err != nil { + return nil, err + } + } for _, arg := range args { var label string fn := arg @@ -63,6 +72,22 @@ func AssetsFromArgs(args []string) (assets []*AssetForUpload, err error) { return } +func globAssetPatterns(patterns []string) ([]string, error) { + var assets []string + for _, pattern := range patterns { + matches, err := filepath.Glob(pattern) + if err != nil { + return nil, fmt.Errorf("%s: %s", pattern, err) + } + if len(matches) > 0 { + assets = append(assets, matches...) + } else { + assets = append(assets, pattern) + } + } + return assets, nil +} + func typeForFilename(fn string) string { ext := fileExt(fn) switch ext {