74 lines
1.5 KiB
Go
74 lines
1.5 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"flag"
|
||
|
"log"
|
||
|
"os"
|
||
|
"path/filepath"
|
||
|
|
||
|
"git.sr.ht/~kisom/goutils/config"
|
||
|
"git.sr.ht/~kisom/goutils/die"
|
||
|
"git.wntrmute.dev/kyle/lifecam/lifecam"
|
||
|
)
|
||
|
|
||
|
var defaultConfigFile = config.DefaultConfigPath("lifecam", "lifecam.conf")
|
||
|
|
||
|
func main() {
|
||
|
var err error
|
||
|
var minio *lifecam.Server
|
||
|
|
||
|
clean := flag.Bool("c", false, "remove files after zipping")
|
||
|
cfgFile := flag.String("f", defaultConfigFile, "path to config file")
|
||
|
upload := flag.Bool("u", false, "upload zipfile to S3")
|
||
|
flag.Parse()
|
||
|
|
||
|
if *cfgFile != "" {
|
||
|
err := config.LoadFile(*cfgFile)
|
||
|
if err != nil {
|
||
|
if !os.IsNotExist(err) {
|
||
|
die.If(err)
|
||
|
}
|
||
|
} else {
|
||
|
log.Println("read config file", *cfgFile)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if *upload {
|
||
|
minio, err = lifecam.NewMinio()
|
||
|
die.If(err)
|
||
|
}
|
||
|
|
||
|
paths := flag.Args()
|
||
|
if len(paths) == 0 {
|
||
|
if defaultPath := config.Get("DEFAULT_IMAGE_DIR"); defaultPath != "" {
|
||
|
paths = append(paths, defaultPath)
|
||
|
} else {
|
||
|
log.Println("nothing to do")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var frameMap map[int]lifecam.FrameList
|
||
|
for _, path := range paths {
|
||
|
log.Println("loading all frames in", path)
|
||
|
path = filepath.Clean(path)
|
||
|
frameMap, err = lifecam.LoadDir(path, frameMap)
|
||
|
die.If(err)
|
||
|
}
|
||
|
|
||
|
for _, fl := range frameMap {
|
||
|
pkg, err := fl.Package()
|
||
|
die.If(err)
|
||
|
err = lifecam.PackageZip(pkg, *clean)
|
||
|
die.If(err)
|
||
|
|
||
|
if *upload {
|
||
|
path, err := pkg.Frames.Name()
|
||
|
die.If(err)
|
||
|
n, err := minio.Upload(path, lifecam.MimeZip)
|
||
|
die.If(err)
|
||
|
log.Printf("uploaded %s [%d bytes]", path, n)
|
||
|
}
|
||
|
}
|
||
|
log.Println("complete")
|
||
|
}
|