summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile6
-rw-r--r--argv.go28
-rw-r--r--globalDisplayOptions.go2
-rw-r--r--main.go69
4 files changed, 104 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 03bff5b..28d730c 100644
--- a/Makefile
+++ b/Makefile
@@ -3,6 +3,12 @@ VERSION = $(shell git describe --tags)
all: build
./guireleaser
+single: build
+ ./guireleaser go.wit.com/apps/go-clone --increment --release --reason "testing guireleaser" --dry-run
+
+single-really-do-it: build
+ ./guireleaser go.wit.com/apps/go-clone --increment --release --reason "testing guireleaser"
+
stderr: build
echo "writing to /tmp/guireleaser.stderr"
./guireleaser >/tmp/guireleaser.stderr 2>&1
diff --git a/argv.go b/argv.go
new file mode 100644
index 0000000..52a6e02
--- /dev/null
+++ b/argv.go
@@ -0,0 +1,28 @@
+package main
+
+/*
+ this parses the command line arguements
+
+ this enables command line options from other packages like 'gui' and 'log'
+*/
+
+type args struct {
+ Repo string `arg:"positional" help:"go import path"`
+ Increment bool `arg:"--increment" help:"auto increment"`
+ Release bool `arg:"--release" help:"do a release an exit"`
+ DryRun bool `arg:"--dry-run" help:"don't actually do the release"`
+ Reason string `arg:"--reason" help:"tag message"`
+}
+
+func (a args) Description() string {
+ return `
+Example usage:
+ guireleaser go.wit.com/apps/go-clone --increment --release --dry-run --reason "blerg"
+
+This will pull down the go sources and
+the repositories in the go.sum file using git clone`
+}
+
+func (args) Version() string {
+ return "go-clone " + VERSION
+}
diff --git a/globalDisplayOptions.go b/globalDisplayOptions.go
index c2ff1d2..2e60176 100644
--- a/globalDisplayOptions.go
+++ b/globalDisplayOptions.go
@@ -186,7 +186,7 @@ func globalDisplayOptions(box *gui.Node) {
repo.Status.IncrementMinorVersion("trying minor")
}
})
- grid.NewButton("ncrement changed repos", func() {
+ grid.NewButton("increment changed repos", func() {
me.Disable()
for _, repo := range me.repos.View.AllRepos() {
if whitelist(repo.GoPath()) {
diff --git a/main.go b/main.go
index 2d261dd..d45509f 100644
--- a/main.go
+++ b/main.go
@@ -4,16 +4,22 @@ import (
"os"
"path/filepath"
+ "github.com/alexflint/go-arg"
"go.wit.com/gui"
+ "go.wit.com/lib/gui/repolist"
"go.wit.com/lib/gui/shell"
"go.wit.com/log"
)
var VERSION string
+var myargs args
func main() {
me = new(autoType)
+ // parse the command line
+ arg.MustParse(&myargs)
+
// save the ENV var here
me.releaseReasonS = os.Getenv("GUIRELEASE_REASON")
@@ -87,6 +93,9 @@ func main() {
// TODO: should not really be necessary directly after init()
me.repos.View.ScanRepositories()
+ // the repo from the command line
+ var myrepo *repolist.RepoRow
+
// find myself. the guireleaser directory is used as a working scratchpad
// for running go commands that can mess up the go.* files
for _, repo := range me.repos.View.AllRepos() {
@@ -95,6 +104,66 @@ func main() {
me.release.guireleaser = repo
}
}
+ if repo.GoPath() == myargs.Repo {
+ myrepo = repo
+ }
+ }
+
+ if myargs.Repo != "" {
+ me.mainWindow.Hide()
+ if myrepo == nil {
+ log.Info("could not find", myargs.Repo)
+ os.Exit(0)
+ }
+ log.Info("only going to do repo:", myrepo.GoPath())
+ tmp := myargs.Reason
+ if tmp == "" {
+ tmp = os.Getenv("GUIRELEASE_REASON")
+ }
+ if tmp == "" {
+ tmp = "made by guireleaser"
+ }
+
+ // increment all the versions
+ for _, repo := range me.repos.View.AllRepos() {
+ if whitelist(repo.GoPath()) {
+ continue
+ }
+ if repo.ReadOnly() {
+ continue
+ }
+ lasttag := repo.Status.LastTag()
+ if repo.Status.GetCurrentVersion() == lasttag {
+ log.Info("skipping unchanged repo", repo.Status.GoPath())
+ repo.Status.SetTargetVersion(lasttag)
+ continue
+ }
+ repo.Status.IncrementRevisionVersion("go-clone")
+ }
+ // rescan all the repos
+ me.repos.View.ScanRepositories()
+
+
+ myrepo.Status.MakeRedomod()
+ myrepo.Status.IncrementRevisionVersion(tmp)
+ _, err := me.repos.View.CheckValidGoSum(myrepo)
+ if err != nil {
+ log.Info("go mod tidy not ok", err)
+ return
+ }
+ if !checkValidGoSum(myrepo) {
+ log.Info("go.sum checks failed")
+ os.Exit(0)
+ }
+ setCurrentRepo(myrepo, "should be good to release", "pretty sure")
+ log.Info("DO THE RELEASE HERE")
+ log.Info("going to release", myrepo.GoPath(), "as version", myrepo.Status.GetTargetVersion())
+ if myargs.DryRun {
+ log.Info("--dry-run == true")
+ } else {
+ doRelease()
+ }
+ os.Exit(0)
}
if me.release.guireleaser == nil {