instance.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package kos
  2. import (
  3. "git.nspix.com/golang/kos/entry/cli"
  4. "git.nspix.com/golang/kos/entry/http"
  5. _ "git.nspix.com/golang/kos/pkg/request"
  6. _ "git.nspix.com/golang/kos/util/arrays"
  7. _ "git.nspix.com/golang/kos/util/bs"
  8. _ "git.nspix.com/golang/kos/util/fetch"
  9. _ "git.nspix.com/golang/kos/util/humanize"
  10. _ "git.nspix.com/golang/kos/util/random"
  11. _ "git.nspix.com/golang/kos/util/reflection"
  12. _ "git.nspix.com/golang/kos/util/sys"
  13. "sync"
  14. )
  15. var (
  16. once sync.Once
  17. app Application
  18. )
  19. func initialization(cbs ...Option) {
  20. once.Do(func() {
  21. app = New(cbs...)
  22. })
  23. }
  24. func Init(cbs ...Option) Application {
  25. initialization(cbs...)
  26. return app
  27. }
  28. func Name() string {
  29. initialization()
  30. return app.Info().Name
  31. }
  32. func ShortName() string {
  33. initialization()
  34. if entry, ok := app.(*application); ok {
  35. return entry.opts.ShortName()
  36. }
  37. return app.Info().Name
  38. }
  39. func Version() string {
  40. initialization()
  41. return app.Info().Version
  42. }
  43. func Debug(args ...any) bool {
  44. initialization()
  45. if entry, ok := app.(*application); ok {
  46. if len(args) <= 0 {
  47. return entry.opts.EnableDebug
  48. }
  49. if b, ok := args[0].(bool); ok {
  50. entry.opts.EnableDebug = b
  51. }
  52. return entry.opts.EnableDebug
  53. }
  54. return false
  55. }
  56. func Node() *Info {
  57. initialization()
  58. return app.Info()
  59. }
  60. func Http() *http.Server {
  61. initialization()
  62. return app.Http()
  63. }
  64. func Command() *cli.Server {
  65. initialization()
  66. return app.Command()
  67. }
  68. func Handle(method string, cb HandleFunc) {
  69. initialization()
  70. app.Handle(method, cb)
  71. }