diff options
| author | Sam Scholten | 2026-06-14 20:00:15 +1000 |
|---|---|---|
| committer | Sam Scholten | 2026-06-14 20:00:15 +1000 |
| commit | decc46c876e7b5552f5f5ecac4ee4f1a64ad1d62 (patch) | |
| tree | 46875e236a062189115c0cd8ed8f1d82980c16b7 /main.go | |
| download | abvjt-decc46c876e7b5552f5f5ecac4ee4f1a64ad1d62.tar.gz abvjt-decc46c876e7b5552f5f5ecac4ee4f1a64ad1d62.zip | |
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 67 |
1 files changed, 67 insertions, 0 deletions
@@ -0,0 +1,67 @@ +package main + +import ( + "fmt" + "io" + "os" +) + +type Command interface { + Name() string + Init(args []string) error + Run(stdin io.Reader, stdout io.Writer) error +} + +func main() { + if len(os.Args) < 2 { + printHelp() + os.Exit(1) + } + + cmdName := os.Args[1] + args := os.Args[2:] + + if cmdName == "help" || cmdName == "--help" || cmdName == "-h" { + printHelp() + os.Exit(0) + } + + var cmd Command + switch cmdName { + case "scrape": + cmd = &ScrapeCommand{} + case "serve": + cmd = &ServeCommand{} + default: + fmt.Fprintf(os.Stderr, "Unknown command: %s\n\n", cmdName) + printHelp() + os.Exit(1) + } + + if err := cmd.Init(args); err != nil { + fmt.Fprintf(os.Stderr, "Error initializing %s: %v\n", cmdName, err) + os.Exit(1) + } + + if err := cmd.Run(os.Stdin, os.Stdout); err != nil { + fmt.Fprintf(os.Stderr, "Error running %s: %v\n", cmdName, err) + os.Exit(1) + } +} + +func printHelp() { + fmt.Printf(`abvjt <command> [arguments] + +Journal abbreviation lookup service. + +Commands: + scrape Scrape WOS journal abbreviations into SQLite DB + serve Start HTTP server for web UI and API + help Show this help message + +Usage: + abvjt scrape --db data/abvjt.db + abvjt serve --port 8080 --db data/abvjt.db + +`) +} |
