From decc46c876e7b5552f5f5ecac4ee4f1a64ad1d62 Mon Sep 17 00:00:00 2001 From: Sam Scholten Date: Sun, 14 Jun 2026 20:00:15 +1000 Subject: Initial implementation: scrape, serve, UI, container, deployment --- main.go | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 main.go (limited to 'main.go') diff --git a/main.go b/main.go new file mode 100644 index 0000000..91779ed --- /dev/null +++ b/main.go @@ -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 [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 + +`) +} -- cgit v1.2.3