func defaultImportFormats()

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
}