feat: add initial scheduled task implementation

This functionality enables users to manage a global crontab for the Dokku user that contains all scheduled tasks across all apps. Alternative schedulers can implement cron tasks as desired.
This commit is contained in:
Jose Diaz-Gonzalez
2021-01-18 18:15:42 -05:00
parent e00e498e50
commit f7ef14d737
23 changed files with 1026 additions and 391 deletions

View File

@@ -0,0 +1,41 @@
package main
import (
"fmt"
"os"
"strings"
"github.com/dokku/dokku/plugins/common"
"github.com/dokku/dokku/plugins/cron"
flag "github.com/spf13/pflag"
)
// main entrypoint to all subcommands
func main() {
parts := strings.Split(os.Args[0], "/")
subcommand := parts[len(parts)-1]
var err error
switch subcommand {
case "list":
args := flag.NewFlagSet("cron:list", flag.ExitOnError)
args.Parse(os.Args[2:])
appName := args.Arg(0)
err = cron.CommandList(appName)
case "report":
args := flag.NewFlagSet("cron:report", flag.ExitOnError)
osArgs, infoFlag, flagErr := common.ParseReportArgs("cron", os.Args[2:])
if flagErr == nil {
args.Parse(osArgs)
appName := args.Arg(0)
err = cron.CommandReport(appName, infoFlag)
}
default:
common.LogFail(fmt.Sprintf("Invalid plugin subcommand call: %s", subcommand))
}
if err != nil {
common.LogFail(err.Error())
}
}