args.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. // Author: NiuJiuRu
  2. // Email: niujiuru@qq.com
  3. package baseapp
  4. import (
  5. "os"
  6. "strconv"
  7. "strings"
  8. )
  9. // 解析命令行参数os.Args参数到map, 以'-'开头的视为key, 后面跟着的为value
  10. var os_args_param map[string]string = make(map[string]string)
  11. func init() {
  12. procArgsParam(os.Args)
  13. }
  14. func GetArgsParamStr(p string, def string) string {
  15. s, ok := os_args_param[p]
  16. if ok {
  17. return s
  18. } else {
  19. return def
  20. }
  21. }
  22. func GetArgsParamBool(p string, def bool) bool {
  23. s, ok := os_args_param[p]
  24. if ok {
  25. return strings.EqualFold(s, "y") || strings.EqualFold(s, "yes") || strings.EqualFold(s, "true")
  26. } else {
  27. return def
  28. }
  29. }
  30. func GetArgsParamInt64(p string, def int64) int64 {
  31. s, ok := os_args_param[p]
  32. if ok {
  33. i, e := strconv.ParseInt(s, 10, 64)
  34. if e != nil {
  35. return def
  36. }
  37. return i
  38. } else {
  39. return def
  40. }
  41. }
  42. func GetArgsParamInt(p string, def int) int {
  43. s, ok := os_args_param[p]
  44. if ok {
  45. i, e := strconv.Atoi(s)
  46. if e != nil {
  47. return def
  48. }
  49. return i
  50. } else {
  51. return def
  52. }
  53. }
  54. func procArgsParam(p []string) {
  55. if len(p) < 1 {
  56. return
  57. }
  58. var k, v string
  59. for i := 1; i < len(p); i++ {
  60. if len(p[i]) < 1 {
  61. continue
  62. }
  63. if p[i][0] == '-' {
  64. if k != "" {
  65. os_args_param[k] = v
  66. }
  67. k, v = p[i], ""
  68. } else {
  69. if k == "" {
  70. continue
  71. }
  72. if v != "" {
  73. v += " " + p[i]
  74. } else {
  75. v = p[i]
  76. }
  77. }
  78. }
  79. if k != "" {
  80. os_args_param[k] = v
  81. }
  82. }
  83. func IsArgsParam(k string) bool {
  84. _, ok := os_args_param[k]
  85. return ok
  86. }