|
@@ -0,0 +1,125 @@
|
|
|
|
|
+#!/usr/bin/env bash
|
|
|
|
|
+# Bash3 Boilerplate. Copyright (c) 2014, kvz.io
|
|
|
|
|
+
|
|
|
|
|
+set -o errexit
|
|
|
|
|
+set -o pipefail
|
|
|
|
|
+set -o nounset
|
|
|
|
|
+# set -o xtrace
|
|
|
|
|
+
|
|
|
|
|
+trap 'echo -e "Aborted, error $? in command: $BASH_COMMAND"; trap ERR; exit 1' ERR
|
|
|
|
|
+
|
|
|
|
|
+# Set magic variables for current file & dir
|
|
|
|
|
+__dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
|
+__file="${__dir}/$(basename "${BASH_SOURCE[0]}")"
|
|
|
|
|
+__base="$(basename ${__file} .sh)"
|
|
|
|
|
+__root="$(cd "$(dirname "${__dir}")" && pwd)" # <-- change this as it depends on your app
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+NOW=$(date '+%Y%m%d-%H%M%S')
|
|
|
|
|
+TMP=$(mktemp -d)
|
|
|
|
|
+
|
|
|
|
|
+BUILDTAG=$NOW
|
|
|
|
|
+BUILDNAME="user"
|
|
|
|
|
+GOPATH=$(go env GOPATH)
|
|
|
|
|
+
|
|
|
|
|
+cleanup () { rm -rf $TMP; }
|
|
|
|
|
+trap cleanup INT TERM ERR
|
|
|
|
|
+
|
|
|
|
|
+get_source() {
|
|
|
|
|
+ go get -v -t v2ray.com/core/...
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+build_v2() {
|
|
|
|
|
+ pushd $GOPATH/src/v2ray.com/core
|
|
|
|
|
+ sed -i "s/\"Po\"/\"${BUILDNAME}\"/;s/\"Custom\"/\"${BUILDTAG}\"/;" core.go
|
|
|
|
|
+
|
|
|
|
|
+ pushd $GOPATH/src/v2ray.com/core/main
|
|
|
|
|
+ env CGO_ENABLED=0 go build -o $TMP/v2ray${EXESUFFIX} -ldflags "-s -w"
|
|
|
|
|
+ popd
|
|
|
|
|
+
|
|
|
|
|
+ git checkout -- core.go
|
|
|
|
|
+ popd
|
|
|
|
|
+
|
|
|
|
|
+ pushd $GOPATH/src/v2ray.com/core/infra/control/main
|
|
|
|
|
+ env CGO_ENABLED=0 go build -o $TMP/v2ctl${EXESUFFIX} -tags confonly -ldflags "-s -w"
|
|
|
|
|
+ popd
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+build_dat() {
|
|
|
|
|
+ wget -qO - https://api.github.com/repos/v2ray/geoip/releases/latest \
|
|
|
|
|
+ | grep browser_download_url | cut -d '"' -f 4 \
|
|
|
|
|
+ | wget -i - -O $TMP/geoip.dat
|
|
|
|
|
+
|
|
|
|
|
+ wget -qO - https://api.github.com/repos/v2ray/domain-list-community/releases/latest \
|
|
|
|
|
+ | grep browser_download_url | cut -d '"' -f 4 \
|
|
|
|
|
+ | wget -i - -O $TMP/geosite.dat
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+copyconf() {
|
|
|
|
|
+ pushd $GOPATH/src/v2ray.com/core/release/config
|
|
|
|
|
+ tar c --exclude "*.dat" . | tar x -C $TMP
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+pack() {
|
|
|
|
|
+ pushd $TMP
|
|
|
|
|
+ local PKG=${__dir}/v2ray-custom-${GOARCH}-${GOOS}-${PKGSUFFIX}${NOW}.zip
|
|
|
|
|
+ zip -r $PKG .
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+nosource=0
|
|
|
|
|
+nodat=0
|
|
|
|
|
+noconf=0
|
|
|
|
|
+GOOS=linux
|
|
|
|
|
+GOARCH=amd64
|
|
|
|
|
+EXESUFFIX=
|
|
|
|
|
+PKGSUFFIX=
|
|
|
|
|
+
|
|
|
|
|
+for arg in "$@"; do
|
|
|
|
|
+case $arg in
|
|
|
|
|
+ arm*)
|
|
|
|
|
+ GOARCH=$arg
|
|
|
|
|
+ ;;
|
|
|
|
|
+ mips*)
|
|
|
|
|
+ GOARCH=$arg
|
|
|
|
|
+ ;;
|
|
|
|
|
+ 386)
|
|
|
|
|
+ GOARCH=386
|
|
|
|
|
+ ;;
|
|
|
|
|
+ windows)
|
|
|
|
|
+ GOOS=windows
|
|
|
|
|
+ EXESUFFIX=.exe
|
|
|
|
|
+ ;;
|
|
|
|
|
+ darwin)
|
|
|
|
|
+ GOOS=$arg
|
|
|
|
|
+ ;;
|
|
|
|
|
+ nodat)
|
|
|
|
|
+ nodat=1
|
|
|
|
|
+ PKGSUFFIX=${PKGSUFFIX}nodat-
|
|
|
|
|
+ ;;
|
|
|
|
|
+ noconf)
|
|
|
|
|
+ noconf=1
|
|
|
|
|
+ ;;
|
|
|
|
|
+ nosource)
|
|
|
|
|
+ nosource=1
|
|
|
|
|
+ ;;
|
|
|
|
|
+esac
|
|
|
|
|
+done
|
|
|
|
|
+
|
|
|
|
|
+if [[ $nosource != 1 ]]; then
|
|
|
|
|
+ get_source
|
|
|
|
|
+fi
|
|
|
|
|
+
|
|
|
|
|
+export GOOS GOARCH
|
|
|
|
|
+build_v2
|
|
|
|
|
+
|
|
|
|
|
+if [[ $nodat != 1 ]]; then
|
|
|
|
|
+ build_dat
|
|
|
|
|
+fi
|
|
|
|
|
+
|
|
|
|
|
+if [[ $noconf != 1 ]]; then
|
|
|
|
|
+ copyconf
|
|
|
|
|
+fi
|
|
|
|
|
+
|
|
|
|
|
+pack
|
|
|
|
|
+cleanup
|