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)
}
}