Skip to content

Commit d4585bf

Browse files
committed
Fixed api calls
1 parent c05c9e3 commit d4585bf

File tree

2 files changed

+35
-27
lines changed

2 files changed

+35
-27
lines changed

cmd/api/cmd.go

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,39 @@ type Fn struct {
2929
// PUBLIC METHODS
3030

3131
func (c *Cmd) Get(args []string) (*Fn, error) {
32+
// Get the command function
33+
var fn *Fn
34+
var nargs uint
3235
if len(args) == 0 {
33-
return nil, fmt.Errorf("missing command")
36+
fn = c.getFn("")
37+
} else {
38+
fn = c.getFn(args[0])
39+
nargs = uint(len(args) - 1)
3440
}
35-
name := args[0]
36-
nargs := uint(len(args[1:]))
41+
if fn == nil {
42+
// No arguments and no default command
43+
return nil, nil
44+
}
45+
46+
// Check number of arguments
47+
if fn.MinArgs != 0 && nargs < fn.MinArgs {
48+
return nil, fmt.Errorf("not enough arguments for %q", fn.Name)
49+
} else if nargs > fn.MaxArgs {
50+
return nil, fmt.Errorf("too many arguments for %q", fn.Name)
51+
}
52+
53+
// Return the command
54+
return fn, nil
55+
}
56+
57+
///////////////////////////////////////////////////////////////////////////////
58+
// PRIVATE METHODS
59+
60+
func (c *Cmd) getFn(name string) *Fn {
3761
for _, fn := range c.Fn {
38-
if fn.Name != name {
39-
continue
40-
}
41-
// Check number of arguments
42-
if fn.MinArgs != 0 && nargs < fn.MinArgs {
43-
return nil, fmt.Errorf("not enough arguments for %q", fn.Name)
44-
} else if nargs > fn.MaxArgs {
45-
return nil, fmt.Errorf("too many arguments for %q", fn.Name)
62+
if fn.Name == name {
63+
return &fn
4664
}
47-
// Return the command
48-
return &fn, nil
4965
}
50-
return nil, fmt.Errorf("unknown command: %q", name)
66+
return nil
5167
}

cmd/api/main.go

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,24 +37,16 @@ func main() {
3737
os.Exit(-1)
3838
}
3939

40-
// Get function
40+
// Get function then run it
4141
fn, err := cmd.Get(flags.Args()[1:])
4242
if err != nil {
4343
fmt.Fprintln(os.Stderr, err)
4444
os.Exit(-1)
45-
}
46-
47-
// Run function
48-
if fn != nil {
49-
if err := Run(fn); err != nil {
50-
fmt.Fprintln(os.Stderr, err)
51-
os.Exit(-2)
52-
}
53-
} else if flags.NArg() == 1 {
45+
} else if fn == nil {
5446
flags.PrintCommandUsage(cmd)
55-
} else {
56-
fmt.Fprintf(os.Stderr, "Unknown command: %q\n", flags.Args()[1:])
57-
os.Exit(-1)
47+
} else if err := Run(fn); err != nil {
48+
fmt.Fprintln(os.Stderr, err)
49+
os.Exit(-2)
5850
}
5951
}
6052

0 commit comments

Comments
 (0)