claude go reimplement

This commit is contained in:
tyler committed 2026-10-26 20:30:43 -07:00
1 parent 4bcb924158
commit f523c79618
83 files changed
+3714 -3454

No files matched your search

+93
View File
@@ -0,0 +1,93 @@
// kjv-api: the King James Bible web API as one program plus one SQLite
// database (kjv.db) that holds the text, every page and asset, user data and
// the logs.
package main
import (
"flag"
"fmt"
"os"
"path/filepath"
"kjv-api/internal/kjv"
)
const usage = `usage:
kjv-api [-db kjv.db] [-addr 127.0.0.1:1611] run the server
kjv-api import-assets [-db kjv.db] DIR load the pages, scripts, styles and data files from the assets folder into the database
kjv-api logs [-db kjv.db] [-n 100] print the newest log lines stored in the database
`
func findDB(flagValue string) string {
if flagValue != "" {
return flagValue
}
if v := os.Getenv("KJV_DB"); v != "" {
return v
}
candidates := []string{"kjv.db"}
if exe, err := os.Executable(); err == nil {
candidates = append(candidates, filepath.Join(filepath.Dir(exe), "kjv.db"))
}
for _, c := range candidates {
if _, err := os.Stat(c); err == nil {
return c
}
}
return "kjv.db"
}
func main() {
args := os.Args[1:]
if len(args) > 0 {
switch args[0] {
case "import-assets":
fs := flag.NewFlagSet("import-assets", flag.ExitOnError)
db := fs.String("db", "", "path to kjv.db")
fs.Parse(args[1:])
if fs.NArg() != 1 {
fmt.Fprint(os.Stderr, usage)
os.Exit(2)
}
dbPath := findDB(*db)
if _, err := os.Stat(dbPath); err != nil {
fatal(err)
}
if err := kjv.ImportAssets(dbPath, fs.Arg(0)); err != nil {
fatal(err)
}
return
case "logs":
fs := flag.NewFlagSet("logs", flag.ExitOnError)
db := fs.String("db", "", "path to kjv.db")
n := fs.Int("n", 100, "number of lines")
fs.Parse(args[1:])
if err := kjv.ShowLogs(findDB(*db), *n); err != nil {
fatal(err)
}
return
case "help", "-h", "--help":
fmt.Print(usage)
return
}
}
fs := flag.NewFlagSet("kjv-api", flag.ExitOnError)
dbFlag := fs.String("db", "", "path to kjv.db (default: $KJV_DB, ./kjv.db, next to the program)")
addr := fs.String("addr", envOr("KJV_ADDR", "127.0.0.1:1611"), "listen address (localhost only)")
fs.Parse(args)
if err := kjv.Run(findDB(*dbFlag), *addr); err != nil {
fatal(err)
}
}
func fatal(err error) {
fmt.Fprintln(os.Stderr, "kjv-api:", err)
os.Exit(1)
}
func envOr(key, def string) string {
if v := os.Getenv(key); v != "" {
return v
}
return def
}