label_sync/main.go
func classifyLabels(labels []Label, required, archaic, dead map[string]Label, now time.Time, parent *Label) (map[string]Label, map[string]Label, map[string]Label) {
	newRequired := copyLabelMap(required)
	newArchaic := copyLabelMap(archaic)
	newDead := copyLabelMap(dead)
	for i, l := range labels {
		first := parent
		if first == nil {
			first = &labels[i]
		}
		lower := strings.ToLower(l.Name)
		switch {
		case parent == nil && l.DeleteAfter == nil: // Live label
			newRequired[lower] = l
		case l.DeleteAfter != nil && now.After(*l.DeleteAfter):
			newDead[lower] = l
		case parent != nil:
			l.parent = parent
			newArchaic[lower] = l
		}
		newRequired, newArchaic, newDead = classifyLabels(l.Previously, newRequired, newArchaic, newDead, now, first)
	}
	return newRequired, newArchaic, newDead
}
func classifyLabels(labels []Label, required, archaic, dead map[string]Label, now time.Time, parent *Label) (map[string]Label, map[string]Label, map[string]Label) {
	newRequired := copyLabelMap(required)
	newArchaic := copyLabelMap(archaic)
	newDead := copyLabelMap(dead)
	for i, l := range labels {
		first := parent
		if first == nil {
			first = &labels[i]
		}
		lower := strings.ToLower(l.Name)
		switch {
		case parent == nil && l.DeleteAfter == nil: // Live label
			newRequired[lower] = l
		case l.DeleteAfter != nil && now.After(*l.DeleteAfter):
			newDead[lower] = l
		case parent != nil:
			l.parent = parent
			newArchaic[lower] = l
		}
		newRequired, newArchaic, newDead = classifyLabels(l.Previously, newRequired, newArchaic, newDead, now, first)
	}
	return newRequired, newArchaic, newDead
}
func classifyLabels ( labels [ ] Label , required , archaic , dead map [ string ] Label , now time . Time , parent * Label ) ( map [ string ] Label , map [ string ] Label , map [ string ] Label ) { newRequired := copyLabelMap ( required ) newArchaic := copyLabelMap ( archaic ) newDead := copyLabelMap ( dead ) for i , l := range labels { first := parent if first == nil { first = & labels [ i ] } lower := strings . ToLower ( l . Name ) switch { case parent == nil && l . DeleteAfter == nil : // Live label newRequired [ lower ] = l case l . DeleteAfter != nil && now . After ( * l . DeleteAfter ) : newDead [ lower ] = l case parent != nil : l . parent = parent newArchaic [ lower ] = l } newRequired , newArchaic , newDead = classifyLabels ( l . Previously , newRequired , newArchaic , newDead , now , first ) } return newRequired , newArchaic , newDead }
// classifyLabels will put labels into the required, archaic, dead maps as appropriate.
classifyLabels will put labels into the required archaic dead maps as appropriate .