Commit fe6e1cad authored by Juhani Ränkimies's avatar Juhani Ränkimies
Browse files

feat: add entry to changelog

parent aeebf187
Loading
Loading
Loading
Loading
+35 −6
Original line number Diff line number Diff line
@@ -58,14 +58,43 @@ func changelog(c *cli.Context) error {
			fmt.Printf("Dry-run: not writing content to %s:\n------\n%s", filename, data)
		} else {
			err = ioutil.WriteFile(filename, []byte(data), 0644)
			fmt.Println("wrote changelog")
			if err != nil {
				return errors.Wrap(err, "changelog, write file")
			}
			fmt.Printf("wrote %s\n", filename)
		}
	} else {
		// info, err := repo.Inspect(".")
		// if err != nil {
		// 	return errors.Wrap(err, "changelog, inspect commits")
		// }

		info, err := repo.Inspect(".")
		if err != nil {
			return errors.Wrap(err, "changelog, inspect commits")
		}
		if info.BumpLevel == repo.None {
			return fmt.Errorf("no changes to log")
		}
		bytes, err := ioutil.ReadFile(filename)
		if err != nil {
			return errors.Wrap(err, "changelog, read file")
		}
		content := strings.Split(string(bytes), "\n\n<!--- next entry here -->\n\n")
		if len(content) != 2 {
			return fmt.Errorf("Next entry -marker not found in %s", filename)
		}
		parts := []string{
			content[0],
			"<!--- next entry here -->",
			info.ChangeLogEntry(),
			content[1],
		}
		data := strings.Join(parts, "\n\n")
		if dryRun {
			fmt.Printf("Dry-run: not adding entry to %s:\n------\n%s", filename, data)
		} else {
			err = ioutil.WriteFile(filename, []byte(data), 0644)
			if err != nil {
				return errors.Wrap(err, "changelog, write file")
			}
			fmt.Printf("updated %s\n", filename)
		}
	}
	return nil
}