mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-30 10:47:14 -06:00
59939cf320
Unlike the old installer in config/module, this uses new-style installation directories that include the static module path so that paths we show in diagnostics will be more meaningful to the user. As before, we retrieve the entire "package" associated with the given source string, rather than any given subdirectory directly, because the retrieved module may contain ../ references into parent directories which must be resolvable after extraction.
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)
|
|
}
|