diff options
| author | Dave Henderson <dhenderson@gmail.com> | 2018-07-12 21:38:10 -0400 |
|---|---|---|
| committer | Dave Henderson <dhenderson@gmail.com> | 2018-07-12 21:41:39 -0400 |
| commit | 9fd905bb044e65f1e28015fff4841f485d02f0fe (patch) | |
| tree | f37684881e5b1b9f43822e21421a598d6025dafc /data/datasource.go | |
| parent | bd84f71f469a541cfb9eae325d9712a065ba5d9c (diff) | |
Require alias for defineDatasource
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'data/datasource.go')
| -rw-r--r-- | data/datasource.go | 48 |
1 files changed, 30 insertions, 18 deletions
diff --git a/data/datasource.go b/data/datasource.go index b0e55439..cf2f87a3 100644 --- a/data/datasource.go +++ b/data/datasource.go @@ -190,25 +190,33 @@ func ParseSource(value string) (*Source, error) { } } else if len(parts) == 2 { alias = parts[0] - if parts[1] == "-" { - parts[1] = "stdin://" - } - srcURL, err = url.Parse(parts[1]) + srcURL, err = parseSourceURL(parts[1]) if err != nil { return nil, err } - - if !srcURL.IsAbs() { - srcURL, err = absURL(parts[1]) - if err != nil { - return nil, err - } - } } return NewSource(alias, srcURL) } +func parseSourceURL(value string) (*url.URL, error) { + if value == "-" { + value = "stdin://" + } + srcURL, err := url.Parse(value) + if err != nil { + return nil, err + } + + if !srcURL.IsAbs() { + srcURL, err = absURL(value) + if err != nil { + return nil, err + } + } + return srcURL, nil +} + func absURL(value string) (*url.URL, error) { cwd, err := os.Getwd() if err != nil { @@ -226,23 +234,27 @@ func absURL(value string) (*url.URL, error) { } // DefineDatasource - -func (d *Data) DefineDatasource(alias, value string) error { +func (d *Data) DefineDatasource(alias, value string) (*Source, error) { + if alias == "" { + return nil, errors.New("datasource alias must be provided") + } if d.DatasourceExists(alias) { - return nil + return d.Sources[alias], nil } - if alias != "" { - alias = alias + "=" + srcURL, err := parseSourceURL(value) + if err != nil { + return nil, err } - s, err := ParseSource(alias + value) + s, err := NewSource(alias, srcURL) if err != nil { - return err + return nil, err } s.Header = d.extraHeaders[s.Alias] if d.Sources == nil { d.Sources = make(map[string]*Source) } d.Sources[s.Alias] = s - return nil + return s, nil } // DatasourceExists - |
