func BuildCmd()

in cmd/build.go [17:68]


func BuildCmd(fs afero.Fs) *cobra.Command {

	buildCmd := &cobra.Command{
		Use:   "build",
		Short: "Create changelog from fragments",
		Args: func(cmd *cobra.Command, args []string) error {
			return nil
		},
		RunE: func(cmd *cobra.Command, args []string) error {
			repo, err := cmd.Flags().GetString("repo")
			if err != nil {
				return fmt.Errorf("repo flag malformed: %w", err)
			}

			owner, err := cmd.Flags().GetString("owner")
			if err != nil {
				return fmt.Errorf("owner flag malformed: %w", err)
			}

			src := viper.GetString("fragment_location")
			dest := viper.GetString("changelog_destination")

			version, err := cmd.Flags().GetString("version")
			if err != nil {
				return fmt.Errorf("error parsing flag 'version': %w", err)
			}

			filename := fmt.Sprintf("%s.yaml", version)
			b := changelog.NewBuilder(fs, filename, version, src, dest)

			if err := b.Build(owner, repo); err != nil {
				return fmt.Errorf("cannot build changelog: %w", err)
			}

			return nil
		},
	}

	buildCmd.Flags().String("repo", defaultRepo, "target repository")
	buildCmd.Flags().String("owner", defaultOwner, "target repository owner")

	buildCmd.Flags().VisitAll(viperOverrides(buildCmd))

	buildCmd.Flags().String("version", "", "The version of the consolidated changelog being created")
	err := buildCmd.MarkFlagRequired("version")
	if err != nil {
		// NOTE: the only case this error appear is when the flag is not defined
		log.Fatal(err)
	}

	return buildCmd
}