diff options
| author | Dave Henderson <dhenderson@gmail.com> | 2020-04-22 21:30:51 -0400 |
|---|---|---|
| committer | Dave Henderson <dhenderson@gmail.com> | 2020-04-22 21:44:09 -0400 |
| commit | 55bea115b1b3891bf9f490dfebec79aaa29ccfa4 (patch) | |
| tree | 584bfe490832ba34c6ca758ceb493ef56315e374 /data/datasource.go | |
| parent | 46ceeee0b95fd12455020fe85bdd03cb5ccdf87c (diff) | |
Fix bug in file URL parsing
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'data/datasource.go')
| -rw-r--r-- | data/datasource.go | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/data/datasource.go b/data/datasource.go index 2073ef54..1fcccf98 100644 --- a/data/datasource.go +++ b/data/datasource.go @@ -230,7 +230,7 @@ func parseSource(value string) (source *Source, err error) { err = errors.Errorf("Invalid datasource (%s). Must provide an alias with files not in working directory", value) return nil, err } - source.URL, err = absURL(f) + source.URL, err = absFileURL(f) if err != nil { return nil, err } @@ -272,7 +272,7 @@ func parseSourceURL(value string) (*url.URL, error) { } if !srcURL.IsAbs() { - srcURL, err = absURL(value) + srcURL, err = absFileURL(value) if err != nil { return nil, err } @@ -280,7 +280,7 @@ func parseSourceURL(value string) (*url.URL, error) { return srcURL, nil } -func absURL(value string) (*url.URL, error) { +func absFileURL(value string) (*url.URL, error) { cwd, err := os.Getwd() if err != nil { return nil, errors.Wrapf(err, "can't get working directory") @@ -290,8 +290,9 @@ func absURL(value string) (*url.URL, error) { Scheme: "file", Path: urlCwd + "/", } - relURL := &url.URL{ - Path: value, + relURL, err := url.Parse(value) + if err != nil { + return nil, fmt.Errorf("can't parse value %s as URL: %w", value, err) } resolved := baseURL.ResolveReference(relURL) // deal with Windows drive letters |
