package main

import (
	"os"

	"go.wit.com/lib/gui/repolist"
	"go.wit.com/log"
)

func doSingleRepo(myRepoName string) {
	// 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() {
	myrepo = me.repos.View.FindRepoByName(myRepoName)

	me.mainWindow.Disable()
	defer me.mainWindow.Enable()
	if myrepo == nil {
		log.Info("could not find", myargs.Repo)

	}
	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 {
		log.Info("--dry-run == true")
		// doRelease()
	}
}