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:]) }