CLI: Update help texts for commands and flags
This commit is contained in:
parent
a141665a6d
commit
de63227767
27 changed files with 194 additions and 197 deletions
|
@ -57,21 +57,21 @@ func main() {
|
|||
commands.StopCommand,
|
||||
commands.IndexCommand,
|
||||
commands.ImportCommand,
|
||||
commands.CopyCommand,
|
||||
commands.FacesCommand,
|
||||
commands.MomentsCommand,
|
||||
commands.OptimizeCommand,
|
||||
commands.UsersCommand,
|
||||
commands.PasswdCommand,
|
||||
commands.PurgeCommand,
|
||||
commands.CleanUpCommand,
|
||||
commands.CopyCommand,
|
||||
commands.ConvertCommand,
|
||||
commands.ResampleCommand,
|
||||
commands.ThumbsCommand,
|
||||
commands.OptimizeCommand,
|
||||
commands.MomentsCommand,
|
||||
commands.MigrateCommand,
|
||||
commands.BackupCommand,
|
||||
commands.RestoreCommand,
|
||||
commands.ResetCommand,
|
||||
commands.ConfigCommand,
|
||||
commands.UsersCommand,
|
||||
commands.PasswdCommand,
|
||||
commands.VersionCommand,
|
||||
commands.StatusCommand,
|
||||
}
|
||||
|
|
|
@ -193,7 +193,7 @@ func BatchPhotosApprove(router *gin.RouterGroup) {
|
|||
})
|
||||
}
|
||||
|
||||
// BatchAlbumsDelete permanently deletes multiple albums.
|
||||
// BatchAlbumsDelete permanently removes multiple albums.
|
||||
//
|
||||
// POST /api/v1/batch/albums/delete
|
||||
func BatchAlbumsDelete(router *gin.RouterGroup) {
|
||||
|
@ -328,7 +328,7 @@ func BatchLabelsDelete(router *gin.RouterGroup) {
|
|||
})
|
||||
}
|
||||
|
||||
// BatchPhotosDelete permanently deletes multiple photos from the archive.
|
||||
// BatchPhotosDelete permanently removes multiple photos from the archive.
|
||||
//
|
||||
// POST /api/v1/batch/photos/delete
|
||||
func BatchPhotosDelete(router *gin.RouterGroup) {
|
||||
|
|
|
@ -26,9 +26,12 @@ func configAction(ctx *cli.Context) error {
|
|||
|
||||
fmt.Printf("%-25s VALUE\n", "NAME")
|
||||
|
||||
// Feature flags.
|
||||
// Feature flags and auth.
|
||||
fmt.Printf("%-25s %t\n", "debug", conf.Debug())
|
||||
fmt.Printf("%-25s %s\n", "log-level", conf.LogLevel())
|
||||
fmt.Printf("%-25s %s\n", "log-filename", conf.LogFilename())
|
||||
fmt.Printf("%-25s %t\n", "public", conf.Public())
|
||||
fmt.Printf("%-25s %s\n", "admin-password", strings.Repeat("*", utf8.RuneCountInString(conf.AdminPassword())))
|
||||
fmt.Printf("%-25s %t\n", "read-only", conf.ReadOnly())
|
||||
fmt.Printf("%-25s %t\n", "experimental", conf.Experimental())
|
||||
|
||||
|
@ -84,8 +87,8 @@ func configAction(ctx *cli.Context) error {
|
|||
// Site information.
|
||||
fmt.Printf("%-25s %s\n", "site-url", conf.SiteUrl())
|
||||
fmt.Printf("%-25s %s\n", "site-preview", conf.SitePreview())
|
||||
fmt.Printf("%-25s %s\n", "site-title", conf.SiteTitle())
|
||||
fmt.Printf("%-25s %s\n", "site-author", conf.SiteAuthor())
|
||||
fmt.Printf("%-25s %s\n", "site-title", conf.SiteTitle())
|
||||
fmt.Printf("%-25s %s\n", "site-caption", conf.SiteCaption())
|
||||
fmt.Printf("%-25s %s\n", "site-description", conf.SiteDescription())
|
||||
fmt.Printf("%-25s %s\n", "cdn-url", conf.CdnUrl("/"))
|
||||
|
@ -94,19 +97,11 @@ func configAction(ctx *cli.Context) error {
|
|||
fmt.Printf("%-25s %s\n", "api-uri", conf.ApiUri())
|
||||
fmt.Printf("%-25s %s\n", "base-uri", conf.BaseUri("/"))
|
||||
|
||||
// Logging.
|
||||
fmt.Printf("%-25s %s\n", "log-level", conf.LogLevel())
|
||||
fmt.Printf("%-25s %s\n", "log-filename", conf.LogFilename())
|
||||
fmt.Printf("%-25s %s\n", "pid-filename", conf.PIDFilename())
|
||||
|
||||
// HTTP server configuration.
|
||||
fmt.Printf("%-25s %s\n", "http-host", conf.HttpHost())
|
||||
fmt.Printf("%-25s %d\n", "http-port", conf.HttpPort())
|
||||
fmt.Printf("%-25s %s\n", "http-mode", conf.HttpMode())
|
||||
|
||||
// Passwords.
|
||||
fmt.Printf("%-25s %s\n", "admin-password", strings.Repeat("*", utf8.RuneCountInString(conf.AdminPassword())))
|
||||
|
||||
// Database configuration.
|
||||
fmt.Printf("%-25s %s\n", "database-driver", dbDriver)
|
||||
fmt.Printf("%-25s %s\n", "database-server", conf.DatabaseServer())
|
||||
|
@ -153,5 +148,8 @@ func configAction(ctx *cli.Context) error {
|
|||
fmt.Printf("%-25s %f\n", "face-cluster-dist", conf.FaceClusterDist())
|
||||
fmt.Printf("%-25s %f\n", "face-match-dist", conf.FaceMatchDist())
|
||||
|
||||
// Other.
|
||||
fmt.Printf("%-25s %s\n", "pid-filename", conf.PIDFilename())
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -16,8 +16,8 @@ import (
|
|||
// ConvertCommand registers the convert cli command.
|
||||
var ConvertCommand = cli.Command{
|
||||
Name: "convert",
|
||||
Usage: "Converts originals in other formats to JPEG and AVC sidecar files",
|
||||
UsageText: `To limit scope, a sub folder may be passed as first argument.`,
|
||||
Usage: "Converts media files to JPEG and AVC as needed",
|
||||
UsageText: `To limit scope, a PATH may be passed as first argument.`,
|
||||
Action: convertAction,
|
||||
}
|
||||
|
||||
|
|
|
@ -16,9 +16,9 @@ import (
|
|||
|
||||
// CopyCommand registers the copy cli command.
|
||||
var CopyCommand = cli.Command{
|
||||
Name: "copy",
|
||||
Aliases: []string{"cp"},
|
||||
Usage: "Copies files to originals folder, converts and indexes them as needed",
|
||||
Name: "cp",
|
||||
Aliases: []string{"copy"},
|
||||
Usage: "Copies media files to originals",
|
||||
Action: copyAction,
|
||||
}
|
||||
|
||||
|
@ -59,7 +59,7 @@ func copyAction(ctx *cli.Context) error {
|
|||
}
|
||||
|
||||
if sourcePath == conf.OriginalsPath() {
|
||||
return errors.New("import folder is identical with originals")
|
||||
return errors.New("import path is identical with originals")
|
||||
}
|
||||
|
||||
log.Infof("copying media files from %s to %s", sourcePath, conf.OriginalsPath())
|
||||
|
|
|
@ -21,7 +21,7 @@ import (
|
|||
// FacesCommand registers the faces cli command.
|
||||
var FacesCommand = cli.Command{
|
||||
Name: "faces",
|
||||
Usage: "Facial recognition sub-commands",
|
||||
Usage: "Facial recognition commands",
|
||||
Subcommands: []cli.Command{
|
||||
{
|
||||
Name: "stats",
|
||||
|
@ -34,18 +34,18 @@ var FacesCommand = cli.Command{
|
|||
Flags: []cli.Flag{
|
||||
cli.BoolFlag{
|
||||
Name: "fix, f",
|
||||
Usage: "automatically fixes issues",
|
||||
Usage: "fix discovered issues",
|
||||
},
|
||||
},
|
||||
Action: facesAuditAction,
|
||||
},
|
||||
{
|
||||
Name: "reset",
|
||||
Usage: "Removes people and faces",
|
||||
Usage: "Removes people and faces after confirmation",
|
||||
Flags: []cli.Flag{
|
||||
cli.BoolFlag{
|
||||
Name: "force, f",
|
||||
Usage: "removes all people and faces",
|
||||
Usage: "remove all people and faces",
|
||||
},
|
||||
},
|
||||
Action: facesResetAction,
|
||||
|
@ -62,7 +62,7 @@ var FacesCommand = cli.Command{
|
|||
Flags: []cli.Flag{
|
||||
cli.BoolFlag{
|
||||
Name: "force, f",
|
||||
Usage: "updates all faces",
|
||||
Usage: "update all faces",
|
||||
},
|
||||
},
|
||||
Action: facesUpdateAction,
|
||||
|
@ -184,7 +184,7 @@ func facesResetAction(ctx *cli.Context) error {
|
|||
// facesResetAllAction removes all people, faces, and face markers.
|
||||
func facesResetAllAction(ctx *cli.Context) error {
|
||||
actionPrompt := promptui.Prompt{
|
||||
Label: "Permanently delete all people and faces?",
|
||||
Label: "Permanently remove all people and faces?",
|
||||
IsConfirm: true,
|
||||
}
|
||||
|
||||
|
|
|
@ -16,9 +16,9 @@ import (
|
|||
|
||||
// ImportCommand registers the import cli command.
|
||||
var ImportCommand = cli.Command{
|
||||
Name: "import",
|
||||
Aliases: []string{"mv"},
|
||||
Usage: "Moves files to originals folder, converts and indexes them as needed",
|
||||
Name: "mv",
|
||||
Aliases: []string{"import"},
|
||||
Usage: "Moves media files to originals",
|
||||
Action: importAction,
|
||||
}
|
||||
|
||||
|
@ -59,7 +59,7 @@ func importAction(ctx *cli.Context) error {
|
|||
}
|
||||
|
||||
if sourcePath == conf.OriginalsPath() {
|
||||
return errors.New("import folder is identical with originals")
|
||||
return errors.New("import path is identical with originals")
|
||||
}
|
||||
|
||||
log.Infof("moving media files from %s to %s", sourcePath, conf.OriginalsPath())
|
||||
|
|
|
@ -20,7 +20,7 @@ import (
|
|||
// IndexCommand registers the index cli command.
|
||||
var IndexCommand = cli.Command{
|
||||
Name: "index",
|
||||
Usage: "indexes media files in the originals folder",
|
||||
Usage: "Indexes original media files",
|
||||
ArgsUsage: "[path]",
|
||||
Flags: indexFlags,
|
||||
Action: indexAction,
|
||||
|
|
|
@ -12,7 +12,7 @@ import (
|
|||
// MigrateCommand registers the migrate cli command.
|
||||
var MigrateCommand = cli.Command{
|
||||
Name: "migrate",
|
||||
Usage: "Initializes the index database if needed",
|
||||
Usage: "Updates the index database schema",
|
||||
Action: migrateAction,
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ import (
|
|||
// MomentsCommand registers the moments cli command.
|
||||
var MomentsCommand = cli.Command{
|
||||
Name: "moments",
|
||||
Usage: "Creates albums based on popular locations, dates, and labels",
|
||||
Usage: "Creates albums of special moments, trips, and places",
|
||||
Action: momentsAction,
|
||||
}
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ import (
|
|||
// OptimizeCommand registers the index cli command.
|
||||
var OptimizeCommand = cli.Command{
|
||||
Name: "optimize",
|
||||
Usage: "Starts metadata check and optimization",
|
||||
Usage: "Verifies and optimizes metadata",
|
||||
Action: optimizeAction,
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ import (
|
|||
// PurgeCommand registers the index cli command.
|
||||
var PurgeCommand = cli.Command{
|
||||
Name: "purge",
|
||||
Usage: "Removes missing files from search results",
|
||||
Usage: "Flags missing files as hidden, updates counts and covers",
|
||||
Flags: purgeFlags,
|
||||
Action: purgeAction,
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ var PurgeCommand = cli.Command{
|
|||
var purgeFlags = []cli.Flag{
|
||||
cli.BoolFlag{
|
||||
Name: "hard",
|
||||
Usage: "permanently delete from database",
|
||||
Usage: "permanently remove from database",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "dry",
|
||||
|
|
|
@ -26,7 +26,7 @@ import (
|
|||
var StartCommand = cli.Command{
|
||||
Name: "start",
|
||||
Aliases: []string{"up"},
|
||||
Usage: "Starts web server",
|
||||
Usage: "Starts the web server",
|
||||
Flags: startFlags,
|
||||
Action: startAction,
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ import (
|
|||
var StopCommand = cli.Command{
|
||||
Name: "stop",
|
||||
Aliases: []string{"down"},
|
||||
Usage: "Stops web server (only in daemon mode)",
|
||||
Usage: "Stops the web server when running in daemon mode",
|
||||
Action: stopAction,
|
||||
}
|
||||
|
||||
|
|
|
@ -10,22 +10,22 @@ import (
|
|||
"github.com/photoprism/photoprism/pkg/txt"
|
||||
)
|
||||
|
||||
// ResampleCommand registers the resample cli command.
|
||||
var ResampleCommand = cli.Command{
|
||||
Name: "resample",
|
||||
Aliases: []string{"thumbs"},
|
||||
Usage: "Pre-caches thumbnail images for improved performance",
|
||||
// ThumbsCommand registers the resample cli command.
|
||||
var ThumbsCommand = cli.Command{
|
||||
Name: "thumbs",
|
||||
Aliases: []string{"resample"},
|
||||
Usage: "Pre-renders thumbnail images",
|
||||
Flags: []cli.Flag{
|
||||
cli.BoolFlag{
|
||||
Name: "force, f",
|
||||
Usage: "replace existing thumbnails",
|
||||
},
|
||||
},
|
||||
Action: resampleAction,
|
||||
Action: thumbsAction,
|
||||
}
|
||||
|
||||
// resampleAction pre-caches default thumbnails.
|
||||
func resampleAction(ctx *cli.Context) error {
|
||||
// thumbsAction pre-renders thumbnail images.
|
||||
func thumbsAction(ctx *cli.Context) error {
|
||||
start := time.Now()
|
||||
|
||||
conf := config.NewConfig(ctx)
|
|
@ -7,7 +7,6 @@ import (
|
|||
"strings"
|
||||
|
||||
"github.com/dustin/go-humanize/english"
|
||||
|
||||
"github.com/manifoldco/promptui"
|
||||
"github.com/urfave/cli"
|
||||
|
||||
|
@ -21,16 +20,16 @@ import (
|
|||
// UsersCommand registers user management commands.
|
||||
var UsersCommand = cli.Command{
|
||||
Name: "users",
|
||||
Usage: "User management sub-commands",
|
||||
Usage: "User management commands",
|
||||
Subcommands: []cli.Command{
|
||||
{
|
||||
Name: "list",
|
||||
Usage: "lists registered users",
|
||||
Usage: "Lists registered users",
|
||||
Action: usersListAction,
|
||||
},
|
||||
{
|
||||
Name: "add",
|
||||
Usage: "adds a new user",
|
||||
Usage: "Adds a new user",
|
||||
Action: usersAddAction,
|
||||
Flags: []cli.Flag{
|
||||
cli.StringFlag{
|
||||
|
@ -53,7 +52,7 @@ var UsersCommand = cli.Command{
|
|||
},
|
||||
{
|
||||
Name: "update",
|
||||
Usage: "select user by username and update it's information",
|
||||
Usage: "Updates user information",
|
||||
Action: usersUpdateAction,
|
||||
Flags: []cli.Flag{
|
||||
cli.StringFlag{
|
||||
|
@ -72,7 +71,7 @@ var UsersCommand = cli.Command{
|
|||
},
|
||||
{
|
||||
Name: "delete",
|
||||
Usage: "deletes an existing user",
|
||||
Usage: "Removes an existing user",
|
||||
Action: usersDeleteAction,
|
||||
ArgsUsage: "[username]",
|
||||
},
|
||||
|
|
|
@ -322,6 +322,11 @@ func (c *Config) SitePreview() string {
|
|||
return c.options.SitePreview
|
||||
}
|
||||
|
||||
// SiteAuthor returns the site author / copyright.
|
||||
func (c *Config) SiteAuthor() string {
|
||||
return c.options.SiteAuthor
|
||||
}
|
||||
|
||||
// SiteTitle returns the main site title (default is application name).
|
||||
func (c *Config) SiteTitle() string {
|
||||
if c.options.SiteTitle == "" {
|
||||
|
@ -331,11 +336,6 @@ func (c *Config) SiteTitle() string {
|
|||
return c.options.SiteTitle
|
||||
}
|
||||
|
||||
// SiteAuthor returns the site author / copyright.
|
||||
func (c *Config) SiteAuthor() string {
|
||||
return c.options.SiteAuthor
|
||||
}
|
||||
|
||||
// SiteCaption returns a short site caption.
|
||||
func (c *Config) SiteCaption() string {
|
||||
return c.options.SiteCaption
|
||||
|
|
|
@ -1,14 +1,5 @@
|
|||
package config
|
||||
|
||||
// DisableBackups tests if photo and album metadata backups should be disabled.
|
||||
func (c *Config) DisableBackups() bool {
|
||||
if !c.SidecarWritable() {
|
||||
return true
|
||||
}
|
||||
|
||||
return c.options.DisableBackups
|
||||
}
|
||||
|
||||
// DisableWebDAV tests if the built-in WebDAV server should be disabled.
|
||||
func (c *Config) DisableWebDAV() bool {
|
||||
if c.ReadOnly() || c.Demo() {
|
||||
|
@ -18,6 +9,15 @@ func (c *Config) DisableWebDAV() bool {
|
|||
return c.options.DisableWebDAV
|
||||
}
|
||||
|
||||
// DisableBackups tests if photo and album metadata backups should be disabled.
|
||||
func (c *Config) DisableBackups() bool {
|
||||
if !c.SidecarWritable() {
|
||||
return true
|
||||
}
|
||||
|
||||
return c.options.DisableBackups
|
||||
}
|
||||
|
||||
// DisableSettings tests if users should not be allowed to change settings.
|
||||
func (c *Config) DisableSettings() bool {
|
||||
return c.options.DisableSettings
|
||||
|
|
|
@ -11,18 +11,30 @@ import (
|
|||
var GlobalFlags = []cli.Flag{
|
||||
cli.BoolFlag{
|
||||
Name: "debug",
|
||||
Usage: "enables the debug mode, shows additional log messages",
|
||||
Usage: "enable debug mode, shows additional log messages",
|
||||
EnvVar: "PHOTOPRISM_DEBUG",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "log-level, l",
|
||||
Usage: "log verbosity `LEVEL` (trace, debug, info, warning, error, fatal or panic)",
|
||||
Value: "info",
|
||||
EnvVar: "PHOTOPRISM_LOG_LEVEL",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "log-filename",
|
||||
Usage: "optional server log `FILENAME`",
|
||||
EnvVar: "PHOTOPRISM_LOG_FILENAME",
|
||||
Value: "",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "test",
|
||||
Hidden: true,
|
||||
Usage: "enables the test mode",
|
||||
Usage: "enable test mode",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "demo",
|
||||
Hidden: true,
|
||||
Usage: "enables the demo mode",
|
||||
Usage: "enable demo mode",
|
||||
EnvVar: "PHOTOPRISM_DEMO",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
|
@ -33,460 +45,448 @@ var GlobalFlags = []cli.Flag{
|
|||
},
|
||||
cli.BoolFlag{
|
||||
Name: "public, p",
|
||||
Usage: "disables password authentication",
|
||||
Usage: "disable password authentication",
|
||||
EnvVar: "PHOTOPRISM_PUBLIC",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "admin-password",
|
||||
Usage: "initial admin `PASSWORD`, min 4 characters",
|
||||
EnvVar: "PHOTOPRISM_ADMIN_PASSWORD",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "read-only, r",
|
||||
Usage: "disables import, upload, and delete",
|
||||
Usage: "disable import, upload, and delete",
|
||||
EnvVar: "PHOTOPRISM_READONLY",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "experimental, e",
|
||||
Usage: "enables experimental features",
|
||||
Usage: "enable experimental features",
|
||||
EnvVar: "PHOTOPRISM_EXPERIMENTAL",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "admin-password",
|
||||
Usage: "sets the initial admin `PASSWORD`, min 4 characters",
|
||||
EnvVar: "PHOTOPRISM_ADMIN_PASSWORD",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "config-file, c",
|
||||
Usage: "loads config options from `FILENAME`",
|
||||
Usage: "load config options from `FILENAME`",
|
||||
EnvVar: "PHOTOPRISM_CONFIG_FILE",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "config-path",
|
||||
Usage: "sets the config `PATH` for storing settings and other config files",
|
||||
Usage: "config `PATH` where settings and other config files can be found",
|
||||
EnvVar: "PHOTOPRISM_CONFIG_PATH",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "originals-path",
|
||||
Usage: "sets the originals `PATH` containing your photo and video files",
|
||||
Usage: "photo and video library `PATH` containing your original files",
|
||||
EnvVar: "PHOTOPRISM_ORIGINALS_PATH",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "originals-limit",
|
||||
Value: 1000,
|
||||
Usage: "limits the file size in `MB`",
|
||||
Usage: "original file size limit in `MB`",
|
||||
EnvVar: "PHOTOPRISM_ORIGINALS_LIMIT",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "import-path",
|
||||
Usage: "sets an optional import `PATH` from which files can be added to originals",
|
||||
Usage: "optional import `PATH` from which files can be added to originals",
|
||||
EnvVar: "PHOTOPRISM_IMPORT_PATH",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "storage-path",
|
||||
Usage: "sets the storage base `PATH` for cache, database, and sidecar files",
|
||||
Usage: "writable storage `PATH` for cache, database, and sidecar files",
|
||||
EnvVar: "PHOTOPRISM_STORAGE_PATH",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "sidecar-path",
|
||||
Usage: "sets a custom relative or absolute sidecar `PATH`",
|
||||
Usage: "optional custom relative or absolute sidecar `PATH`",
|
||||
EnvVar: "PHOTOPRISM_SIDECAR_PATH",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "cache-path",
|
||||
Usage: "sets a custom cache `PATH` for storing sessions and thumbnails",
|
||||
Usage: "optional custom cache `PATH` for sessions and thumbnail files",
|
||||
EnvVar: "PHOTOPRISM_CACHE_PATH",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "temp-path",
|
||||
Usage: "sets a custom temp `PATH` for storing temporary files",
|
||||
Usage: "optional custom temporary file `PATH`",
|
||||
EnvVar: "PHOTOPRISM_TEMP_PATH",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "backup-path",
|
||||
Usage: "sets a custom backup `PATH`",
|
||||
Usage: "optional custom backup file `PATH`",
|
||||
EnvVar: "PHOTOPRISM_BACKUP_PATH",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "assets-path",
|
||||
Usage: "sets the assets `PATH` containing static resources like icons and templates",
|
||||
Usage: "static assets `PATH` containing resources like icons and templates",
|
||||
EnvVar: "PHOTOPRISM_ASSETS_PATH",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "workers, w",
|
||||
Usage: "limits the `NUMBER` of indexing workers",
|
||||
Usage: "max `NUMBER` of indexing workers",
|
||||
EnvVar: "PHOTOPRISM_WORKERS",
|
||||
Value: cpuid.CPU.PhysicalCores / 2,
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "wakeup-interval",
|
||||
Usage: "adjusts the background worker wakeup interval in `SECONDS`",
|
||||
Usage: "background worker wakeup interval in `SECONDS`",
|
||||
Value: DefaultWakeupInterval,
|
||||
EnvVar: "PHOTOPRISM_WAKEUP_INTERVAL",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "auto-index",
|
||||
Usage: "adjusts the WebDAV auto indexing safety delay in `SECONDS` (-1 to disable)",
|
||||
Usage: "WebDAV auto indexing safety delay in `SECONDS` (-1 to disable)",
|
||||
Value: DefaultAutoIndexDelay,
|
||||
EnvVar: "PHOTOPRISM_AUTO_INDEX",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "auto-import",
|
||||
Usage: "adjusts the WebDAV auto import safety delay in `SECONDS` (-1 to disable)",
|
||||
Usage: "WebDAV auto import safety delay in `SECONDS` (-1 to disable)",
|
||||
Value: DefaultAutoImportDelay,
|
||||
EnvVar: "PHOTOPRISM_AUTO_IMPORT",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "disable-backups",
|
||||
Usage: "disables creating YAML metadata backup sidecar files",
|
||||
EnvVar: "PHOTOPRISM_DISABLE_BACKUPS",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "disable-webdav",
|
||||
Usage: "disables the built-in WebDAV server",
|
||||
Usage: "disable built-in WebDAV server",
|
||||
EnvVar: "PHOTOPRISM_DISABLE_WEBDAV",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "disable-backups",
|
||||
Usage: "disable creating YAML metadata backup sidecar files",
|
||||
EnvVar: "PHOTOPRISM_DISABLE_BACKUPS",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "disable-settings",
|
||||
Usage: "disables the settings UI and API",
|
||||
Usage: "disable settings UI and API",
|
||||
EnvVar: "PHOTOPRISM_DISABLE_SETTINGS",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "disable-places",
|
||||
Usage: "disables reverse geocoding and maps",
|
||||
Usage: "disable reverse geocoding and maps",
|
||||
EnvVar: "PHOTOPRISM_DISABLE_PLACES",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "disable-exiftool",
|
||||
Usage: "disables metadata extraction with ExifTool",
|
||||
Usage: "disable metadata extraction with ExifTool",
|
||||
EnvVar: "PHOTOPRISM_DISABLE_EXIFTOOL",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "disable-ffmpeg",
|
||||
Usage: "disables video transcoding and thumbnail generation with FFmpeg",
|
||||
Usage: "disable video transcoding and thumbnail generation with FFmpeg",
|
||||
EnvVar: "PHOTOPRISM_DISABLE_FFMPEG",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "disable-darktable",
|
||||
Usage: "disables RAW file conversion with Darktable",
|
||||
Usage: "disable RAW file conversion with Darktable",
|
||||
EnvVar: "PHOTOPRISM_DISABLE_DARKTABLE",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "disable-rawtherapee",
|
||||
Usage: "disables RAW file conversion with RawTherapee",
|
||||
Usage: "disable RAW file conversion with RawTherapee",
|
||||
EnvVar: "PHOTOPRISM_DISABLE_RAWTHERAPEE",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "disable-sips",
|
||||
Usage: "disables RAW file conversion with Sips on macOS",
|
||||
Usage: "disable RAW file conversion with Sips on macOS",
|
||||
EnvVar: "PHOTOPRISM_DISABLE_SIPS",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "disable-heifconvert",
|
||||
Usage: "disables HEIC/HEIF file conversion",
|
||||
Usage: "disable HEIC/HEIF file conversion",
|
||||
EnvVar: "PHOTOPRISM_DISABLE_HEIFCONVERT",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "disable-tensorflow",
|
||||
Usage: "disables all features depending on TensorFlow",
|
||||
Usage: "disable all features depending on TensorFlow",
|
||||
EnvVar: "PHOTOPRISM_DISABLE_TENSORFLOW",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "disable-faces",
|
||||
Usage: "disables facial recognition",
|
||||
Usage: "disable facial recognition",
|
||||
EnvVar: "PHOTOPRISM_DISABLE_FACES",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "disable-classification",
|
||||
Usage: "disables image classification",
|
||||
Usage: "disable image classification",
|
||||
EnvVar: "PHOTOPRISM_DISABLE_CLASSIFICATION",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "detect-nsfw",
|
||||
Usage: "flags photos as private that may be offensive (requires TensorFlow)",
|
||||
Usage: "flag photos as private that may be offensive (requires TensorFlow)",
|
||||
EnvVar: "PHOTOPRISM_DETECT_NSFW",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "upload-nsfw",
|
||||
Usage: "allows uploads that may be offensive",
|
||||
Usage: "allow uploads that may be offensive",
|
||||
EnvVar: "PHOTOPRISM_UPLOAD_NSFW",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "log-level, l",
|
||||
Usage: "adjusts the log level to trace, debug, info, warning, error, fatal or panic",
|
||||
Value: "info",
|
||||
EnvVar: "PHOTOPRISM_LOG_LEVEL",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "log-filename",
|
||||
Usage: "sets the server log `FILENAME`",
|
||||
EnvVar: "PHOTOPRISM_LOG_FILENAME",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "pid-filename",
|
||||
Usage: "sets the server process id `FILENAME`",
|
||||
EnvVar: "PHOTOPRISM_PID_FILENAME",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "cdn-url",
|
||||
Usage: "sets an optional content delivery network `URL` (optional)",
|
||||
Usage: "optional content delivery network `URL` (optional)",
|
||||
EnvVar: "PHOTOPRISM_CDN_URL",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "site-url",
|
||||
Usage: "sets the public site `URL`",
|
||||
Usage: "public site `URL`",
|
||||
Value: "http://localhost:2342/",
|
||||
EnvVar: "PHOTOPRISM_SITE_URL",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "site-preview",
|
||||
Usage: "sets the public preview image `URL`",
|
||||
Usage: "public preview image `URL`",
|
||||
EnvVar: "PHOTOPRISM_SITE_PREVIEW",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "site-author",
|
||||
Usage: "artist name or copyright",
|
||||
EnvVar: "PHOTOPRISM_SITE_AUTHOR",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "site-title",
|
||||
Usage: "sets the site title",
|
||||
Usage: "site title",
|
||||
Value: "PhotoPrism",
|
||||
EnvVar: "PHOTOPRISM_SITE_TITLE",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "site-author",
|
||||
Usage: "sets the artist name or copyright",
|
||||
EnvVar: "PHOTOPRISM_SITE_AUTHOR",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "site-caption",
|
||||
Usage: "sets the site caption",
|
||||
Usage: "site caption",
|
||||
Value: "Browse Your Life",
|
||||
EnvVar: "PHOTOPRISM_SITE_CAPTION",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "site-description",
|
||||
Usage: "sets an optional site description",
|
||||
Usage: "site description",
|
||||
EnvVar: "PHOTOPRISM_SITE_DESCRIPTION",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "http-port",
|
||||
Value: 2342,
|
||||
Usage: "sets the http server port `NUMBER`",
|
||||
Usage: "http server port `NUMBER`",
|
||||
EnvVar: "PHOTOPRISM_HTTP_PORT",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "http-host",
|
||||
Usage: "sets the http server `IP` address",
|
||||
Usage: "http server `IP` address",
|
||||
EnvVar: "PHOTOPRISM_HTTP_HOST",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "http-mode, m",
|
||||
Usage: "selects the http server `MODE` (debug, release, or test)",
|
||||
Usage: "http server `MODE` (debug, release, or test)",
|
||||
EnvVar: "PHOTOPRISM_HTTP_MODE",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "http-compression, z",
|
||||
Usage: "improves transfer speed and bandwidth utilization (none or gzip)",
|
||||
Usage: "enable http compression to improve bandwidth utilization (none or gzip)",
|
||||
EnvVar: "PHOTOPRISM_HTTP_COMPRESSION",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "database-driver",
|
||||
Usage: "selects the database `DRIVER` (sqlite or mysql)",
|
||||
Usage: "database `DRIVER` (sqlite or mysql)",
|
||||
Value: "sqlite",
|
||||
EnvVar: "PHOTOPRISM_DATABASE_DRIVER",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "database-dsn",
|
||||
Usage: "sets the sqlite file name, specifying a `DSN` is optional other drivers",
|
||||
Usage: "sqlite file name, specifying a `DSN` is optional other drivers",
|
||||
EnvVar: "PHOTOPRISM_DATABASE_DSN",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "database-server",
|
||||
Usage: "sets the database server `HOST` and port e.g. mysql:3306",
|
||||
Usage: "database server `HOST` and port e.g. mysql:3306",
|
||||
EnvVar: "PHOTOPRISM_DATABASE_SERVER",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "database-name",
|
||||
Value: "photoprism",
|
||||
Usage: "sets the database schema `NAME`",
|
||||
Usage: "database schema `NAME`",
|
||||
EnvVar: "PHOTOPRISM_DATABASE_NAME",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "database-user",
|
||||
Value: "photoprism",
|
||||
Usage: "sets the database user `NAME`",
|
||||
Usage: "database user `NAME`",
|
||||
EnvVar: "PHOTOPRISM_DATABASE_USER",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "database-password",
|
||||
Usage: "sets the database user `PASSWORD`",
|
||||
Usage: "database user `PASSWORD`",
|
||||
EnvVar: "PHOTOPRISM_DATABASE_PASSWORD",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "database-conns",
|
||||
Usage: "limits the `NUMBER` of open database connections",
|
||||
Usage: "max `NUMBER` of open database connections",
|
||||
EnvVar: "PHOTOPRISM_DATABASE_CONNS",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "database-conns-idle",
|
||||
Usage: "limits the `NUMBER` of idle database connections",
|
||||
Usage: "max `NUMBER` of idle database connections",
|
||||
EnvVar: "PHOTOPRISM_DATABASE_CONNS_IDLE",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "raw-presets",
|
||||
Usage: "enables RAW file converter presets (may reduce performance)",
|
||||
Usage: "enable RAW file converter presets (may reduce performance)",
|
||||
EnvVar: "PHOTOPRISM_RAW_PRESETS",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "darktable-bin",
|
||||
Usage: "sets the Darktable CLI `COMMAND` for RAW file conversion",
|
||||
Usage: "Darktable CLI `COMMAND` for RAW file conversion",
|
||||
Value: "darktable-cli",
|
||||
EnvVar: "PHOTOPRISM_DARKTABLE_BIN",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "darktable-blacklist",
|
||||
Usage: "disables using Darktable for specific file `EXTENSIONS`",
|
||||
Usage: "disable using Darktable for specific file `EXTENSIONS`",
|
||||
Value: "raf,cr3,dng",
|
||||
EnvVar: "PHOTOPRISM_DARKTABLE_BLACKLIST",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "rawtherapee-bin",
|
||||
Usage: "sets the RawTherapee CLI `COMMAND` for RAW file conversion",
|
||||
Usage: "RawTherapee CLI `COMMAND` for RAW file conversion",
|
||||
Value: "rawtherapee-cli",
|
||||
EnvVar: "PHOTOPRISM_RAWTHERAPEE_BIN",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "rawtherapee-blacklist",
|
||||
Usage: "disables using RawTherapee for specific file `EXTENSIONS`",
|
||||
Usage: "disable using RawTherapee for specific file `EXTENSIONS`",
|
||||
Value: "",
|
||||
EnvVar: "PHOTOPRISM_RAWTHERAPEE_BLACKLIST",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "sips-bin",
|
||||
Usage: "sets the Sips `COMMAND` for RAW file conversion on macOS",
|
||||
Usage: "Sips `COMMAND` for RAW file conversion on macOS",
|
||||
Value: "sips",
|
||||
EnvVar: "PHOTOPRISM_SIPS_BIN",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "heifconvert-bin",
|
||||
Usage: "sets the HEIC/HEIF image convert `COMMAND`",
|
||||
Usage: "HEIC/HEIF image convert `COMMAND`",
|
||||
Value: "heif-convert",
|
||||
EnvVar: "PHOTOPRISM_HEIFCONVERT_BIN",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "ffmpeg-bin",
|
||||
Usage: "sets the FFmpeg `COMMAND` for video transcoding and cover images",
|
||||
Usage: "FFmpeg `COMMAND` for video transcoding and cover images",
|
||||
Value: "ffmpeg",
|
||||
EnvVar: "PHOTOPRISM_FFMPEG_BIN",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "ffmpeg-encoder",
|
||||
Usage: "sets the FFmpeg AVC encoder `NAME`",
|
||||
Usage: "FFmpeg AVC encoder `NAME`",
|
||||
Value: "libx264",
|
||||
EnvVar: "PHOTOPRISM_FFMPEG_ENCODER",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "ffmpeg-bitrate",
|
||||
Usage: "limits the FFmpeg encoding `BITRATE` (Mbit/s)",
|
||||
Usage: "max FFmpeg encoding `BITRATE` (Mbit/s)",
|
||||
Value: 50,
|
||||
EnvVar: "PHOTOPRISM_FFMPEG_BITRATE",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "ffmpeg-buffers",
|
||||
Usage: "adjusts the number of FFmpeg capture buffers",
|
||||
Usage: "`NUMBER` of FFmpeg capture buffers",
|
||||
Value: 32,
|
||||
EnvVar: "PHOTOPRISM_FFMPEG_BUFFERS",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "exiftool-bin",
|
||||
Usage: "sets the ExifTool `COMMAND` for extracting metadata",
|
||||
Usage: "ExifTool `COMMAND` for extracting metadata",
|
||||
Value: "exiftool",
|
||||
EnvVar: "PHOTOPRISM_EXIFTOOL_BIN",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "download-token",
|
||||
Usage: "sets a custom download url `TOKEN`",
|
||||
Usage: "custom download url `TOKEN`",
|
||||
EnvVar: "PHOTOPRISM_DOWNLOAD_TOKEN",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "preview-token",
|
||||
Usage: "sets a custom thumbnail and video streaming url `TOKEN`",
|
||||
Usage: "custom thumbnail and video streaming url `TOKEN`",
|
||||
EnvVar: "PHOTOPRISM_PREVIEW_TOKEN",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "thumb-filter",
|
||||
Usage: "selects the thumbnail downscaling `FILTER` (best to worst: blackman, lanczos, cubic, linear)",
|
||||
Usage: "thumbnail downscaling `FILTER` (best to worst: blackman, lanczos, cubic, linear)",
|
||||
Value: "lanczos",
|
||||
EnvVar: "PHOTOPRISM_THUMB_FILTER",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "thumb-size, s",
|
||||
Usage: "limits the pre-cached thumbnail size in `PIXELS` (720-7680)",
|
||||
Usage: "max pre-cached thumbnail size in `PIXELS` (720-7680)",
|
||||
Value: 2048,
|
||||
EnvVar: "PHOTOPRISM_THUMB_SIZE",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "thumb-uncached, u",
|
||||
Usage: "enables on-demand thumbnail generation (high memory and cpu usage)",
|
||||
Usage: "enable on-demand thumbnail generation (high memory and cpu usage)",
|
||||
EnvVar: "PHOTOPRISM_THUMB_UNCACHED",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "thumb-size-uncached, x",
|
||||
Usage: "limits the on-demand thumbnail size in `PIXELS` (720-7680)",
|
||||
Usage: "max on-demand thumbnail size in `PIXELS` (720-7680)",
|
||||
Value: 7680,
|
||||
EnvVar: "PHOTOPRISM_THUMB_SIZE_UNCACHED",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "jpeg-size",
|
||||
Usage: "limits the size of generated JPEG files in `PIXELS` (720-30000)",
|
||||
Usage: "max size of generated JPEG files in `PIXELS` (720-30000)",
|
||||
Value: 7680,
|
||||
EnvVar: "PHOTOPRISM_JPEG_SIZE",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "jpeg-quality, q",
|
||||
Usage: "adjusts the `QUALITY` of generated JPEG files, a higher value reduces compression (25-100)",
|
||||
Usage: "`QUALITY` of generated JPEG files, a higher value reduces compression (25-100)",
|
||||
Value: 92,
|
||||
EnvVar: "PHOTOPRISM_JPEG_QUALITY",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "face-size",
|
||||
Usage: "sets the min face size in `PIXELS`",
|
||||
Usage: "min face size in `PIXELS`",
|
||||
Value: face.SizeThreshold,
|
||||
EnvVar: "PHOTOPRISM_FACE_SIZE",
|
||||
},
|
||||
cli.Float64Flag{
|
||||
Name: "face-score",
|
||||
Usage: "adjusts the quality `THRESHOLD` for faces",
|
||||
Usage: "quality `THRESHOLD` for faces",
|
||||
Value: face.ScoreThreshold,
|
||||
EnvVar: "PHOTOPRISM_FACE_SCORE",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "face-overlap",
|
||||
Usage: "adjusts the face area overlap threshold in `PERCENT`",
|
||||
Usage: "face area overlap threshold in `PERCENT`",
|
||||
Value: face.OverlapThreshold,
|
||||
EnvVar: "PHOTOPRISM_FACE_OVERLAP",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "face-cluster-size",
|
||||
Usage: "sets the min size of faces forming a cluster in `PIXELS`",
|
||||
Usage: "min size of faces forming a cluster in `PIXELS`",
|
||||
Value: face.ClusterSizeThreshold,
|
||||
EnvVar: "PHOTOPRISM_FACE_CLUSTER_SIZE",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "face-cluster-score",
|
||||
Usage: "adjusts the quality `THRESHOLD` for faces forming a cluster",
|
||||
Usage: "quality `THRESHOLD` for faces forming a cluster",
|
||||
Value: face.ClusterScoreThreshold,
|
||||
EnvVar: "PHOTOPRISM_FACE_CLUSTER_SCORE",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "face-cluster-core",
|
||||
Usage: "determines the `NUMBER` of faces forming a cluster core",
|
||||
Usage: "`NUMBER` of faces forming a cluster core",
|
||||
Value: face.ClusterCore,
|
||||
EnvVar: "PHOTOPRISM_FACE_CLUSTER_CORE",
|
||||
},
|
||||
cli.Float64Flag{
|
||||
Name: "face-cluster-dist",
|
||||
Usage: "determines how close faces forming a cluster core must be to each other",
|
||||
Usage: "similarity distance of faces forming a cluster core",
|
||||
Value: face.ClusterDist,
|
||||
EnvVar: "PHOTOPRISM_FACE_CLUSTER_DIST",
|
||||
},
|
||||
cli.Float64Flag{
|
||||
Name: "face-match-dist",
|
||||
Usage: "adjusts the similarity offset for matching faces with existing clusters",
|
||||
Usage: "similarity offset for matching faces with existing clusters",
|
||||
Value: face.MatchDist,
|
||||
EnvVar: "PHOTOPRISM_FACE_MATCH_DIST",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "pid-filename",
|
||||
Usage: "daemon process id `FILENAME`",
|
||||
EnvVar: "PHOTOPRISM_PID_FILENAME",
|
||||
},
|
||||
}
|
||||
|
|
|
@ -34,15 +34,17 @@ type Options struct {
|
|||
Version string `json:"-"`
|
||||
Copyright string `json:"-"`
|
||||
Debug bool `yaml:"Debug" json:"Debug" flag:"debug"`
|
||||
LogLevel string `yaml:"LogLevel" json:"-" flag:"log-level"`
|
||||
LogFilename string `yaml:"LogFilename" json:"-" flag:"log-filename"`
|
||||
Test bool `yaml:"-" json:"Test,omitempty" flag:"test"`
|
||||
Demo bool `yaml:"Demo" json:"-" flag:"demo"`
|
||||
Sponsor bool `yaml:"-" json:"-" flag:"sponsor"`
|
||||
Public bool `yaml:"Public" json:"-" flag:"public"`
|
||||
AdminPassword string `yaml:"AdminPassword" json:"-" flag:"admin-password"`
|
||||
ReadOnly bool `yaml:"ReadOnly" json:"ReadOnly" flag:"read-only"`
|
||||
Experimental bool `yaml:"Experimental" json:"Experimental" flag:"experimental"`
|
||||
ConfigPath string `yaml:"ConfigPath" json:"-" flag:"config-path"`
|
||||
ConfigFile string `json:"-"`
|
||||
AdminPassword string `yaml:"AdminPassword" json:"-" flag:"admin-password"`
|
||||
OriginalsPath string `yaml:"OriginalsPath" json:"-" flag:"originals-path"`
|
||||
OriginalsLimit int64 `yaml:"OriginalsLimit" json:"OriginalsLimit" flag:"originals-limit"`
|
||||
ImportPath string `yaml:"ImportPath" json:"-" flag:"import-path"`
|
||||
|
@ -56,8 +58,8 @@ type Options struct {
|
|||
WakeupInterval int `yaml:"WakeupInterval" json:"WakeupInterval" flag:"wakeup-interval"`
|
||||
AutoIndex int `yaml:"AutoIndex" json:"AutoIndex" flag:"auto-index"`
|
||||
AutoImport int `yaml:"AutoImport" json:"AutoImport" flag:"auto-import"`
|
||||
DisableBackups bool `yaml:"DisableBackups" json:"DisableBackups" flag:"disable-backups"`
|
||||
DisableWebDAV bool `yaml:"DisableWebDAV" json:"DisableWebDAV" flag:"disable-webdav"`
|
||||
DisableBackups bool `yaml:"DisableBackups" json:"DisableBackups" flag:"disable-backups"`
|
||||
DisableSettings bool `yaml:"DisableSettings" json:"-" flag:"disable-settings"`
|
||||
DisablePlaces bool `yaml:"DisablePlaces" json:"DisablePlaces" flag:"disable-places"`
|
||||
DisableExifTool bool `yaml:"DisableExifTool" json:"DisableExifTool" flag:"disable-exiftool"`
|
||||
|
@ -71,14 +73,11 @@ type Options struct {
|
|||
DisableClassification bool `yaml:"DisableClassification" json:"DisableClassification" flag:"disable-classification"`
|
||||
DetectNSFW bool `yaml:"DetectNSFW" json:"DetectNSFW" flag:"detect-nsfw"`
|
||||
UploadNSFW bool `yaml:"UploadNSFW" json:"-" flag:"upload-nsfw"`
|
||||
LogLevel string `yaml:"LogLevel" json:"-" flag:"log-level"`
|
||||
LogFilename string `yaml:"LogFilename" json:"-" flag:"log-filename"`
|
||||
PIDFilename string `yaml:"PIDFilename" json:"-" flag:"pid-filename"`
|
||||
CdnUrl string `yaml:"CdnUrl" json:"CdnUrl" flag:"cdn-url"`
|
||||
SiteUrl string `yaml:"SiteUrl" json:"SiteUrl" flag:"site-url"`
|
||||
SitePreview string `yaml:"SitePreview" json:"SitePreview" flag:"site-preview"`
|
||||
SiteTitle string `yaml:"SiteTitle" json:"SiteTitle" flag:"site-title"`
|
||||
SiteAuthor string `yaml:"SiteAuthor" json:"SiteAuthor" flag:"site-author"`
|
||||
SiteTitle string `yaml:"SiteTitle" json:"SiteTitle" flag:"site-title"`
|
||||
SiteCaption string `yaml:"SiteCaption" json:"SiteCaption" flag:"site-caption"`
|
||||
SiteDescription string `yaml:"SiteDescription" json:"SiteDescription" flag:"site-description"`
|
||||
DatabaseDriver string `yaml:"DatabaseDriver" json:"-" flag:"database-driver"`
|
||||
|
@ -122,6 +121,7 @@ type Options struct {
|
|||
FaceClusterCore int `yaml:"-" json:"-" flag:"face-cluster-core"`
|
||||
FaceClusterDist float64 `yaml:"-" json:"-" flag:"face-cluster-dist"`
|
||||
FaceMatchDist float64 `yaml:"-" json:"-" flag:"face-match-dist"`
|
||||
PIDFilename string `yaml:"PIDFilename" json:"-" flag:"pid-filename"`
|
||||
}
|
||||
|
||||
// NewOptions creates a new configuration entity by using two methods:
|
||||
|
|
|
@ -202,7 +202,7 @@ func (m File) Missing() bool {
|
|||
return m.FileMissing || m.DeletedAt != nil
|
||||
}
|
||||
|
||||
// DeletePermanently permanently deletes a file from the index.
|
||||
// DeletePermanently permanently removes a file from the index.
|
||||
func (m *File) DeletePermanently() error {
|
||||
if m.ID < 1 || m.FileUID == "" {
|
||||
return fmt.Errorf("invalid file id %d / uid %s", m.ID, txt.Quote(m.FileUID))
|
||||
|
|
|
@ -951,7 +951,7 @@ func (m *Photo) Delete(permanently bool) (files Files, err error) {
|
|||
return files, m.Updates(map[string]interface{}{"DeletedAt": TimeStamp(), "PhotoQuality": -1})
|
||||
}
|
||||
|
||||
// DeletePermanently permanently deletes a photo from the index.
|
||||
// DeletePermanently permanently removes a photo from the index.
|
||||
func (m *Photo) DeletePermanently() (files Files, err error) {
|
||||
if m.ID < 1 || m.PhotoUID == "" {
|
||||
return files, fmt.Errorf("invalid photo id %d / uid %s", m.ID, txt.Quote(m.PhotoUID))
|
||||
|
|
|
@ -13,7 +13,7 @@ import (
|
|||
func Delete(p entity.Photo) error {
|
||||
yamlFileName := p.YamlFileName(Config().OriginalsPath(), Config().SidecarPath())
|
||||
|
||||
// Permanently delete photo from index.
|
||||
// Permanently remove photo from index.
|
||||
files, err := p.DeletePermanently()
|
||||
|
||||
if err != nil {
|
||||
|
|
|
@ -543,7 +543,7 @@ func (m *MediaFile) Exists() bool {
|
|||
return fs.FileExists(m.FileName())
|
||||
}
|
||||
|
||||
// Remove permanently deletes a media file.
|
||||
// Remove permanently removes a media file.
|
||||
func (m *MediaFile) Remove() error {
|
||||
return os.Remove(m.FileName())
|
||||
}
|
||||
|
@ -1036,7 +1036,7 @@ func (m *MediaFile) RenameSidecars(oldFileName string) (renamed map[string]strin
|
|||
return renamed, nil
|
||||
}
|
||||
|
||||
// RemoveSidecars permanently deletes related sidecar files.
|
||||
// RemoveSidecars permanently removes related sidecar files.
|
||||
func (m *MediaFile) RemoveSidecars() (err error) {
|
||||
fileName := m.FileName()
|
||||
sidecarPath := Config().SidecarPath()
|
||||
|
|
|
@ -220,7 +220,7 @@ func (w *Purge) Start(opt PurgeOptions) (purgedFiles map[string]bool, purgedPhot
|
|||
purgedPhotos[photo.PhotoUID] = true
|
||||
|
||||
if opt.Hard {
|
||||
log.Infof("purge: permanently deleted %s", txt.Quote(photo.PhotoName))
|
||||
log.Infof("purge: permanently removed %s", txt.Quote(photo.PhotoName))
|
||||
} else {
|
||||
log.Infof("purge: flagged photo %s as deleted", txt.Quote(photo.PhotoName))
|
||||
}
|
||||
|
|
|
@ -210,7 +210,7 @@ func ResolveFaceCollisions() (conflicts, resolved int, err error) {
|
|||
return conflicts, resolved, nil
|
||||
}
|
||||
|
||||
// RemovePeopleAndFaces permanently deletes all people, faces, and face markers.
|
||||
// RemovePeopleAndFaces permanently removes all people, faces, and face markers.
|
||||
func RemovePeopleAndFaces() (err error) {
|
||||
// Delete people.
|
||||
if err = UnscopedDb().Delete(entity.Subject{}, "subj_type = ?", entity.SubjPerson).Error; err != nil {
|
||||
|
|
|
@ -61,7 +61,7 @@ func SubjectMap() (result map[string]entity.Subject, err error) {
|
|||
return result, err
|
||||
}
|
||||
|
||||
// RemoveOrphanSubjects permanently deletes dangling marker subjects from the index.
|
||||
// RemoveOrphanSubjects permanently removes dangling marker subjects from the index.
|
||||
func RemoveOrphanSubjects() (removed int64, err error) {
|
||||
res := UnscopedDb().
|
||||
Where("subj_src = ?", entity.SrcMarker).
|
||||
|
|
Loading…
Reference in a new issue