From bca610fbde82c4b45526dd526d7ddfa6e3bdac70 Mon Sep 17 00:00:00 2001 From: Matthew Holt Date: Fri, 1 May 2020 09:34:32 -0600 Subject: httpcaddyfile: Minor fixes to parsing storage options --- caddyconfig/httpcaddyfile/options.go | 7 +++---- modules/filestorage/filestorage.go | 29 +++++++++++++++++++++++------ 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/caddyconfig/httpcaddyfile/options.go b/caddyconfig/httpcaddyfile/options.go index 072d8f4..2ab73b2 100644 --- a/caddyconfig/httpcaddyfile/options.go +++ b/caddyconfig/httpcaddyfile/options.go @@ -136,14 +136,13 @@ func parseOptOrder(d *caddyfile.Dispenser) ([]string, error) { } func parseOptStorage(d *caddyfile.Dispenser) (caddy.StorageConverter, error) { - if !d.Next() { + if !d.Next() { // consume option name return nil, d.ArgErr() } - args := d.RemainingArgs() - if len(args) != 1 { + if !d.Next() { // get storage module name return nil, d.ArgErr() } - modName := args[0] + modName := d.Val() mod, err := caddy.GetModule("caddy.storage." + modName) if err != nil { return nil, d.Errf("getting storage module '%s': %v", modName, err) diff --git a/modules/filestorage/filestorage.go b/modules/filestorage/filestorage.go index 6e688ef..629dc27 100644 --- a/modules/filestorage/filestorage.go +++ b/modules/filestorage/filestorage.go @@ -48,15 +48,32 @@ func (s *FileStorage) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { if !d.Next() { return d.Err("expected tokens") } - for nesting := d.Nesting(); d.NextBlock(nesting); { - if !d.NextArg() { - return d.ArgErr() - } + if d.NextArg() { s.Root = d.Val() - if d.NextArg() { - return d.ArgErr() + } + if d.NextArg() { + return d.ArgErr() + } + for nesting := d.Nesting(); d.NextBlock(nesting); { + switch d.Val() { + case "root": + if !d.NextArg() { + return d.ArgErr() + } + if s.Root != "" { + return d.Err("root already set") + } + s.Root = d.Val() + if d.NextArg() { + return d.ArgErr() + } + default: + return d.Errf("unrecognized parameter '%s'", d.Val()) } } + if s.Root == "" { + return d.Err("missing root path (to use default, omit storage config entirely)") + } return nil } -- cgit v1.2.3