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