Example #1
0
// Generate will lookup the commits for the given tag and create a CHANGELOG.md file in the current path.
func Generate(rp *repository.Repository, tag string, appName string, outputFile string) {
	var err error
	var tg repository.Tag

	if tag != "" {
		tg, err = rp.GetTag(tag)
	} else {
		tg, err = rp.GetLastTag()
	}

	if err != nil {
		log.Fatal(err)
	}

	cmts, err := rp.GetCommitListForTag(tg)
	if err != nil {
		log.Fatal(err)
	}

	ms, err := message.GetMessageGroup(cmts)
	if err != nil {
		log.Fatal(err)
	}

	url, err := rp.GetOriginURL()
	if err != nil {
		log.Fatal(err)
	}

	output, err := getFilledTemplate(pongo2.Context{
		"appName":       appName,
		"version":       tg.Name,
		"message_group": ms,
		"url":           url,
	}, templateFile)
	if err != nil {
		log.Fatal(err)
	}

	fileInfo, err := os.Stat(outputFile)
	if err != nil {
		log.Fatal(err)
	}

	if fileInfo.IsDir() {
		if outputFile[len(outputFile)-1:] != "/" {
			outputFile += string(os.PathSeparator)
		}
		outputFile += changelogFile
	}

	err = ioutil.WriteFile(outputFile, output, 0644)
	if err != nil {
		log.Fatal(err)
	}

	log.Infof("%s has been successfully created!", outputFile)
}