@@ -2,6 +2,7 @@ package parsecli
2
2
3
3
import (
4
4
"fmt"
5
+ "strings"
5
6
6
7
"github.com/spf13/cobra"
7
8
)
@@ -62,29 +63,49 @@ func RunWithClient(e *Env, f func(*Env, *Context) error) cobraRun {
62
63
}
63
64
}
64
65
65
- // RunWithAppClient wraps a run function that should get an app
66
- func RunWithAppClient (e * Env , f func (* Env , * Context ) error ) cobraRun {
66
+ // RunWithClientConfirm wraps a run function that takes an app name
67
+ // or asks for confirmation to use the default app name instead
68
+ func RunWithClientConfirm (e * Env , f func (* Env , * Context ) error ) cobraRun {
67
69
return func (cmd * cobra.Command , args []string ) {
68
- if len (args ) == 0 {
69
- fmt .Fprintf (e .Err , "please provide an app name\n \n " )
70
- cmd .Help ()
71
- e .Exit (1 )
72
- }
70
+ app := DefaultKey
73
71
if len (args ) > 1 {
74
72
fmt .Fprintf (
75
73
e .Err ,
76
- "unexpected arguments, only an app name is expected:%+v\n \n " ,
74
+ "unexpected arguments, only an optional app name is expected:%+v\n \n " ,
77
75
args ,
78
76
)
79
77
cmd .Help ()
80
78
e .Exit (1 )
81
79
}
82
- app := args [0 ]
80
+ if len (args ) == 1 {
81
+ app = args [0 ]
82
+ }
83
83
cl , err := newContext (e , app )
84
84
if err != nil {
85
85
fmt .Fprintln (e .Err , ErrorString (e , err ))
86
86
e .Exit (1 )
87
87
}
88
+
89
+ if app == DefaultKey {
90
+ fmt .Fprintf (
91
+ e .Out ,
92
+ `Did not provide app name as an argument to the command.
93
+ Please enter an app name to execute this command on
94
+ or press ENTER to use the default app %q: ` ,
95
+ cl .Config .GetDefaultApp (),
96
+ )
97
+ var appName string
98
+ fmt .Fscanf (e .In , "%s\n " , & appName )
99
+ appName = strings .TrimSpace (appName )
100
+ if appName != "" {
101
+ cl , err = newContext (e , appName )
102
+ if err != nil {
103
+ fmt .Fprintln (e .Err , ErrorString (e , err ))
104
+ e .Exit (1 )
105
+ }
106
+ }
107
+ }
108
+
88
109
if err := f (e , cl ); err != nil {
89
110
fmt .Fprintln (e .Err , ErrorString (e , err ))
90
111
e .Exit (1 )
0 commit comments