46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package configload
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/hashicorp/go-getter"
|
|
|
|
"github.com/hashicorp/terraform/registry/regsrc"
|
|
)
|
|
|
|
var localSourcePrefixes = []string{
|
|
"./",
|
|
"../",
|
|
".\\",
|
|
"..\\",
|
|
}
|
|
|
|
func isLocalSourceAddr(addr string) bool {
|
|
for _, prefix := range localSourcePrefixes {
|
|
if strings.HasPrefix(addr, prefix) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func isRegistrySourceAddr(addr string) bool {
|
|
_, err := regsrc.ParseModuleSource(addr)
|
|
return err == nil
|
|
}
|
|
|
|
// splitAddrSubdir splits the given address (which is assumed to be a
|
|
// registry address or go-getter-style address) into a package portion
|
|
// and a sub-directory portion.
|
|
//
|
|
// The package portion defines what should be downloaded and then the
|
|
// sub-directory portion, if present, specifies a sub-directory within
|
|
// the downloaded object (an archive, VCS repository, etc) that contains
|
|
// the module's configuration files.
|
|
//
|
|
// The subDir portion will be returned as empty if no subdir separator
|
|
// ("//") is present in the address.
|
|
func splitAddrSubdir(addr string) (packageAddr, subDir string) {
|
|
return getter.SourceDirSubdir(addr)
|
|
}
|