|
|
- // Copyright 2020 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 (
- "fmt"
- "net/http"
- "os"
- "time"
-
- "code.gitea.io/gitea/modules/private"
-
- "github.com/urfave/cli"
- )
-
- var (
- // CmdManager represents the manager command
- CmdManager = cli.Command{
- Name: "manager",
- Usage: "Manage the running gitea process",
- Description: "This is a command for managing the running gitea process",
- Subcommands: []cli.Command{
- subcmdShutdown,
- subcmdRestart,
- subcmdFlushQueues,
- },
- }
- subcmdShutdown = cli.Command{
- Name: "shutdown",
- Usage: "Gracefully shutdown the running process",
- Action: runShutdown,
- }
- subcmdRestart = cli.Command{
- Name: "restart",
- Usage: "Gracefully restart the running process - (not implemented for windows servers)",
- Action: runRestart,
- }
- subcmdFlushQueues = cli.Command{
- Name: "flush-queues",
- Usage: "Flush queues in the running process",
- Action: runFlushQueues,
- Flags: []cli.Flag{
- cli.DurationFlag{
- Name: "timeout",
- Value: 60 * time.Second,
- Usage: "Timeout for the flushing process",
- },
- cli.BoolFlag{
- Name: "non-blocking",
- Usage: "Set to true to not wait for flush to complete before returning",
- },
- },
- }
- )
-
- func runShutdown(c *cli.Context) error {
- setup("manager", false)
- statusCode, msg := private.Shutdown()
- switch statusCode {
- case http.StatusInternalServerError:
- fail("InternalServerError", msg)
- }
-
- fmt.Fprintln(os.Stdout, msg)
- return nil
- }
-
- func runRestart(c *cli.Context) error {
- setup("manager", false)
- statusCode, msg := private.Restart()
- switch statusCode {
- case http.StatusInternalServerError:
- fail("InternalServerError", msg)
- }
-
- fmt.Fprintln(os.Stdout, msg)
- return nil
- }
-
- func runFlushQueues(c *cli.Context) error {
- setup("manager", false)
- statusCode, msg := private.FlushQueues(c.Duration("timeout"), c.Bool("non-blocking"))
- switch statusCode {
- case http.StatusInternalServerError:
- fail("InternalServerError", msg)
- }
-
- fmt.Fprintln(os.Stdout, msg)
- return nil
- }
|