func main()

in scripts/changelog/changelog.go [31:86]


func main() {
	templateFile, err := os.Open(CHANGE_TEMPLATE)
	handleErr(err, "unable to open CHANGE_TEMPLATE")
	defer templateFile.Close()

	// parse CHANGE_TEMPLATE
	scanner := bufio.NewScanner(templateFile)
	changeArray := []Change{}
	changeStrings := []string{}
	for scanner.Scan() {
		thisText := scanner.Text()
		if thisText == "" {
			currentChanges := []string{}
			// parse the remaining array of changes
			for i := 3; i < len(changeStrings); i++ {
				currentChanges = append(currentChanges, changeStrings[i])
			}
			thisTime, err := time.Parse(time.RFC3339, changeStrings[2])
			handleErr(err, "error parsing time")
			thisChange := Change{
				Version:  changeStrings[0],
				Name:     changeStrings[1],
				Datetime: thisTime,
				Changes:  currentChanges,
			}
			changeArray = append(changeArray, thisChange)
			changeStrings = []string{}
		} else {
			changeStrings = append(changeStrings, thisText)
		}
	}

	if !validateChangelog(changeArray) {
		fmt.Println("Master Changelog is invalid.")
		return
	}

	// Create formatted strings for each log
	rpmChangeString := getRPMChangeString(changeArray)
	ubuntuChangeString := getUbuntuChangeString(changeArray)
	suseChangeString := getSuseChangeString(changeArray)
	topLevelChangeString := getTopLevelChangeString(changeArray)

	// update changelog files
	rewriteChangelog(TOP_LEVEL, topLevelChangeString)
	rewriteChangelog(UBUNTU, ubuntuChangeString)
	rewriteChangelog(SUSE, suseChangeString)

	rpmSpecs := []string{AMAZON_LINUX_RPM, GENERIC_RPM}
	for _, spec := range rpmSpecs {
		// Get everything before the %changelog section, so that the change logs
		// in rpmChangeString are appended after it.
		base := getRPMSpecBaseContent(spec)
		rewriteChangelog(spec, base+rpmChangeString)
	}
}