| 9 | ) |
| 10 | |
| 11 | func (cmd *Command) setupDefaults(osArgs []string) { |
| 12 | if cmd.didSetupDefaults { |
| 13 | tracef("already did setup (cmd=%[1]q)", cmd.Name) |
| 14 | return |
| 15 | } |
| 16 | |
| 17 | cmd.didSetupDefaults = true |
| 18 | |
| 19 | isRoot := cmd.parent == nil |
| 20 | tracef("isRoot? %[1]v (cmd=%[2]q)", isRoot, cmd.Name) |
| 21 | |
| 22 | if cmd.ShellComplete == nil { |
| 23 | tracef("setting default ShellComplete (cmd=%[1]q)", cmd.Name) |
| 24 | cmd.ShellComplete = DefaultCompleteWithFlags |
| 25 | } |
| 26 | |
| 27 | if cmd.Name == "" && isRoot { |
| 28 | name := filepath.Base(osArgs[0]) |
| 29 | tracef("setting cmd.Name from first arg basename (cmd=%[1]q)", name) |
| 30 | cmd.Name = name |
| 31 | } |
| 32 | |
| 33 | if cmd.Usage == "" && isRoot { |
| 34 | tracef("setting default Usage (cmd=%[1]q)", cmd.Name) |
| 35 | cmd.Usage = "A new cli application" |
| 36 | } |
| 37 | |
| 38 | if cmd.Version == "" { |
| 39 | tracef("setting HideVersion=true due to empty Version (cmd=%[1]q)", cmd.Name) |
| 40 | cmd.HideVersion = true |
| 41 | } |
| 42 | |
| 43 | if cmd.Action == nil { |
| 44 | tracef("setting default Action as help command action (cmd=%[1]q)", cmd.Name) |
| 45 | cmd.Action = helpCommandAction |
| 46 | } |
| 47 | |
| 48 | if cmd.Reader == nil { |
| 49 | if cmd.parent != nil && cmd.parent.Reader != nil { |
| 50 | tracef("inheriting Reader from parent (cmd=%[1]q)", cmd.Name) |
| 51 | cmd.Reader = cmd.parent.Reader |
| 52 | } else { |
| 53 | tracef("setting default Reader as os.Stdin (cmd=%[1]q)", cmd.Name) |
| 54 | cmd.Reader = os.Stdin |
| 55 | } |
| 56 | } |
| 57 | |
| 58 | if cmd.Writer == nil { |
| 59 | if cmd.parent != nil && cmd.parent.Writer != nil { |
| 60 | tracef("inheriting Writer from parent (cmd=%[1]q)", cmd.Name) |
| 61 | cmd.Writer = cmd.parent.Writer |
| 62 | } else { |
| 63 | tracef("setting default Writer as os.Stdout (cmd=%[1]q)", cmd.Name) |
| 64 | cmd.Writer = os.Stdout |
| 65 | } |
| 66 | } |
| 67 | |
| 68 | if cmd.ErrWriter == nil { |