label_sync/main.go
func validate(labels []Label, parent string, seen map[string]string) (map[string]string, error) {
	newSeen := copyStringMap(seen)
	for _, l := range labels {
		name := strings.ToLower(l.Name)
		path := parent + "." + name
		if other, present := newSeen[name]; present {
			return newSeen, fmt.Errorf("duplicate label %s at %s and %s", name, path, other)
		}
		newSeen[name] = path
		if newSeen, err := validate(l.Previously, path, newSeen); err != nil {
			return newSeen, err
		}
		if len(l.Description) > 100 { // github limits the description field to 100 chars
			return newSeen, fmt.Errorf("description for %s is too long", name)
		}
	}
	return newSeen, nil
}
func validate(labels []Label, parent string, seen map[string]string) (map[string]string, error) {
	newSeen := copyStringMap(seen)
	for _, l := range labels {
		name := strings.ToLower(l.Name)
		path := parent + "." + name
		if other, present := newSeen[name]; present {
			return newSeen, fmt.Errorf("duplicate label %s at %s and %s", name, path, other)
		}
		newSeen[name] = path
		if newSeen, err := validate(l.Previously, path, newSeen); err != nil {
			return newSeen, err
		}
		if len(l.Description) > 100 { // github limits the description field to 100 chars
			return newSeen, fmt.Errorf("description for %s is too long", name)
		}
	}
	return newSeen, nil
}
func validate ( labels [ ] Label , parent string , seen map [ string ] string ) ( map [ string ] string , error ) { newSeen := copyStringMap ( seen ) for _ , l := range labels { name := strings . ToLower ( l . Name ) path := parent + " " + name if other , present := newSeen [ name ] ; present { return newSeen , fmt . Errorf ( " " , name , path , other ) } newSeen [ name ] = path if newSeen , err := validate ( l . Previously , path , newSeen ) ; err != nil { return newSeen , err } if len ( l . Description ) > 100 { // github limits the description field to 100 chars return newSeen , fmt . Errorf ( " " , name ) } } return newSeen , nil }
// validate runs checks to ensure the label inputs are valid
// It ensures that no two label names (including previous names) have the same
// lowercase value, and that the description is not over 100 characters.
validate runs checks to ensure the label inputs are valid It ensures that no two label names ( including previous names ) have the same lowercase value and that the description is not over 100 characters .