main.go (2020B)
1 package main 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/theSage21/jaypore_ci/internal/jci" 8 ) 9 10 // version is set at build time via -ldflags "-X main.version=<version>". 11 // It falls back to "dev" when built without the flag (e.g. go run). 12 var version = "dev" 13 14 func main() { 15 if len(os.Args) < 2 { 16 printUsage() 17 os.Exit(1) 18 } 19 20 cmd := os.Args[1] 21 args := os.Args[2:] 22 23 var err error 24 switch cmd { 25 case "run": 26 err = jci.Run(args) 27 case "web": 28 err = jci.Web(args) 29 case "push": 30 err = jci.Push(args) 31 case "pull": 32 err = jci.Pull(args) 33 case "prune": 34 err = jci.Prune(args) 35 case "cron": 36 err = jci.Cron(args) 37 case "server": 38 err = jci.Server(args) 39 case "runner": 40 err = jci.Runner(args) 41 case "version", "--version", "-v": 42 fmt.Println("git-jci version " + version) 43 return 44 case "help", "-h", "--help": 45 printUsage() 46 return 47 default: 48 fmt.Fprintf(os.Stderr, "unknown command: %s\n", cmd) 49 printUsage() 50 os.Exit(1) 51 } 52 53 if err != nil { 54 fmt.Fprintf(os.Stderr, "error: %v\n", err) 55 os.Exit(1) 56 } 57 } 58 59 func printUsage() { 60 fmt.Printf(`git-jci %s - Local-first CI system stored in git 61 62 Usage: git jci <command> [options] 63 64 Commands: 65 run [--multi] Run CI for the current commit and store results 66 web Start a web server to view CI results 67 push Push CI results to remote 68 pull Pull CI results from remote 69 prune Remove old CI results 70 cron ls List cron jobs for this repository 71 cron sync Sync .jci/crontab with system cron 72 server Run the coordination server (webhook + runner poll) 73 runner Run the job runner (polls server, dispatches Docker containers) 74 version Print the version and exit 75 76 CI results are stored in refs/jci-runs/<commit>/<runid>. 77 78 Distributed CI env vars (server): 79 GITEA_HOST, GITEA_USER, GITEA_TOKEN, GITEA_WEBHOOK_SECRET, 80 JCI_RUNNER_SECRET, JCI_MAX_JOBS, JCI_JOB_TIMEOUT, JCI_LISTEN, JCI_DB 81 82 Distributed CI env vars (runner): 83 JCI_SERVER, JCI_RUNNER_SECRET, JCI_RUNNER_DB, JCI_BINARY`, version) 84 }