summaryrefslogtreecommitdiff
path: root/setTargetVersion.go
blob: 017649f1f54ccb2cb14004457c574fa9204540dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package main

import (
	"os"
	"strings"

	"go.wit.com/log"
)

func setTargetVersion() {
	// go through and set the target versions for each repo
	// todo: add sanity checking in repolist to verify these and/or autocompute them
	// for now, just don't be stupid when you set your ENV vars
	// widget I versioned early before I knew what the hell this would mean and can
	// not be down versioned because that's not how GO versioning works. Once you
	// set the version for a path, it's set in stone forever. (smart system!)
	// we could rename go.wit.com/widget to go.wit.com/newwidget and restart the versioning
	// system, but that's rediculous and this servers to always remind me to never make this mistake again
	var count int
	for i, repo := range me.repos.View.AllRepos() {
		if repo == nil {
			log.Info("initial scan repo = nil", i)
			continue
		}

		if repo.Status == nil {
			log.Info("repo.status == nil", repo.Name())
			continue
		}

		if repo.GoPath() == "go.wit.com/widget" {
			repo.Status.SetTargetVersion("v" + os.Getenv("GUIRELEASE_WIDGET"))
		} else {
			prefix := "v" + os.Getenv("GUIRELEASE_VERSION")
			lasttag := repo.Status.LastTag()
			if strings.HasPrefix(lasttag, prefix) {
				repo.Status.SetTargetVersion(lasttag)
			} else {
				repo.Status.SetTargetVersion(prefix)
			}
		}
		if strings.HasPrefix(repo.GoPath(), "go.wit.com/dev/") {
			lasttag := repo.Status.GetLastTagVersion()
			repo.Status.SetTargetVersion(lasttag)
		}
		// repo.NewScan()
		count += 1
	}
	log.Info("target versions set for", count, "repos")
}

// trys to figure out if the version needs to be incremented
func incrementTargetVersion() bool {
	var count int
	for _, repo := range me.repos.View.AllRepos() {
		if repo.ReadOnly() {
			continue
		}
		lasttag := repo.Status.GetLastTagVersion()
		master := repo.Status.GetMasterVersion()

		if lasttag != master {
			log.Info("increment target version", repo.GoPath(), lasttag, master)
			count += 1
		} else {
			// check go dependancies for target version changes
		}
	}
	log.Info("need to update target versions for", count, "repos")
	if count == 0 {
		return true
	}
	return false
}