aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorSam Scholten2026-06-14 20:00:15 +1000
committerSam Scholten2026-06-14 20:00:15 +1000
commitdecc46c876e7b5552f5f5ecac4ee4f1a64ad1d62 (patch)
tree46875e236a062189115c0cd8ed8f1d82980c16b7 /main.go
downloadabvjt-main.tar.gz
abvjt-main.zip
Initial implementation: scrape, serve, UI, container, deploymentHEADmain
Diffstat (limited to 'main.go')
-rw-r--r--main.go67
1 files changed, 67 insertions, 0 deletions
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 <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
+
+`)
+}