Add config flag for read-only mode, see #56
This commit is contained in:
parent
7074faabe0
commit
e565195f23
3
go.sum
3
go.sum
|
@ -9,7 +9,9 @@ github.com/DATA-DOG/go-sqlmock v1.3.3 h1:CWUqKXe0s8A2z6qCgkP4Kru7wC11YoAnoupUKFD
|
||||||
github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
|
github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
|
||||||
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
|
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
|
||||||
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
|
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
|
||||||
|
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU=
|
||||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||||
|
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY=
|
||||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||||
github.com/apache/thrift v0.0.0-20161221203622-b2a4d4ae21c7 h1:Fv9bK1Q+ly/ROk4aJsVMeuIwPel4bEnD8EPiI91nZMg=
|
github.com/apache/thrift v0.0.0-20161221203622-b2a4d4ae21c7 h1:Fv9bK1Q+ly/ROk4aJsVMeuIwPel4bEnD8EPiI91nZMg=
|
||||||
github.com/apache/thrift v0.0.0-20161221203622-b2a4d4ae21c7/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
|
github.com/apache/thrift v0.0.0-20161221203622-b2a4d4ae21c7/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
|
||||||
|
@ -357,6 +359,7 @@ google.golang.org/grpc v1.17.0 h1:TRJYBgMclJvGYn2rIMjj+h9KtMt5r1Ij7ODVRIZkwhk=
|
||||||
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
|
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
|
||||||
google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8=
|
google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8=
|
||||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
|
gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
|
||||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
||||||
|
|
|
@ -22,6 +22,7 @@ func configAction(ctx *cli.Context) error {
|
||||||
fmt.Printf("version %s\n", app.Version())
|
fmt.Printf("version %s\n", app.Version())
|
||||||
fmt.Printf("copyright %s\n", app.Copyright())
|
fmt.Printf("copyright %s\n", app.Copyright())
|
||||||
fmt.Printf("debug %t\n", app.Debug())
|
fmt.Printf("debug %t\n", app.Debug())
|
||||||
|
fmt.Printf("read-only %t\n", app.ReadOnly())
|
||||||
fmt.Printf("log-level %s\n", app.LogLevel())
|
fmt.Printf("log-level %s\n", app.LogLevel())
|
||||||
fmt.Printf("config-file %s\n", app.ConfigFile())
|
fmt.Printf("config-file %s\n", app.ConfigFile())
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ var MigrateCommand = cli.Command{
|
||||||
}
|
}
|
||||||
|
|
||||||
func migrateAction(ctx *cli.Context) error {
|
func migrateAction(ctx *cli.Context) error {
|
||||||
app := context.NewContext( ctx)
|
app := context.NewContext(ctx)
|
||||||
|
|
||||||
log.Infoln("migrating database")
|
log.Infoln("migrating database")
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@ type Config struct {
|
||||||
Version string
|
Version string
|
||||||
Copyright string
|
Copyright string
|
||||||
Debug bool `yaml:"debug" flag:"debug"`
|
Debug bool `yaml:"debug" flag:"debug"`
|
||||||
|
ReadOnly bool `yaml:"read-only" flag:"read-only"`
|
||||||
LogLevel string `yaml:"log-level" flag:"log-level"`
|
LogLevel string `yaml:"log-level" flag:"log-level"`
|
||||||
ConfigFile string
|
ConfigFile string
|
||||||
AssetsPath string `yaml:"assets-path" flag:"assets-path"`
|
AssetsPath string `yaml:"assets-path" flag:"assets-path"`
|
||||||
|
|
|
@ -19,6 +19,7 @@ func TestNewConfig(t *testing.T) {
|
||||||
|
|
||||||
assert.Equal(t, fsutil.ExpandedFilename("../../assets"), c.AssetsPath)
|
assert.Equal(t, fsutil.ExpandedFilename("../../assets"), c.AssetsPath)
|
||||||
assert.False(t, c.Debug)
|
assert.False(t, c.Debug)
|
||||||
|
assert.False(t, c.ReadOnly)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestConfig_SetValuesFromFile(t *testing.T) {
|
func TestConfig_SetValuesFromFile(t *testing.T) {
|
||||||
|
@ -29,6 +30,7 @@ func TestConfig_SetValuesFromFile(t *testing.T) {
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|
||||||
assert.False(t, c.Debug)
|
assert.False(t, c.Debug)
|
||||||
|
assert.False(t, c.ReadOnly)
|
||||||
assert.Equal(t, "/srv/photoprism", c.AssetsPath)
|
assert.Equal(t, "/srv/photoprism", c.AssetsPath)
|
||||||
assert.Equal(t, "/srv/photoprism/cache", c.CachePath)
|
assert.Equal(t, "/srv/photoprism/cache", c.CachePath)
|
||||||
assert.Equal(t, "/srv/photoprism/photos/originals", c.OriginalsPath)
|
assert.Equal(t, "/srv/photoprism/photos/originals", c.OriginalsPath)
|
||||||
|
|
|
@ -20,7 +20,7 @@ type Context struct {
|
||||||
config *Config
|
config *Config
|
||||||
}
|
}
|
||||||
|
|
||||||
func initLogger(debug bool) {
|
func initLogger(debug bool) {
|
||||||
log.SetFormatter(&log.TextFormatter{
|
log.SetFormatter(&log.TextFormatter{
|
||||||
DisableColors: false,
|
DisableColors: false,
|
||||||
FullTimestamp: true,
|
FullTimestamp: true,
|
||||||
|
@ -162,6 +162,11 @@ func (c *Context) Debug() bool {
|
||||||
return c.config.Debug
|
return c.config.Debug
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReadOnly returns true if photo directories are write protected.
|
||||||
|
func (c *Context) ReadOnly() bool {
|
||||||
|
return c.config.ReadOnly
|
||||||
|
}
|
||||||
|
|
||||||
// LogLevel returns the logrus log level.
|
// LogLevel returns the logrus log level.
|
||||||
func (c *Context) LogLevel() log.Level {
|
func (c *Context) LogLevel() log.Level {
|
||||||
if c.Debug() {
|
if c.Debug() {
|
||||||
|
@ -364,6 +369,7 @@ func (c *Context) ClientConfig() ClientConfig {
|
||||||
"version": c.Version(),
|
"version": c.Version(),
|
||||||
"copyright": c.Copyright(),
|
"copyright": c.Copyright(),
|
||||||
"debug": c.Debug(),
|
"debug": c.Debug(),
|
||||||
|
"readonly": c.ReadOnly(),
|
||||||
"cameras": cameras,
|
"cameras": cameras,
|
||||||
"countries": countries,
|
"countries": countries,
|
||||||
"jsHash": jsHash,
|
"jsHash": jsHash,
|
||||||
|
|
|
@ -19,4 +19,5 @@ func TestNewContext(t *testing.T) {
|
||||||
|
|
||||||
assert.Equal(t, fsutil.ExpandedFilename("../../assets"), c.AssetsPath())
|
assert.Equal(t, fsutil.ExpandedFilename("../../assets"), c.AssetsPath())
|
||||||
assert.False(t, c.Debug())
|
assert.False(t, c.Debug())
|
||||||
|
assert.False(t, c.ReadOnly())
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,11 @@ var GlobalFlags = []cli.Flag{
|
||||||
Usage: "run in debug mode",
|
Usage: "run in debug mode",
|
||||||
EnvVar: "PHOTOPRISM_DEBUG",
|
EnvVar: "PHOTOPRISM_DEBUG",
|
||||||
},
|
},
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "read-only, r",
|
||||||
|
Usage: "run in read-only mode",
|
||||||
|
EnvVar: "PHOTOPRISM_READ_ONLY",
|
||||||
|
},
|
||||||
cli.StringFlag{
|
cli.StringFlag{
|
||||||
Name: "config-file, c",
|
Name: "config-file, c",
|
||||||
Usage: "load configuration from `FILENAME`",
|
Usage: "load configuration from `FILENAME`",
|
||||||
|
|
Loading…
Reference in a new issue