func checkPathGlob()

in pkg/gcptarget/gcptarget.go [282:311]


func checkPathGlob(expression string) error {
	// check for path components / numbers
	parts := strings.Split(expression, "/")
	state := stateStart
	for i := 0; i < len(parts); i++ {
		item := parts[i]
		switch {
		case item == organization:
			if state != stateStart {
				return fmt.Errorf("unexpected %s element %d in %s", item, i, expression)
			}
			state = stateFolder
		case item == folder:
			if state != stateStart && state != stateFolder {
				return fmt.Errorf("unexpected %s element %d in %s", item, i, expression)
			}
			state = stateFolder
		case item == project:
			state = stateProject
		case item == "*":
		case item == "**":
		case item == "unknown":
		case numberRegex.MatchString(item):
		case state == stateProject && projectIDRegex.MatchString(item):
		default:
			return fmt.Errorf("unexpected item %s element %d in %s", item, i, expression)
		}
	}
	return nil
}