diff --git a/pkg/cmd/cmd.go b/pkg/cmd/cmd.go index 6aec6c04c8..53a4f79043 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 165d8639d5..a53387c8af 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 03a384493f..95b9cf5190 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 e264f7bee2..2761b86ae1 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