feat(cli): doctor accepts positional account alongside --account
This commit is contained in:
+22
-4
@@ -105,18 +105,36 @@ func newDepsLive(st *store.Store, out io.Writer) Deps {
|
||||
}
|
||||
}
|
||||
|
||||
// runDoctor handles `doctor [--account <name>]` (human-readable diagnostics).
|
||||
// runDoctor handles `doctor [account]` or `doctor [--account <name>]`.
|
||||
func runDoctor(args []string, role store.Role, out, errOut io.Writer) int {
|
||||
// Accept a positional account (human form) or --account (agent form).
|
||||
var positional string
|
||||
rest := args
|
||||
if len(args) > 0 && !strings.HasPrefix(args[0], "-") {
|
||||
positional, rest = args[0], args[1:]
|
||||
}
|
||||
fs := flag.NewFlagSet("doctor", flag.ContinueOnError)
|
||||
fs.SetOutput(errOut)
|
||||
usageFlags(fs, "doctor", errOut)
|
||||
account := fs.String("account", "", "check only this account")
|
||||
if err := fs.Parse(args); err != nil {
|
||||
accountFlag := fs.String("account", "", "check only this account")
|
||||
if err := fs.Parse(rest); err != nil {
|
||||
if errors.Is(err, flag.ErrHelp) {
|
||||
return 0
|
||||
}
|
||||
return 2
|
||||
}
|
||||
if fs.NArg() > 0 {
|
||||
fmt.Fprintf(errOut, "unexpected argument %q\n", fs.Arg(0))
|
||||
return 2
|
||||
}
|
||||
account := *accountFlag
|
||||
if positional != "" {
|
||||
if account != "" && account != positional {
|
||||
fmt.Fprintln(errOut, "give the account once, as a positional or --account, not both")
|
||||
return 2
|
||||
}
|
||||
account = positional
|
||||
}
|
||||
st, err := openStore(role)
|
||||
if err != nil {
|
||||
fmt.Fprintf(errOut, "emcli: %v\n", err)
|
||||
@@ -124,7 +142,7 @@ func runDoctor(args []string, role store.Role, out, errOut io.Writer) int {
|
||||
}
|
||||
defer st.Close()
|
||||
d := newDepsLive(st, out)
|
||||
if err := DoctorCmd(d, *account); err != nil {
|
||||
if err := DoctorCmd(d, account); err != nil {
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
|
||||
Reference in New Issue
Block a user