Skip to content

Commit

Permalink
Fix #3032: Remove query parameters in ADD command when the destinatio… (
Browse files Browse the repository at this point in the history
#3053)

* Fix #3032: Remove query parameters in ADD command when the destination is a directory

* fixing linter URL sorry forget to lint

* add error in extractFilename and realize that ResolveEnvironmentReplacement better execute before getting the filename
  • Loading branch information
prima101112 authored Mar 22, 2024
1 parent 9095b45 commit 02f488a
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 2 deletions.
20 changes: 18 additions & 2 deletions pkg/util/command_util.go
Original file line number Diff line number Diff line change
Expand Up @@ -216,11 +216,17 @@ func URLDestinationFilepath(rawurl, dest, cwd string, envs []string) (string, er
}
return dest, nil
}
urlBase := filepath.Base(rawurl)
urlBase, err := ResolveEnvironmentReplacement(urlBase, envs, true)

urlBase, err := ResolveEnvironmentReplacement(rawurl, envs, true)
if err != nil {
return "", err
}

urlBase, err = extractFilename(urlBase)
if err != nil {
return "", err
}

destPath := filepath.Join(dest, urlBase)

if !filepath.IsAbs(dest) {
Expand Down Expand Up @@ -470,3 +476,13 @@ func getUID(userStr string) (uint32, error) {
}
return uint32(uid), nil
}

// ExtractFilename extracts the filename from a URL without its query url
func extractFilename(rawURL string) (string, error) {
parsedURL, err := url.Parse(rawURL)
if err != nil {
return "", err
}
filename := filepath.Base(parsedURL.Path)
return filename, nil
}
6 changes: 6 additions & 0 deletions pkg/util/command_util_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,12 @@ var urlDestFilepathTests = []struct {
dest: "/test",
expectedDest: "/test",
},
{
url: "https://something/something.tar?foo=bar",
cwd: "/cwd",
dest: "/dir/",
expectedDest: "/dir/something.tar",
},
{
url: "https://something/something",
cwd: "/test",
Expand Down

0 comments on commit 02f488a

Please sign in to comment.