From 7edb930240fdd35dc121d859f1cec23ac7c6300a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20=C8=98tefan?= <32664920+rstefan1@users.noreply.github.com> Date: Wed, 31 Oct 2018 05:14:42 +0200 Subject: [PATCH] Add command for migrating database (#4954) --- cmd/migrate.go | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ main.go | 1 + 2 files changed, 53 insertions(+) create mode 100644 cmd/migrate.go diff --git a/cmd/migrate.go b/cmd/migrate.go new file mode 100644 index 000000000..d5dd3068c --- /dev/null +++ b/cmd/migrate.go @@ -0,0 +1,52 @@ +// Copyright 2018 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package cmd + +import ( + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/models/migrations" + "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/setting" + + "github.com/urfave/cli" +) + +// CmdMigrate represents the available migrate sub-command. +var CmdMigrate = cli.Command{ + Name: "migrate", + Usage: "Migrate the database", + Description: "This is a command for migrating the database, so that you can run gitea admin create-user before starting the server.", + Action: runMigrate, + Flags: []cli.Flag{ + cli.StringFlag{ + Name: "config, c", + Value: "custom/conf/app.ini", + Usage: "Custom configuration file path", + }, + }, +} + +func runMigrate(ctx *cli.Context) error { + if ctx.IsSet("config") { + setting.CustomConf = ctx.String("config") + } + + if err := initDB(); err != nil { + return err + } + + log.Trace("AppPath: %s", setting.AppPath) + log.Trace("AppWorkPath: %s", setting.AppWorkPath) + log.Trace("Custom path: %s", setting.CustomPath) + log.Trace("Log path: %s", setting.LogRootPath) + models.LoadConfigs() + + if err := models.NewEngine(migrations.Migrate); err != nil { + log.Fatal(4, "Failed to initialize ORM engine: %v", err) + return err + } + + return nil +} diff --git a/main.go b/main.go index e73f1d60a..a331de473 100644 --- a/main.go +++ b/main.go @@ -47,6 +47,7 @@ arguments - which can alternatively be run by running the subcommand web.` cmd.CmdCert, cmd.CmdAdmin, cmd.CmdGenerate, + cmd.CmdMigrate, } app.Flags = append(app.Flags, []cli.Flag{}...) app.Action = cmd.CmdWeb.Action