diff --git a/cmd/trakter/main.go b/cmd/trakter/main.go index 51e1bc0..809df61 100644 --- a/cmd/trakter/main.go +++ b/cmd/trakter/main.go @@ -1,7 +1,29 @@ package main -import "fmt" +import ( + "fmt" + "os" + + cmds "codeberg.org/danjones000/trakter/commands" +) + +func procError(err error) { + if err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} func main() { - fmt.Println("TODO") + if len(os.Args) < 2 { + procError(fmt.Errorf("Missing command")) + } + + cmd, err := cmds.New(os.Args[1], os.Args[2:]) + procError(err) + + fmt.Printf("Running %s\n", cmd.Name()) + + err = cmd.Run() + procError(err) } diff --git a/commands/cmds.go b/commands/cmds.go new file mode 100644 index 0000000..13e2b6c --- /dev/null +++ b/commands/cmds.go @@ -0,0 +1,17 @@ +package commands + +import ( + "fmt" + + "github.com/spf13/pflag" +) + +type Command interface { + Name() string + FlagSet() *pflag.FlagSet + Run() error +} + +func New(name string, args []string) (Command, error) { + return nil, fmt.Errorf("Unknown command: %s", name) +} diff --git a/go.mod b/go.mod index 3edd45d..a5127f7 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ module codeberg.org/danjones000/trakter go 1.23.6 + +require github.com/spf13/pflag v1.0.6 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..7cf1763 --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=