Bez popisu

flags.go 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package driver
  2. import (
  3. "flag"
  4. "strings"
  5. )
  6. // GoFlags implements the plugin.FlagSet interface.
  7. type GoFlags struct {
  8. UsageMsgs []string
  9. }
  10. // Bool implements the plugin.FlagSet interface.
  11. func (*GoFlags) Bool(o string, d bool, c string) *bool {
  12. return flag.Bool(o, d, c)
  13. }
  14. // Int implements the plugin.FlagSet interface.
  15. func (*GoFlags) Int(o string, d int, c string) *int {
  16. return flag.Int(o, d, c)
  17. }
  18. // Float64 implements the plugin.FlagSet interface.
  19. func (*GoFlags) Float64(o string, d float64, c string) *float64 {
  20. return flag.Float64(o, d, c)
  21. }
  22. // String implements the plugin.FlagSet interface.
  23. func (*GoFlags) String(o, d, c string) *string {
  24. return flag.String(o, d, c)
  25. }
  26. // BoolVar implements the plugin.FlagSet interface.
  27. func (*GoFlags) BoolVar(b *bool, o string, d bool, c string) {
  28. flag.BoolVar(b, o, d, c)
  29. }
  30. // IntVar implements the plugin.FlagSet interface.
  31. func (*GoFlags) IntVar(i *int, o string, d int, c string) {
  32. flag.IntVar(i, o, d, c)
  33. }
  34. // Float64Var implements the plugin.FlagSet interface.
  35. // the value of the flag.
  36. func (*GoFlags) Float64Var(f *float64, o string, d float64, c string) {
  37. flag.Float64Var(f, o, d, c)
  38. }
  39. // StringVar implements the plugin.FlagSet interface.
  40. func (*GoFlags) StringVar(s *string, o, d, c string) {
  41. flag.StringVar(s, o, d, c)
  42. }
  43. // StringList implements the plugin.FlagSet interface.
  44. func (*GoFlags) StringList(o, d, c string) *[]*string {
  45. return &[]*string{flag.String(o, d, c)}
  46. }
  47. // ExtraUsage implements the plugin.FlagSet interface.
  48. func (f *GoFlags) ExtraUsage() string {
  49. return strings.Join(f.UsageMsgs, "\n")
  50. }
  51. // AddExtraUsage implements the plugin.FlagSet interface.
  52. func (f *GoFlags) AddExtraUsage(eu string) {
  53. f.UsageMsgs = append(f.UsageMsgs, eu)
  54. }
  55. // Parse implements the plugin.FlagSet interface.
  56. func (*GoFlags) Parse(usage func()) []string {
  57. flag.Usage = usage
  58. flag.Parse()
  59. args := flag.Args()
  60. if len(args) == 0 {
  61. usage()
  62. }
  63. return args
  64. }