PiwigoDirectoryUploader/internal/app/app.go
Philipp Häfelfinger b326b0da84 added uploadImages
added piwigo image id to upload to support file updates
added noUpload flag to do all but skip file upload
changed metadata filepath to full file path
moved category detection during local file metadata generation
2019-03-20 23:15:41 +01:00

74 lines
2.2 KiB
Go

package app
import (
"flag"
"git.haefelfinger.net/piwigo/PiwigoDirectoryUploader/internal/pkg/localFileStructure"
"github.com/sirupsen/logrus"
"os"
)
var (
imagesRootPath = flag.String("imagesRootPath", "", "This is the images root path that should be mirrored to piwigo.")
sqliteDb = flag.String("sqliteDb", "", "The connection string to the sql lite database file.")
noUpload = flag.Bool("noUpload", false, "If set to true, the metadata gets prepared but the upload is not called and the application is exited with code 90")
piwigoUrl = flag.String("piwigoUrl", "", "The root url without tailing slash to your piwigo installation.")
piwigoUser = flag.String("piwigoUser", "", "The username to use during sync.")
piwigoPassword = flag.String("piwigoPassword", "", "This is password to the given username.")
piwigoUploadChunkSizeInKB = flag.Int("piwigoUploadChunkSizeInKB", 512, "The chunksize used to upload an image to piwigo.")
)
func Run() {
context, err := createAppContext()
if err != nil {
logErrorAndExit(err, 1)
}
err = context.piwigo.Login()
if err != nil {
logErrorAndExit(err, 2)
}
filesystemNodes, err := localFileStructure.ScanLocalFileStructure(context.localRootPath)
if err != nil {
logErrorAndExit(err, 3)
}
categories, err := getAllCategoriesFromServer(context)
if err != nil {
logErrorAndExit(err, 4)
}
err = synchronizeCategories(context.piwigo, filesystemNodes, categories)
if err != nil {
logErrorAndExit(err, 5)
}
err = synchronizeLocalImageMetadata(context.dataStore, filesystemNodes, categories, localFileStructure.CalculateFileCheckSums)
if err != nil {
logErrorAndExit(err, 6)
}
err = synchronizePiwigoMetadata(context.piwigo, context.dataStore)
if err != nil {
logErrorAndExit(err, 7)
}
if *noUpload {
logrus.Warnln("Skipping upload of images as flag noUpload is set to true!")
_ = context.piwigo.Logout()
os.Exit(90)
}
err = uploadImages(context.piwigo, context.dataStore)
if err != nil {
logErrorAndExit(err, 8)
}
_ = context.piwigo.Logout()
}
func logErrorAndExit(err error, exitCode int) {
logrus.Errorln(err)
os.Exit(exitCode)
}