// Copyright 2017-2025 WIT.COM Inc. All rights reserved. // Use of this source code is governed by the GPL 3.0 package main import ( "errors" "fmt" "go.wit.com/lib/env" "go.wit.com/lib/protobuf/argvpb" "go.wit.com/log" ) func doPublish() error { initForge() // publish := me.forge.RunOnReposNewDumb(me.forge.Repos, rePrepareReleaseNew) // doesn't use Rill() publish := me.forge.RunOnReposNew(me.forge.Repos, rePrepareReleaseNew) if publish == nil { return errors.New("nothing to publish. you actually have to write code first") } for repo := range publish.IterAll() { // update the target version // repo.IncrementTargetMinor() repo.IncrementTargetRevision() } publish = publish.SortActual() footer := publish.PrintPublishNewTB() fmt.Printf("publish.len(%d) PrintPublishTable() footer: %s\n", publish.Len(), footer) tryme := findNext(publish) if len(tryme) == 0 { return errors.New("can't find something safe to publish") } startRepo := me.forge.Repos.FindByNamespace("go.wit.com/lib/xgb") if startRepo == nil { return errors.New("a startRepo can't be found") } releaseReason := "new attempt" for i, repo := range tryme { log.Info("tryme:", i, repo.FullPath) if env.True("--doit") { err := doRelease(repo, startRepo, releaseReason) if err != nil { return err } } log.Printf("WOULD HAVE RUN: doRelease(%s, %s, %s) %s\n", repo.Namespace, startRepo.Namespace, releaseReason, repo.GetTargetVersion()) } if !env.True("--doit") { return errors.New("run with --doit to actually try to publish") } // me.forge.RillFuncError(rillPurge) /* saferepo := me.forge.Repos.FindByNamespace("go.wit.com/lib/xgb") // safe to run things here if saferepo == nil { return log.Errorf("need a safe place to run GO commands from") } os.Chdir(saferepo.FullPath) if os.Getenv("GUIRELEASE_REASON") == "" { log.Info("$ENV[GUIRELEASE_REASON] was not set") reason := fhelp.InputFromUser("set tag message:") if reason == "" { argvpb.BadExit("merge failed", fmt.Errorf("GUIRELEASE_REASON was blank")) } os.Setenv("GUIRELEASE_REASON", reason) } var cmd []string cmd = []string{"forge", "merge", "--all"} if _, err := shell.RunRealtimeError(cmd); err != nil { argvpb.BadExit("merge failed", nil) } cmd = []string{"forge", "merge", "check"} if _, err := shell.RunRealtimeError(cmd); err != nil { if _, err := shell.RunVerbose(cmd); err != nil { argvpb.BadExit("merge failed", nil) } } // todo: os.Stat() file time.Sleep(time.Second) me.forge.Repos.Load() if err := doInstall(me.forge.Repos); err != nil { log.Info("doInstall() failed", err) argvpb.BadExit("merge failed", nil) } if os.Getenv("GUIRELEASE_REASON") == "" { os.Setenv("GUIRELEASE_REASON", "automated") } */ argvpb.GoodExit("PUBLISH WORKED") return nil }