-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
84 lines (70 loc) · 2.16 KB
/
main.go
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
75
76
77
78
79
80
81
82
83
84
package main
import (
"flag"
"fmt"
"io/ioutil"
"strings"
)
func check(e error) {
if e != nil {
panic(e)
}
}
var vertPtr, envPtr, newPtr, oldPtr, winnerPtr, loserPtr, percPtr *string
func init() {
vertPtr = flag.String("vert", "life", "Vertical name (auto|home|life)")
envPtr = flag.String("env", "staging", "Vertical environment (staging|prod)")
newPtr = flag.String("new", "REQUIRED", "New version (will be scaled up)")
oldPtr = flag.String("old", "REQUIRED", "Old version (will be scaled down)")
winnerPtr = flag.String("winner", "b", "Winner leg (100% A/B)")
loserPtr = flag.String("loser", "a", "Loser leg (100% A/B)")
flag.Parse()
}
func main() {
fmt.Print("Checking flags...\n\n")
// Validating flags
if *newPtr == "REQUIRED" {
panic("'new' (New Version) flag is required!")
}
if *oldPtr == "REQUIRED" {
panic("'old' (Old Version) flag is required!")
}
templateFile := "event_template_staging.json"
if *envPtr == "prod" {
templateFile = "event_template_prod.json"
}
template, err := ioutil.ReadFile("./internal/templates/" + templateFile)
check(err)
fmt.Print("Template loaded...\n\n")
fmt.Printf("Flags ok:\n"+
"\tVertical: %s\n"+
"\tEnvironment: %s\n"+
"\tOld Version: %s\n"+
"\tNew Version: %s\n"+
"\tLoser Leg: %s\n"+
"\tWinner Leg: %s\n\n",
*vertPtr, *envPtr, *oldPtr, *newPtr, *loserPtr, *winnerPtr)
var vertical, releaseURL string
if *vertPtr != "auto" {
vertical = fmt.Sprintf("%s-", *vertPtr)
releaseURL = fmt.Sprintf("https://github.com/adharmonics/lynx-%s/releases/tag/", *vertPtr)
} else {
vertical = ""
releaseURL = fmt.Sprintf("https://github.com/adharmonics/lynx/releases/tag/")
}
replacer := strings.NewReplacer(
"{releaseURL}", releaseURL,
"{vertical}", vertical,
"{environment}", *envPtr,
"{newVersion}", *newPtr,
"{oldVersion}", *oldPtr,
"{winnerLeg}", *winnerPtr,
"{loserLeg}", *loserPtr,
)
resultFile := fmt.Sprintf("./%s_%s_%s(%s).json", *vertPtr, *envPtr, *newPtr, *winnerPtr)
fmt.Println(fmt.Sprintf("Generating '%s'...\n", resultFile))
result := replacer.Replace(string(template))
err2 := ioutil.WriteFile(resultFile, []byte(result), 0644)
check(err2)
fmt.Println("Done! \\o/")
}