From f5e44d9eb32355d63866ced4f52e538dc70c7a60 Mon Sep 17 00:00:00 2001 From: kolaente Date: Sat, 13 Jun 2020 19:44:45 +0200 Subject: [PATCH] Reorganize cmd init functions --- pkg/cmd/cmd.go | 17 ++++++++++------- pkg/cmd/migrate.go | 3 +++ pkg/cmd/testmail.go | 6 ++++++ pkg/cmd/web.go | 3 +++ 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/pkg/cmd/cmd.go b/pkg/cmd/cmd.go index 6aec6c04..53a4f790 100644 --- a/pkg/cmd/cmd.go +++ b/pkg/cmd/cmd.go @@ -31,10 +31,6 @@ import ( "os" ) -func init() { - cobra.OnInitialize(initialize) -} - var rootCmd = &cobra.Command{ Use: "vikunja", Short: "Vikunja is the to-do app to organize your life.", @@ -47,7 +43,8 @@ alpine areas of the Andes and a relative of the llama. Vikunja is a self-hosted To-Do list application with a web app and mobile apps for all platforms. It is licensed under the GPLv3. Find more info at vikunja.io.`, - Run: webCmd.Run, + PreRun: webCmd.PreRun, + Run: webCmd.Run, } // Execute starts the application @@ -58,8 +55,8 @@ func Execute() { } } -// Initializes all kinds of things in the right order -func initialize() { +// Will only fullInit config, redis, logger but no db connection. +func lightInit() { // Init the config config.InitConfig() @@ -68,6 +65,12 @@ func initialize() { // Set logger log.InitLogger() +} + +// Initializes all kinds of things in the right order +func fullInit() { + + lightInit() // Run the migrations migration.Migrate(nil) diff --git a/pkg/cmd/migrate.go b/pkg/cmd/migrate.go index 165d8639..a53387c8 100644 --- a/pkg/cmd/migrate.go +++ b/pkg/cmd/migrate.go @@ -35,6 +35,9 @@ func init() { var migrateCmd = &cobra.Command{ Use: "migrate", Short: "Run all database migrations which didn't already run.", + PersistentPreRun: func(cmd *cobra.Command, args []string) { + lightInit() + }, Run: func(cmd *cobra.Command, args []string) { migration.Migrate(nil) }, diff --git a/pkg/cmd/testmail.go b/pkg/cmd/testmail.go index 03a38449..95b9cf51 100644 --- a/pkg/cmd/testmail.go +++ b/pkg/cmd/testmail.go @@ -30,6 +30,12 @@ var testmailCmd = &cobra.Command{ Use: "testmail [email]", Short: "Send a test mail using the configured smtp connection", Args: cobra.ExactArgs(1), + PreRun: func(cmd *cobra.Command, args []string) { + lightInit() + + // Start the mail daemon + mail.StartMailDaemon() + }, Run: func(cmd *cobra.Command, args []string) { log.Info("Sending testmail...") email := args[0] diff --git a/pkg/cmd/web.go b/pkg/cmd/web.go index e264f7be..2761b86a 100644 --- a/pkg/cmd/web.go +++ b/pkg/cmd/web.go @@ -36,6 +36,9 @@ func init() { var webCmd = &cobra.Command{ Use: "web", Short: "Starts the rest api web server", + PreRun: func(cmd *cobra.Command, args []string) { + fullInit() + }, Run: func(cmd *cobra.Command, args []string) { // Version notification