-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbuild.sh
executable file
·86 lines (75 loc) · 2.69 KB
/
build.sh
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
#!/bin/bash
##
# Builds binaries of rspace-cli for 3 amd64 architectures for win,max,linux
# Requires single argument, a version numbepr
# 2nd argument can be 'b' (build only, default); 'p' (publish only) or 'bp' (build and publish)
#
# The Version number is set into cmd/version.go
#
# Publishing pushes to bintray creating a new version; will fail if this version already exists
# The files uploaded need manual publishing on bintray website
#
# 'build' rrequires a pre-created distribution folder 'dist' with 3 subfolders win.mac,linux
#
##
VERSION=$1
CMD=$2 ##'p', 'b', 'bp'
if [[ -z "$CMD" ]]; then
CMD="b" ## build only is default
fi
if [[ -z "VERSION" ]]; then
echo "Version number required"
exit 1
fi
DIST_DIR=dist
BUILD_LOG=$DIST_DIR/build.log
WIN_EXE=rspace-$VERSION.exe
MAC_EXE=rspace-$VERSION
LINUX_EXE=rspace-$VERSION
function build {
## set the version into version command.
#sed -i -e "s/\(var rsVersion = \)\S\+/\1\"$VERSION\"/" cmd/version.go
# no uses go16 embed
echo "$version" > cmd/version.txt
### remove any old builds of same name
rm $DIST_DIR/win/$WIN_EXE
rm $DIST_DIR/mac/$MAC_EXE
rm $DIST_DIR/linux/$LINUX_EXE
echo "Building Windows amd64"
env GOOS=windows GOARCH=amd64 go build -o $DIST_DIR/win/$WIN_EXE
echo "Building Mac amd64"
env GOOS=darwin GOARCH=amd64 go build -o $DIST_DIR/mac/$MAC_EXE
echo "Building Linux amd64"
env GOOS=linux GOARCH=amd64 go build -o $DIST_DIR/linux/$LINUX_EXE
echo "Done, appending to build log $BUILD_LOG"
echo "$VERSION built on $(date)" >> $BUILD_LOG
}
## publishes to bin tray if 2nd arg is 'p' or 'bp'
function publish {
## this file should contain 2 lines, out side version control
## APIKEY=yourbintrayapiky
## BINTRAY_USERNAME=yourbintray_username
source .bintray-api.sh
PKG="rspace-cli"
BINTRAY_URL="https://api.bintray.com/content"
FILE_UPLOAD_BASE=$BINTRAY_URL/$BINTRAY_USERNAME/rspace-cli/$PKG/$VERSION
HEADERS="X-GPG-PASSPHRASE: $X_GPG_PASSPHRASE"
## WIN
echo "Uploading $WIN_EXE"
curl -H "$HEADERS" -T $DIST_DIR/win/$WIN_EXE -u$BINTRAY_USERNAME:$APIKEY "$FILE_UPLOAD_BASE/amd-64-windows/rspace-win-$VERSION.exe"
## MAC
echo "Uploading $MAC_EXE"
curl -H "$HEADERS" -T $DIST_DIR/mac/$MAC_EXE -u$BINTRAY_USERNAME:$APIKEY "$FILE_UPLOAD_BASE/amd-64-macosx/rspace-macosx-$VERSION"
## LINUX
echo "Uploading $LINUX_EXE"
curl -H "$HEADERS" -T $DIST_DIR/linux/$LINUX_EXE -u$BINTRAY_USERNAME:$APIKEY "$FILE_UPLOAD_BASE/amd-64-linux/rspace-linux-$VERSION"
}
#### main script####
if [[ $CMD == "b" || $CMD == "bp" ]]; then
echo "building..."
build;
fi
if [[ $CMD == "p" || $CMD == "bp" ]]; then
echo "publishing"
publish;
fi