28 lines
471 B
Go
28 lines
471 B
Go
package util
|
|
|
|
import (
|
|
"net/url"
|
|
"os"
|
|
"path/filepath"
|
|
"regexp"
|
|
)
|
|
|
|
var schemeRe = regexp.MustCompile("^[a-zA-Z][a-zA-Z0-9+.-]*://")
|
|
|
|
func ResolvePath(s string) (*url.URL, error) {
|
|
if schemeRe.MatchString(s) {
|
|
return url.Parse(s)
|
|
}
|
|
_, err := os.Stat(s)
|
|
if err == nil {
|
|
absPath, err := filepath.Abs(s)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
u := &url.URL{Scheme: "file"}
|
|
u.Path = filepath.ToSlash(absPath)
|
|
return u, nil
|
|
}
|
|
return url.Parse("https://" + s)
|
|
}
|