qrcp.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package cmd
  2. import (
  3. "github.com/spf13/cobra"
  4. )
  5. func init() {
  6. rootCmd.AddCommand(sendCmd)
  7. rootCmd.AddCommand(receiveCmd)
  8. rootCmd.AddCommand(configCmd)
  9. rootCmd.AddCommand(versionCmd)
  10. rootCmd.AddCommand(completionCmd)
  11. // Global command flags
  12. rootCmd.PersistentFlags().BoolVarP(&quietFlag, "quiet", "q", false, "only print errors")
  13. rootCmd.PersistentFlags().BoolVarP(&keepaliveFlag, "keep-alive", "k", false, "keep server alive after transferring")
  14. rootCmd.PersistentFlags().BoolVarP(&listallinterfacesFlag, "list-all-interfaces", "l", false, "list all available interfaces when choosing the one to use")
  15. rootCmd.PersistentFlags().IntVarP(&portFlag, "port", "p", 0, "port to use for the server")
  16. rootCmd.PersistentFlags().StringVar(&pathFlag, "path", "", "path to use. Defaults to a random string")
  17. rootCmd.PersistentFlags().StringVarP(&interfaceFlag, "interface", "i", "", "network interface to use for the server")
  18. rootCmd.PersistentFlags().StringVarP(&fqdnFlag, "fqdn", "d", "", "fully-qualified domain name to use for the resulting URLs")
  19. rootCmd.PersistentFlags().BoolVarP(&zipFlag, "zip", "z", false, "zip content before transferring")
  20. rootCmd.PersistentFlags().StringVarP(&configFlag, "config", "c", "", "path to the config file, defaults to $XDG_CONFIG_HOME/qrcp/config.json")
  21. rootCmd.PersistentFlags().BoolVarP(&browserFlag, "browser", "b", false, "display the QR code in a browser window")
  22. rootCmd.PersistentFlags().BoolVarP(&secureFlag, "secure", "s", false, "use https connection")
  23. rootCmd.PersistentFlags().StringVar(&tlscertFlag, "tls-cert", "", "path to TLS certificate to use with HTTPS")
  24. rootCmd.PersistentFlags().StringVar(&tlskeyFlag, "tls-key", "", "path to TLS private key to use with HTTPS")
  25. // Receive command flags
  26. receiveCmd.PersistentFlags().StringVarP(&outputFlag, "output", "o", "", "output directory for receiving files")
  27. }
  28. // Flags
  29. var zipFlag bool
  30. var portFlag int
  31. var interfaceFlag string
  32. var outputFlag string
  33. var keepaliveFlag bool
  34. var quietFlag bool
  35. var fqdnFlag string
  36. var pathFlag string
  37. var listallinterfacesFlag bool
  38. var configFlag string
  39. var browserFlag bool
  40. var secureFlag bool
  41. var tlscertFlag string
  42. var tlskeyFlag string
  43. // The root command (`qrcp`) is like a shortcut of the `send` command
  44. var rootCmd = &cobra.Command{
  45. Use: "qrcp",
  46. Args: cobra.MinimumNArgs(1),
  47. RunE: sendCmdFunc,
  48. SilenceErrors: true,
  49. SilenceUsage: true,
  50. }
  51. // Execute the root command
  52. func Execute() error {
  53. if err := rootCmd.Execute(); err != nil {
  54. rootCmd.PrintErrf("Error: %v\nRun `qrcp help` for help.\n", err)
  55. return err
  56. }
  57. return nil
  58. }