@@ -34,11 +34,12 @@ const (
34
34
EvtError = "error"
35
35
)
36
36
37
- // OK success code
38
- const OK = 0
39
-
40
- // ERR error code
41
- const ERR = 2
37
+ const (
38
+ // OK success exit code
39
+ OK = 0
40
+ // ERR error exit code
41
+ ERR = 2
42
+ )
42
43
43
44
// Logo app logo, ASCII logo
44
45
type Logo struct {
@@ -118,36 +119,33 @@ func Verbose() uint {
118
119
}
119
120
120
121
// NewApp create new app.
121
- // The settings (name, version, description)
122
122
// eg:
123
- // cliapp.NewApp("cli app", "1.0.1", "The is is my cil application")
124
- func NewApp (settings ... string ) * Application {
123
+ // cliapp.NewApp()
124
+ // cliapp.NewApp(func(a *Application) {
125
+ // // do something before init ....
126
+ // a.Hooks[cliapp.EvtInit] = func () {}
127
+ // })
128
+ func NewApp (fn ... func (a * Application )) * Application {
125
129
app = & Application {
126
- Name : "My CLI Application" ,
127
- Logo : Logo {Style : "info" },
130
+ Name : "My CLI Application" ,
131
+ Logo : Logo {Style : "info" },
132
+ Hooks : make (map [string ]appHookFunc , 0 ),
128
133
// set a default version
129
134
Version : "1.0.0" ,
130
135
}
131
136
132
- for k , v := range settings {
133
- switch k {
134
- case 0 :
135
- app .Name = v
136
- case 1 :
137
- app .Version = v
138
- case 2 :
139
- app .Description = v
140
- }
137
+ if len (fn ) > 0 {
138
+ fn [0 ](app )
141
139
}
142
140
143
141
// init
144
- app .initialize ()
142
+ app .Initialize ()
145
143
146
144
return app
147
145
}
148
146
149
147
// initialize application
150
- func (app * Application ) initialize () {
148
+ func (app * Application ) Initialize () {
151
149
app .pid = os .Getpid ()
152
150
app .names = make (map [string ]int )
153
151
@@ -158,7 +156,6 @@ func (app *Application) initialize() {
158
156
"binName" : binName ,
159
157
}
160
158
161
- app .Hooks = make (map [string ]appHookFunc , 0 )
162
159
app .callHook (EvtInit , nil )
163
160
}
164
161
@@ -232,8 +229,8 @@ func (app *Application) callHook(event string, data interface{}) {
232
229
}
233
230
}
234
231
235
- // AddHook handler for a hook event
236
- func (app * Application ) AddHook (name string , handler func (* Application , interface {})) {
232
+ // On add hook handler for a hook event
233
+ func (app * Application ) On (name string , handler func (a * Application , data interface {})) {
237
234
app .Hooks [name ] = handler
238
235
}
239
236
0 commit comments