-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmake.sh
More file actions
executable file
·98 lines (82 loc) · 2.75 KB
/
make.sh
File metadata and controls
executable file
·98 lines (82 loc) · 2.75 KB
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/usr/bin/env bash
set -e
clear
APPNAME='popc'
PACKAGE="go.hansaray.pw/${APPNAME}"
cd $( dirname -- "$0"; );
ROOTDIR=$PWD;
VERSION="$(git describe --tags --always --abbrev=0 --match='v[0-9]*.[0-9]*.[0-9]*')"
COMMIT_HASH="$(git rev-parse --short HEAD)"
BUILD_TIME=$(date '+%Y-%m-%dT%H:%M:%S')
BUILD_USER=$(id -u -n)
LDFLAGS=("-s -w "
"-X '${PACKAGE}/version.AppName=${APPNAME}'"
"-X '${PACKAGE}/version.Version=${VERSION}'"
"-X '${PACKAGE}/version.CommitHash=${COMMIT_HASH}'"
"-X '${PACKAGE}/version.BuildTime=${BUILD_TIME}'"
"-X '${PACKAGE}/version.UserName=${BUILD_USER}'"
)
# Remember Go env settings, so we can set them back
GOMOD=$(go env GO111MODULE)
GOCGO=$(go env CGO_ENABLED)
echo "[INF] LDFLAGS: ${LDFLAGS[*]}\n"
echo "[INF] setting build env"
go env -w CGO_ENABLED=0
go env -w GO111MODULE=on
# Just edit Title, Description, and Tags
metadata() {
echo '# Do not edit this file here, see make.sh' > metadata.toml
echo "Name = '${APPNAME}'" >> metadata.toml
echo "Version = '${VERSION}'" >> metadata.toml
echo "Package = '${PACKAGE}'" >> metadata.toml
echo "Repo = 'https://github.com/gotamer/${APPNAME}'" >> metadata.toml
echo "Branch = 'master'" >> metadata.toml
echo "Homepage = 'http://${PACKAGE}'" >> metadata.toml
echo 'Title = "POP3 Client"' >> metadata.toml
echo 'Description = "A command-line tool that pulls email from a pop3 server"' >> metadata.toml
echo "Documentation = 'https://pkg.go.dev/${PACKAGE}'" >> metadata.toml
echo 'Tags = ["pop3", "client", "cli"]' >> metadata.toml
echo 'License = "MIT"' >> metadata.toml
}
fmt() {
echo "[INF] FMT"
go fmt "${ROOTDIR}"
wait
}
build() {
echo "[INF] make & install ${APPNAME}"
fmt
echo "[INF] Building"
if [ ! -d "$GOBIN" ]; then
GOBIN="${ROOTDIR}/bin"
fi
go build -o="${GOBIN}" -ldflags="${LDFLAGS[*]}"
wait
}
release() {
# go tool dist list | grep linux
echo "[INF] release, fmt, metadata, build ${APPNAME}"
fmt
wait
env GOOS=linux GOARCH=amd64 go build -o="bin/${APPNAME}-linux-amd64" -ldflags="${LDFLAGS[*]}"
wait
env GOOS=linux GOARCH=arm64 go build -o="bin/${APPNAME}-linux-arm64" -ldflags="${LDFLAGS[*]}"
wait
env GOOS=linux GOARCH=arm go build -o="bin/${APPNAME}-linux-arm" -ldflags="${LDFLAGS[*]}"
wait
env GOOS=freebsd GOARCH=amd64 go build -o="bin/${APPNAME}-freebsd-amd64" -ldflags="${LDFLAGS[*]}"
wait
metadata
wait
}
# executes the function $1 $2 $3 $4 $5 are the arguments
$@
# Wait for the functions to finish
wait
echo "[INF] setting Go env back to:"
echo "[INF] GOARCH=$(go env GOHOSTARCH) GOOS=$(go env GOHOSTOS) GO111MODULE=${GOMOD} GOCGO=${GOCGO}"
go env -w GOARCH=$(go env GOHOSTARCH)
go env -w GOOS=$(go env GOHOSTOS)
go env -w CGO_ENABLED=${GOCGO}
go env -w GO111MODULE=${GOMOD}
echo "[INF] all done"