cmd/render.go (54 lines of code) (raw):

// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one // or more contributor license agreements. Licensed under the Elastic License 2.0; // you may not use this file except in compliance with the Elastic License 2.0. package cmd import ( "fmt" "log" "github.com/elastic/elastic-agent-changelog-tool/internal/assets" "github.com/elastic/elastic-agent-changelog-tool/internal/changelog" "github.com/spf13/afero" "github.com/spf13/cobra" "github.com/spf13/viper" ) var RenderLongDescription = fmt.Sprintf(`Use this command to render the consolidated changelog. --version is required. Consolidated changelog version (x.y.z) in 'changelogs' folder --template is optional. Specify full path to your template file or use predefined templates. Default: asciidoc-embedded Predefined templates: %s `, assets.GetEmbeddedTemplates().String()) func RenderCmd(fs afero.Fs) *cobra.Command { renderCmd := &cobra.Command{ Use: "render", Short: "Render a changelog in an asciidoc file", Long: RenderLongDescription, Args: func(cmd *cobra.Command, args []string) error { return nil }, RunE: func(cmd *cobra.Command, args []string) error { dest := viper.GetString("changelog_destination") renderedDest := viper.GetString("rendered_changelog_destination") version, err := cmd.Flags().GetString("version") if err != nil { return fmt.Errorf("error parsing flag 'version': %w", err) } template, err := cmd.Flags().GetString("template") if err != nil { return fmt.Errorf("error parsing flag 'template': %w", err) } c, err := changelog.FromFile(fs, fmt.Sprintf("./%s/%s.yaml", dest, version)) if err != nil { return fmt.Errorf("error loading changelog from file: %w", err) } r := changelog.NewRenderer(fs, c, renderedDest, template) if err := r.Render(); err != nil { return fmt.Errorf("cannot build asciidoc file: %w", err) } return nil }, } renderCmd.Flags().String("template", viper.GetString("template"), "The template used to generate the changelog") renderCmd.Flags().String("version", "", "The version of the consolidated changelog being created") err := renderCmd.MarkFlagRequired("version") if err != nil { // NOTE: the only case this error appear is when the flag is not defined log.Fatal(err) } return renderCmd }