summaryrefslogtreecommitdiff
path: root/data/datasource.go
diff options
context:
space:
mode:
authorDave Henderson <dhenderson@gmail.com>2020-04-22 21:30:51 -0400
committerDave Henderson <dhenderson@gmail.com>2020-04-22 21:44:09 -0400
commit55bea115b1b3891bf9f490dfebec79aaa29ccfa4 (patch)
tree584bfe490832ba34c6ca758ceb493ef56315e374 /data/datasource.go
parent46ceeee0b95fd12455020fe85bdd03cb5ccdf87c (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.go11
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