MCPcopy Index your code
hub / github.com/peak/s5cmd / generateCommand

Function generateCommand

command/context.go:65–106  ·  view source on GitHub ↗

generateCommand generates command string from given context, app command, default flags and urls.

(c *cli.Context, cmd string, defaultFlags map[string]interface{}, urls ...*url.URL)

Source from the content-addressed store, hash-verified

63
64// generateCommand generates command string from given context, app command, default flags and urls.
65func generateCommand(c *cli.Context, cmd string, defaultFlags map[string]interface{}, urls ...*url.URL) (string, error) {
66 command := AppCommand(cmd)
67 flagset := flag.NewFlagSet(command.Name, flag.ContinueOnError)
68
69 var args []string
70 for _, url := range urls {
71 args = append(args, fmt.Sprintf("%q", url.String()))
72 }
73
74 flags := []string{}
75 for flagname, flagvalue := range defaultFlags {
76 flags = append(flags, fmt.Sprintf("--%s='%v'", flagname, flagvalue))
77 }
78
79 isDefaultFlag := func(flagname string) bool {
80 _, ok := defaultFlags[flagname]
81 return ok
82 }
83
84 for _, f := range command.Flags {
85 flagname := f.Names()[0]
86 if isDefaultFlag(flagname) || !c.IsSet(flagname) {
87 continue
88 }
89
90 for _, flagvalue := range contextValue(c, flagname) {
91 flags = append(flags, fmt.Sprintf("--%s='%s'", flagname, flagvalue))
92 }
93 }
94
95 sort.Strings(flags)
96 flags = append(flags, args...)
97 flags = append([]string{command.Name}, flags...)
98
99 err := flagset.Parse(flags)
100 if err != nil {
101 return "", err
102 }
103
104 cmdCtx := cli.NewContext(c.App, flagset, c)
105 return strings.TrimSpace(commandFromContext(cmdCtx)), nil
106}

Callers 2

TestGenerateCommandFunction · 0.85
planRunMethod · 0.85

Calls 6

AppCommandFunction · 0.85
contextValueFunction · 0.85
commandFromContextFunction · 0.85
NamesMethod · 0.80
IsSetMethod · 0.80
StringMethod · 0.45

Tested by 1

TestGenerateCommandFunction · 0.68