Fix #3032: Remove query parameters in ADD command when the destinatio… (#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
This commit is contained in:
Prima Adi Pradana 2024-03-22 09:32:40 +07:00 committed by GitHub
parent 9095b45d5c
commit 02f488a694
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 2 deletions

View File

@ -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) {
@ -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
}

View File

@ -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",