mirror of
https://github.com/wahyd4/forego.git
synced 2026-08-09 05:07:05 +10:00
Add flag to customize shutdown gracetime (#84)
This commit is contained in:
committed by
David Dollar
parent
733e197575
commit
9bebfece50
@@ -1,3 +1,4 @@
|
||||
procfile: Procfile.dev
|
||||
concurrency: foo=2,bar=3
|
||||
port: 15000
|
||||
shutdown_grace_time: 30
|
||||
|
||||
@@ -13,17 +13,18 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
const shutdownGraceTime = 3 * time.Second
|
||||
const defaultPort = 5000
|
||||
const defaultShutdownGraceTime = 3
|
||||
|
||||
var flagPort int
|
||||
var flagConcurrency string
|
||||
var flagRestart bool
|
||||
var flagShutdownGraceTime int
|
||||
var envs envFiles
|
||||
|
||||
var cmdStart = &Command{
|
||||
Run: runStart,
|
||||
Usage: "start [process name] [-f procfile] [-e env] [-c concurrency] [-p port] [-r]",
|
||||
Usage: "start [process name] [-f procfile] [-e env] [-c concurrency] [-p port] [-t timeout] [-r]",
|
||||
Short: "Start the application",
|
||||
Long: `
|
||||
Start the application specified by a Procfile (defaults to ./Procfile)
|
||||
@@ -33,6 +34,7 @@ Examples:
|
||||
forego start
|
||||
forego start web
|
||||
forego start -f Procfile.test -e .env.test
|
||||
forego start -t 30
|
||||
`,
|
||||
}
|
||||
|
||||
@@ -42,11 +44,12 @@ func init() {
|
||||
cmdStart.Flag.IntVar(&flagPort, "p", defaultPort, "port")
|
||||
cmdStart.Flag.StringVar(&flagConcurrency, "c", "", "concurrency")
|
||||
cmdStart.Flag.BoolVar(&flagRestart, "r", false, "restart")
|
||||
err := readConfigFile(".forego", &flagProcfile, &flagPort, &flagConcurrency)
|
||||
cmdStart.Flag.IntVar(&flagShutdownGraceTime, "t", defaultShutdownGraceTime, "shutdown grace time")
|
||||
err := readConfigFile(".forego", &flagProcfile, &flagPort, &flagConcurrency, &flagShutdownGraceTime)
|
||||
handleError(err)
|
||||
}
|
||||
|
||||
func readConfigFile(config_path string, flagProcfile *string, flagPort *int, flagConcurrency *string) error {
|
||||
func readConfigFile(config_path string, flagProcfile *string, flagPort *int, flagConcurrency *string, flagShutdownGraceTime *int) error {
|
||||
config, err := ReadConfig(config_path)
|
||||
|
||||
if config["procfile"] != "" {
|
||||
@@ -59,6 +62,11 @@ func readConfigFile(config_path string, flagProcfile *string, flagPort *int, fla
|
||||
} else {
|
||||
*flagPort = defaultPort
|
||||
}
|
||||
if config["shutdown_grace_time"] != "" {
|
||||
*flagShutdownGraceTime, err = strconv.Atoi(config["shutdown_grace_time"])
|
||||
} else {
|
||||
*flagShutdownGraceTime = defaultShutdownGraceTime
|
||||
}
|
||||
*flagConcurrency = config["concurrency"]
|
||||
return err
|
||||
}
|
||||
@@ -237,7 +245,7 @@ func runStart(cmd *Command, args []string) {
|
||||
// When teardown fires, start the grace timer
|
||||
f.teardown.FallHook = func() {
|
||||
go func() {
|
||||
time.Sleep(shutdownGraceTime)
|
||||
time.Sleep(time.Duration(flagShutdownGraceTime) * time.Second)
|
||||
of.SystemOutput("Grace time expired")
|
||||
f.teardownNow.Fall()
|
||||
}()
|
||||
|
||||
+6
-1
@@ -150,7 +150,8 @@ func TestConfigBeOverrideByForegoFile(t *testing.T) {
|
||||
var procfile = "Profile"
|
||||
var port = 5000
|
||||
var concurrency string = "web=2"
|
||||
err := readConfigFile("./fixtures/configs/.forego", &procfile, &port, &concurrency)
|
||||
var gracetime int = 3
|
||||
err := readConfigFile("./fixtures/configs/.forego", &procfile, &port, &concurrency, &gracetime)
|
||||
|
||||
if err != nil {
|
||||
t.Fatalf("Cannot set default values from forego config file")
|
||||
@@ -167,4 +168,8 @@ func TestConfigBeOverrideByForegoFile(t *testing.T) {
|
||||
if concurrency != "foo=2,bar=3" {
|
||||
t.Fatal("concurrency should be 'foo=2,bar=3', got %s", concurrency)
|
||||
}
|
||||
|
||||
if gracetime != 30 {
|
||||
t.Fatal("gracetime should be 3, got %d", gracetime)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user