genman.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package cmd
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/rs/zerolog"
  6. "github.com/spf13/cobra"
  7. "github.com/spf13/cobra/doc"
  8. "github.com/drakkan/sftpgo/logger"
  9. "github.com/drakkan/sftpgo/version"
  10. )
  11. var (
  12. manDir string
  13. genManCmd = &cobra.Command{
  14. Use: "man",
  15. Short: "Generate man pages for SFTPGo CLI",
  16. Long: `This command automatically generates up-to-date man pages of SFTPGo's
  17. command-line interface. By default, it creates the man page files
  18. in the "man" directory under the current directory.
  19. `,
  20. Run: func(cmd *cobra.Command, args []string) {
  21. logger.DisableLogger()
  22. logger.EnableConsoleLogger(zerolog.DebugLevel)
  23. if _, err := os.Stat(manDir); os.IsNotExist(err) {
  24. err = os.MkdirAll(manDir, os.ModePerm)
  25. if err != nil {
  26. logger.WarnToConsole("Unable to generate man page files: %v", err)
  27. os.Exit(1)
  28. }
  29. }
  30. header := &doc.GenManHeader{
  31. Section: "1",
  32. Manual: "SFTPGo Manual",
  33. Source: fmt.Sprintf("SFTPGo %v", version.Get().Version),
  34. }
  35. cmd.Root().DisableAutoGenTag = true
  36. err := doc.GenManTree(cmd.Root(), header, manDir)
  37. if err != nil {
  38. logger.WarnToConsole("Unable to generate man page files: %v", err)
  39. os.Exit(1)
  40. }
  41. },
  42. }
  43. )
  44. func init() {
  45. genManCmd.Flags().StringVarP(&manDir, "dir", "d", "man", "The directory to write the man pages")
  46. genCmd.AddCommand(genManCmd)
  47. }