2023-02-18 21:01:28 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"embed"
|
|
|
|
"log"
|
|
|
|
"os"
|
|
|
|
)
|
|
|
|
|
2023-08-11 18:33:26 +01:00
|
|
|
type Runner interface {
|
|
|
|
Parse([]string) error
|
|
|
|
Name() string
|
|
|
|
Run() error
|
|
|
|
}
|
|
|
|
|
2023-02-18 21:01:28 +00:00
|
|
|
//go:embed templates/tex/*
|
|
|
|
var templates embed.FS
|
|
|
|
|
|
|
|
func main() {
|
2023-08-11 18:33:26 +01:00
|
|
|
commandMap := map[string]Runner{
|
|
|
|
"version": NewVersionCommand(),
|
|
|
|
"generate": NewGenerateCommand(),
|
2023-02-18 21:01:28 +00:00
|
|
|
}
|
|
|
|
|
2023-08-11 18:33:26 +01:00
|
|
|
subcommand := os.Args[1]
|
2023-02-18 21:01:28 +00:00
|
|
|
|
2023-08-11 18:33:26 +01:00
|
|
|
runner, ok := commandMap[subcommand]
|
2023-02-18 21:01:28 +00:00
|
|
|
|
2023-08-11 18:33:26 +01:00
|
|
|
if !ok {
|
|
|
|
log.Fatalf("ERROR: unknown subcommand '%s'.", subcommand)
|
2023-02-21 08:23:26 +00:00
|
|
|
}
|
|
|
|
|
2023-08-11 18:33:26 +01:00
|
|
|
if err := runner.Parse(os.Args[2:]); err != nil {
|
|
|
|
log.Fatalf("ERROR: unable to parse the command line flags; %v.", err)
|
2023-02-21 08:23:26 +00:00
|
|
|
}
|
|
|
|
|
2023-08-11 18:33:26 +01:00
|
|
|
if err := runner.Run(); err != nil {
|
|
|
|
log.Fatalf("ERROR: unable to run '%s'; %v.", runner.Name(), err)
|
2023-02-21 08:23:26 +00:00
|
|
|
}
|
2023-03-08 00:42:04 +00:00
|
|
|
}
|