diff --git a/storage/pkg/command/authbasic.go b/storage/pkg/command/authbasic.go index 2772c35975..bcd05f5d45 100644 --- a/storage/pkg/command/authbasic.go +++ b/storage/pkg/command/authbasic.go @@ -6,6 +6,7 @@ import ( "os" "os/signal" "path" + "path/filepath" "time" "github.com/cs3org/reva/cmd/revad/runtime" @@ -67,6 +68,13 @@ func AuthBasic(cfg *config.Config) *cli.Command { defer cancel() + // precreate folders + if cfg.Reva.AuthProvider.Driver == "json" && cfg.Reva.AuthProvider.JSON != "" { + if err := os.MkdirAll(filepath.Dir(cfg.Reva.AuthProvider.JSON), os.ModeExclusive); err != nil { + return err + } + } + { uuid := uuid.Must(uuid.NewV4()) diff --git a/storage/pkg/command/groups.go b/storage/pkg/command/groups.go index 4cda6fc335..283634e2bf 100644 --- a/storage/pkg/command/groups.go +++ b/storage/pkg/command/groups.go @@ -6,6 +6,7 @@ import ( "os" "os/signal" "path" + "path/filepath" "time" "github.com/cs3org/reva/cmd/revad/runtime" @@ -64,8 +65,16 @@ func Groups(cfg *config.Config) *cli.Command { ctx, cancel = context.WithCancel(context.Background()) //metrics = metrics.New() ) + defer cancel() + // precreate folders + if cfg.Reva.Groups.Driver == "json" && cfg.Reva.Groups.JSON != "" { + if err := os.MkdirAll(filepath.Dir(cfg.Reva.Groups.JSON), os.ModeExclusive); err != nil { + return err + } + } + { uuid := uuid.Must(uuid.NewV4()) pidFile := path.Join(os.TempDir(), "revad-"+c.Command.Name+"-"+uuid.String()+".pid") diff --git a/storage/pkg/command/sharing.go b/storage/pkg/command/sharing.go index b0b6c8de69..6eb4becb08 100644 --- a/storage/pkg/command/sharing.go +++ b/storage/pkg/command/sharing.go @@ -6,6 +6,7 @@ import ( "os" "os/signal" "path" + "path/filepath" "time" "github.com/cs3org/reva/cmd/revad/runtime" @@ -67,6 +68,18 @@ func Sharing(cfg *config.Config) *cli.Command { defer cancel() + // precreate folders + if cfg.Reva.Sharing.UserDriver == "json" && cfg.Reva.Sharing.UserJSONFile != "" { + if err := os.MkdirAll(filepath.Dir(cfg.Reva.Sharing.UserJSONFile), os.ModeExclusive); err != nil { + return err + } + } + if cfg.Reva.Sharing.PublicDriver == "json" && cfg.Reva.Sharing.PublicJSONFile != "" { + if err := os.MkdirAll(filepath.Dir(cfg.Reva.Sharing.PublicJSONFile), os.ModeExclusive); err != nil { + return err + } + } + { uuid := uuid.Must(uuid.NewV4()) diff --git a/storage/pkg/command/users.go b/storage/pkg/command/users.go index 67004ac80a..801a9e1c6f 100644 --- a/storage/pkg/command/users.go +++ b/storage/pkg/command/users.go @@ -6,6 +6,7 @@ import ( "os" "os/signal" "path" + "path/filepath" "time" "github.com/cs3org/reva/cmd/revad/runtime" @@ -67,6 +68,13 @@ func Users(cfg *config.Config) *cli.Command { defer cancel() + // precreate folders + if cfg.Reva.Users.Driver == "json" && cfg.Reva.Users.JSON != "" { + if err := os.MkdirAll(filepath.Dir(cfg.Reva.Users.JSON), os.ModeExclusive); err != nil { + return err + } + } + { uuid := uuid.Must(uuid.NewV4()) pidFile := path.Join(os.TempDir(), "revad-"+c.Command.Name+"-"+uuid.String()+".pid")