in tpgtools/id.go [80:125]
func defaultImportFormats(id string, onlyLongFormFormat bool) (formats []string) {
if onlyLongFormFormat {
return []string{id}
}
uniqueFormats := stringset.New()
uniqueFormats.Add(id)
parts := idParts(id)
for i, v := range parts {
parts[i] = fmt.Sprintf("{{%s}}", v)
}
// short form "{{project}}/{{region}}/{{name}}"
uniqueFormats[strings.Join(parts, "/")] = struct{}{}
// short form sans project
var locationalParts []string
for _, v := range parts {
if v != "{{project}}" {
locationalParts = append(locationalParts, v)
}
}
if len(locationalParts) != 0 {
uniqueFormats.Add(strings.Join(locationalParts, "/"))
}
// short form sans project, region, zone
var resourceParts []string
for _, v := range locationalParts {
if v != "{{zone}}" && v != "{{region}}" {
resourceParts = append(resourceParts, v)
}
}
if len(resourceParts) != 0 {
uniqueFormats.Add(strings.Join(resourceParts, "/"))
}
for _, f := range uniqueFormats.Elements() {
formats = append(formats, f)
}
// formats must be ordered most to least specific
sort.SliceStable(formats, formatComparator(formats))
return formats
}