in cmd/changelog_lint.go [17:66]
func ChangelogLintCmd(fs afero.Fs) *cobra.Command {
lintCmd := &cobra.Command{
Use: "changelog_lint",
Short: "Lint the consolidated changelog",
Args: func(cmd *cobra.Command, args []string) error {
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
dest := viper.GetString("changelog_destination")
version, err := cmd.Flags().GetString("version")
if err != nil {
return fmt.Errorf("error parsing flag 'version': %w", err)
}
relaxed, err := cmd.Flags().GetBool("relaxed")
if err != nil {
return fmt.Errorf("error parsing flag 'relaxed': %w", err)
}
linter := changelog.NewLinter(fs)
errs := linter.Lint(dest, version)
for _, err := range errs {
log.Println(err)
}
if !relaxed && len(errs) > 0 {
log.Fatal("Linting failed.")
}
log.Println("Linting done.")
return nil
},
}
lintCmd.Flags().VisitAll(viperOverrides(lintCmd))
lintCmd.Flags().String("version", "", "The version of the consolidated changelog subject to linting")
lintCmd.Flags().Bool("relaxed", false, "Relaxed mode will only log erros, without terminating execution")
err := lintCmd.MarkFlagRequired("version")
if err != nil {
// NOTE: the only case this error appear is when the flag is not defined
log.Fatal(err)
}
return lintCmd
}