package main

import (
	"os"
	"strings"

	"go.wit.com/lib/gui/repostatus"
	"go.wit.com/log"

	"go.wit.com/gui"
)

// things being testing
func globalTestingOptions(box *gui.Node) {
	test1 := box.NewGroup("testing build")
	me.autoRebuildButton = test1.NewButton("rebuild autotypist", func() {
		me.autoRebuildButton.Disable()
		me.autoRebuildButton.SetLabel("running....")
		attemptAutoRebuild()
		me.autoRebuildButton.Enable()
		me.autoRebuildButton.SetLabel("rebuild autotypist")
	})

	me.downloadEverythingButton = test1.NewButton("go get go.wit.com", func() {
		me.downloadEverythingButton.Disable()
		me.autoWorkingPwd.SetValue("/home/jcarr/go/src")
		var perfect bool = true
		repos := myrepolist()
		for _, line := range repos {
			log.Verbose("repo =", line)
			path, _, _, _ := splitLine(line)
			path = strings.TrimSpace(path)
			if path == "#" {
				// skip comment lines
				continue
			}
			if doesExist("/home/jcarr/go/src/" + path) {
				continue
			}
			// attempt to download it
			quickCmd("/home/jcarr/go/src/go.wit.com", []string{"go", "get", "-v", path})
			perfect = false
		}

		if perfect {
			var notes string
			notes = "you have already downloaded\neverything on go.wit.com"
			me.autoWorkingPwd.SetValue(notes)
			me.downloadEverythingButton.Disable()
			return
		} else {
			var notes string
			notes = "download everything failed"
			me.autoWorkingPwd.SetValue(notes)
			me.downloadEverythingButton.Enable()
		}
	})
	test1.NewButton("build all apps", func() {
		listWindow()
	})
	test1.NewButton("repostatus.ListAll()", func() {
		repostatus.ListAll()
	})
	test1.NewButton("repostatus.ScanGoSrc()", func() {
		repostatus.ScanGoSrc()
	})
}

func attemptAutoRebuild() {
	os.Setenv("GO111MODULE", "off")

	fullpath := "/home/jcarr/go/"
	quickCmd(fullpath, []string{"mkdir", "-p", "/home/jcarr/go/src/go.wit.com/apps/"})
	fullpath = "/home/jcarr/go/src/go.wit.com/apps/"

	quickCmd(fullpath, []string{"go", "get", "-v", "go.wit.com/apps/autotypist"})
	quickCmd(fullpath, []string{"go", "get", "-v", "go.wit.com/toolkits/debian"})
	quickCmd(fullpath, []string{"go", "get", "-v", "go.wit.com/toolkits/tree"})
	quickCmd(fullpath, []string{"go", "get", "-v", "go.wit.com/toolkits/nocui"})
	quickCmd(fullpath, []string{"go", "get", "-v", "go.wit.com/toolkits/gocui"})
	quickCmd(fullpath, []string{"go", "get", "-v", "go.wit.com/toolkits/andlabs"})

	fullpath = "/home/jcarr/go/src/go.wit.com/toolkits/nocui/"
	quickCmd(fullpath, []string{"go", "get", "-v", "-u", "."})
	quickCmd(fullpath, []string{"go", "build", "-v", "-x", "-buildmode=plugin", "-o", "../nocui.so"})

	fullpath = "/home/jcarr/go/src/go.wit.com/toolkits/gocui/"
	quickCmd(fullpath, []string{"go", "get", "-v", "-u", "."})
	quickCmd(fullpath, []string{"go", "build", "-v", "-x", "-buildmode=plugin", "-o", "../gocui.so"})

	fullpath = "/home/jcarr/go/src/go.wit.com/toolkits/andlabs/"
	quickCmd(fullpath, []string{"go", "get", "-v", "-u", "."})
	quickCmd(fullpath, []string{"go", "build", "-v", "-x", "-buildmode=plugin", "-o", "../andlabs.so"})

	fullpath = "/home/jcarr/go/src/go.wit.com/apps/autotypist"
	quickCmd(fullpath, []string{"go", "get", "-v", "-u", "."})
	quickCmd(fullpath, []string{"go", "build", "-v", "-x"})
}