about summary refs log tree commit diff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go138
1 files changed, 138 insertions, 0 deletions
diff --git a/main.go b/main.go
new file mode 100644
index 000000000000..0b92a913ae59
--- /dev/null
+++ b/main.go
@@ -0,0 +1,138 @@
+package main
+
+import (
+	"os"
+
+	"github.com/tweag/gerrit-queue/frontend"
+	"github.com/tweag/gerrit-queue/gerrit"
+	"github.com/tweag/gerrit-queue/submitqueue"
+
+	"github.com/gin-gonic/gin"
+	"github.com/urfave/cli"
+
+	"fmt"
+
+	log "github.com/sirupsen/logrus"
+)
+
+func main() {
+	// configure logging
+	log.SetFormatter(&log.TextFormatter{})
+	//log.SetFormatter(&log.JSONFormatter{})
+	log.SetOutput(os.Stdout)
+	log.SetLevel(log.DebugLevel)
+
+	var URL, username, password, projectName, branchName, submitQueueTag string
+	var fetchOnly bool
+
+	app := cli.NewApp()
+	app.Name = "gerrit-queue"
+
+	app.Flags = []cli.Flag{
+		cli.StringFlag{
+			Name:        "url",
+			Usage:       "URL to the gerrit instance",
+			EnvVar:      "GERRIT_URL",
+			Destination: &URL,
+			Required:    true,
+		},
+		cli.StringFlag{
+			Name:        "username",
+			Usage:       "Username to use to login to gerrit",
+			EnvVar:      "GERRIT_USERNAME",
+			Destination: &username,
+			Required:    true,
+		},
+		cli.StringFlag{
+			Name:        "password",
+			Usage:       "Password to use to login to gerrit",
+			EnvVar:      "GERRIT_PASSWORD",
+			Destination: &password,
+			Required:    true,
+		},
+		cli.StringFlag{
+			Name:        "project",
+			Usage:       "Gerrit project name to run the submit queue for",
+			EnvVar:      "GERRIT_PROJECT",
+			Destination: &projectName,
+			Required:    true,
+		},
+		cli.StringFlag{
+			Name:        "branch",
+			Usage:       "Destination branch",
+			EnvVar:      "GERRIT_BRANCH",
+			Destination: &branchName,
+			Value:       "master",
+		},
+		cli.StringFlag{
+			Name:        "submit-queue-tag",
+			Usage:       "the tag used to submit something to the submit queue",
+			EnvVar:      "SUBMIT_QUEUE_TAG",
+			Destination: &submitQueueTag,
+			Value:       "submit_me",
+		},
+		cli.BoolFlag{
+			Name:        "fetch-only",
+			Usage:       "Only fetch changes and assemble queue, but don't actually write",
+			Destination: &fetchOnly,
+		},
+	}
+
+	app.Action = func(c *cli.Context) error {
+		gerritClient, err := gerrit.NewClient(URL, username, password)
+		if err != nil {
+			return err
+		}
+		log.Printf("Successfully connected to gerrit at %s", URL)
+
+		submitQueue := submitqueue.MakeSubmitQueue(gerritClient, projectName, branchName, submitQueueTag)
+
+		router := gin.Default()
+		frontend := frontend.MakeFrontend(router, &submitQueue)
+
+		err = submitQueue.LoadSeries()
+		if err != nil {
+			log.Errorf("Error loading submit queue: %s", err)
+		}
+
+		fmt.Println()
+		fmt.Println()
+		fmt.Println()
+		fmt.Println()
+		for _, serie := range submitQueue.Series {
+			fmt.Println(fmt.Sprintf("%s", serie))
+			for _, changeset := range serie.ChangeSets {
+				fmt.Println(fmt.Sprintf(" - %s", changeset.String()))
+			}
+			fmt.Println()
+		}
+
+		frontend.Run(":8080")
+
+		if fetchOnly {
+			//return backlog.Run()
+		}
+
+		return nil
+	}
+
+	err := app.Run(os.Args)
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	// mux := http.NewServeMux()
+
+	// options := &gerrit.EventsLogOptions{}
+	// events, _, _, err := gerritClient.EventsLog.GetEvents(options)
+
+	// TODOS:
+	// - create submit queue user
+	// - handle event log, either by accepting webhooks, or by streaming events?
+
+	//n := negroni.Classic()
+	//n.UseHandler(mux)
+
+	//fmt.Println("Listening on :3000…")
+	//http.ListenAndServe(":3000", n)
+}