aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile12
-rw-r--r--go.mod5
-rw-r--r--go.sum2
-rw-r--r--main.go82
4 files changed, 101 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..9c5bc80
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,12 @@
+.POSIX:
+.SUFFIXES:
+
+outputs = gallery public/mithril.js
+all: $(outputs)
+
+gallery: main.go
+ go build -o $@
+public/mithril.js:
+ curl -Lo $@ https://unpkg.com/mithril/mithril.js
+clean:
+ rm -f $(outputs)
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..6d8c4f9
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,5 @@
+module janouch.name/gallery
+
+go 1.21.4
+
+require github.com/mattn/go-sqlite3 v1.14.18
diff --git a/go.sum b/go.sum
new file mode 100644
index 0000000..810a101
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,2 @@
+github.com/mattn/go-sqlite3 v1.14.18 h1:JL0eqdCOq6DJVNPSvArO/bIV9/P7fbGrV00LZHc+5aI=
+github.com/mattn/go-sqlite3 v1.14.18/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..240f245
--- /dev/null
+++ b/main.go
@@ -0,0 +1,82 @@
+package main
+
+import (
+ "database/sql"
+ "log"
+ "os"
+
+ _ "github.com/mattn/go-sqlite3"
+)
+
+// init GD - initialize a "gallery directory" that contains gallery.sqlite,
+// images, thumbs.
+func cmdInit(args []string) {
+ if len(args) != 1 {
+ log.Fatalln("usage: GD")
+ }
+
+ gd := args[0]
+
+ db, err := sql.Open("sqlite3", gd+"/foo.db")
+ if err != nil {
+ log.Fatalln(err)
+ }
+
+ // TODO: Figure out a go generate to create a Go file to create the db.
+ _ = db
+}
+
+// run GD ADDRESS - run a web UI against GD on ADDRESS
+func cmdRun(args []string) {
+ // TODO: Use "public" from CWD for files.
+}
+
+// import GD ROOT... - add files to the "entry" table
+func cmdImport(args []string) {
+ // TODO
+}
+
+// sync GD ROOT... - like import, but clear table beforehands
+func cmdSync(args []string) {
+ // TODO
+}
+
+// check GD - see if all files are accessible
+func cmdCheck(args []string) {
+ // TODO
+}
+
+// thumbnail GD [SHA1...] - generate missing thumbnails, in parallel
+func cmdThumbnail(args []string) {
+ // TODO: Show progress.
+}
+
+// dhash GD HASHER [SHA1...] - generate perceptual hash from thumbnails
+func cmdDhash(args []string) {
+ // TODO
+}
+
+var commands = map[string]struct {
+ handler func(args []string)
+}{
+ "init": {cmdInit},
+ "run": {cmdRun},
+ "import": {cmdImport},
+ "sync": {cmdSync},
+ "check": {cmdCheck},
+ "thumbnail": {cmdThumbnail},
+ "dhash": {cmdDhash},
+}
+
+func main() {
+ if len(os.Args) <= 2 {
+ log.Fatalln("Missing arguments")
+ }
+
+ cmd, ok := commands[os.Args[1]]
+ if !ok {
+ log.Fatalln("Unknown command: " + os.Args[1])
+ }
+
+ cmd.handler(os.Args[2:])
+}