md

package
v0.0.0-...-f042570 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 24, 2018 License: BSD-2-Clause Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Cmd = &command.Command{
	Name: _CmdName,

	Cobra: &cobra.Command{
		Use:   _CmdName,
		Short: "Generates and install " + buildtime.PROGNAME + " markdown pages",
		Long: `Generate Markdown documentation for the ` + buildtime.PROGNAME + ` (one
Markdown file per command`,

		PreRunE: func(cmd *cobra.Command, args []string) error {
			return nil
		},

		RunE: func(cmd *cobra.Command, args []string) error {
			mdDir := viper.GetString(config.KeyDocMarkdownDir)

			if _, err := os.Stat(mdDir); os.IsNotExist(err) {
				if err := os.MkdirAll(mdDir, 0777); err != nil {
					return errors.Wrapf(err, "unable to make mddir %q", mdDir)
				}
			}

			log.Info().Str(config.KeyDocMarkdownDir, mdDir).Msg("Installing markdown documentation")

			now, err := time.Parse(time.RFC3339, buildtime.DocsDate)
			if err != nil {
				log.Warn().Err(err).Msg("unable to parse docsdate")
				now = time.Now()
			}
			docDate := now.UTC().Format(time.RFC3339)
			prefix := viper.GetString(config.KeyDocMarkdownURLPrefix)
			prepender := func(filename string) string {
				name := filepath.Base(filename)
				base := strings.TrimSuffix(name, path.Ext(name))
				url := prefix + path.Join("/", strings.ToLower(base), "/")
				return fmt.Sprintf(template, docDate, strings.Replace(base, "_", " ", -1), base, url)
			}

			linkHandler := func(name string) string {
				base := strings.TrimSuffix(name, path.Ext(name))
				return prefix + path.Join("/", strings.ToLower(base), "/")
			}

			doc.GenMarkdownTreeCustom(cmd.Root(), mdDir, prepender, linkHandler)

			log.Info().Msg("Installation completed successfully.")

			return nil
		},
	},

	Setup: func(self *command.Command) error {
		{
			const (
				key          = config.KeyDocMarkdownDir
				longName     = "dir"
				shortName    = "d"
				description  = "Specify the directory for generated Markdown files"
				defaultValue = config.DefaultMarkdownDir
			)

			flags := self.Cobra.Flags()
			flags.StringP(longName, shortName, defaultValue, description)
			viper.BindPFlag(key, flags.Lookup(longName))
			viper.SetDefault(key, defaultValue)
		}

		{
			const (
				key          = config.KeyDocMarkdownURLPrefix
				longName     = "url-prefix"
				shortName    = "p"
				description  = "Specify the prefix for links generated by Markdown"
				defaultValue = config.DefaultMarkdownURLPrefix
			)

			flags := self.Cobra.Flags()
			flags.String(longName, defaultValue, description)
			viper.BindPFlag(key, flags.Lookup(longName))
			viper.SetDefault(key, defaultValue)
		}

		return nil
	},
}

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL