@@ -5,51 +5,75 @@ set -e -x
55echo " Creating release dir..."
66mkdir -p release
77
8- echo " Creating darwin/386 binary..."
9- GOOS=darwin GOARCH=386 go build -o out/exercism exercism/main.go
10- cd out
11- tar cvzf ../release/exercism-mac-32bit.tgz exercism
12- cd ..
13-
14- echo " Creating darwin/amd64 binary..."
15- GOOS=darwin GOARCH=amd64 go build -o out/exercism exercism/main.go
16- cd out
17- tar cvzf ../release/exercism-mac-64bit.tgz exercism
18- cd ..
19-
20- echo " Creating linux/386 binary..."
21- GOOS=linux GOARCH=386 go build -o out/exercism exercism/main.go
22- cd out
23- tar cvzf ../release/exercism-linux-32bit.tgz exercism
24- cd ..
25-
26- echo " Creating linux/amd64 binary..."
27- GOOS=linux GOARCH=amd64 go build -o out/exercism exercism/main.go
28- cd out
29- tar cvzf ../release/exercism-linux-64bit.tgz exercism
30- cd ..
31-
32- echo " Creating linux/ARMv5 binary..."
33- GOOS=linux GOARCH=arm GOARM=5 go build -o out/exercism exercism/main.go
34- cd out
35- tar cvzf ../release/exercism-linux-arm-v5.tgz exercism
36- cd ..
37-
38- echo " Creating linux/ARMv6 binary..."
39- GOOS=linux GOARCH=arm GOARM=6 go build -o out/exercism exercism/main.go
40- cd out
41- tar cvzf ../release/exercism-linux-arm-v6.tgz exercism
42- cd ..
43-
44- echo " Creating windows/386 binary..."
45- GOOS=windows GOARCH=386 go build -o out/exercism.exe exercism/main.go
46- cd out
47- zip ../release/exercism-windows-32bit.zip exercism.exe
48- cd ..
49-
50- echo " Creating windows/amd64 binary..."
51- GOOS=windows GOARCH=amd64 go build -o out/exercism.exe exercism/main.go
52- cd out
53- zip ../release/exercism-windows-64bit.zip exercism.exe
54- cd ..
8+ # variables as defined by "go tool nm"
9+ OSVAR=github.com/exercism/cli/cmd.BuildOS
10+ ARCHVAR=github.com/exercism/cli/cmd.BuildARCH
11+ ARMVAR=github.com/exercism/cli/cmd.BuildARM
5512
13+ createRelease () {
14+ os=$1
15+ arch=$2
16+ arm=$3
17+
18+ if [ " $os " = darwin ]
19+ then
20+ osname=' mac'
21+ else
22+ osname=$os
23+ fi
24+ if [ " $arch " = amd64 ]
25+ then
26+ osarch=64bit
27+ else
28+ osarch=32bit
29+ fi
30+
31+ ldflags=" -X $OSVAR $os -X $ARCHVAR $arch "
32+ if [ " $arm " ]
33+ then
34+ osarch=arm-v$arm
35+ ldflags=" $ldflags -X $ARMVAR $arm "
36+ fi
37+
38+ binname=exercism
39+ if [ " $osname " = windows ]
40+ then
41+ binname=" $binname .exe"
42+ fi
43+
44+ relname=" ../release/exercism-$osname -$osarch "
45+ echo " Creating $os /$arch binary..."
46+
47+ if [ " $arm " ]
48+ then
49+ GOOS=$os GOARCH=$arch GOARM=$arm go build -ldflags " $ldflags " -o " out/$binname " exercism/main.go
50+ else
51+ GOOS=$os GOARCH=$arch go build -ldflags " $ldflags " -o " out/$binname " exercism/main.go
52+ fi
53+
54+ cd out
55+
56+ if [ " $osname " = windows ]
57+ then
58+ zip " $relname .zip" " $binname "
59+ else
60+ tar cvzf " $relname .tgz" " $binname "
61+ fi
62+ cd ..
63+ }
64+
65+ # Mac Releases
66+ createRelease darwin 386
67+ createRelease darwin amd64
68+
69+ # Linux Releases
70+ createRelease linux 386
71+ createRelease linux amd64
72+
73+ # ARM Releases
74+ createRelease linux arm 5
75+ createRelease linux arm 6
76+
77+ # Windows Releases
78+ createRelease windows 386
79+ createRelease windows amd64
0 commit comments