mirror of
https://github.com/xjasonlyu/tun2socks.git
synced 2025-10-07 09:41:09 +08:00
81 lines
2.4 KiB
Bash
81 lines
2.4 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Create GITHUB_API_TOKEN and export it first.
|
|
|
|
set -x
|
|
|
|
tag=v1.7
|
|
description="- Support IPv6 on macOS and Linux\n- Utilizing V2Ray's DNS client for DNS resolving"
|
|
list_assets_cmd="ls -1 build/*.zip"
|
|
token=
|
|
if [ -z ${GITHUB_API_TOKEN+x} ]; then
|
|
read -p 'Input the github API token:' token
|
|
else
|
|
token=$GITHUB_API_TOKEN
|
|
fi
|
|
|
|
declare -a executables=(\
|
|
"tun2socks-darwin-10.6-amd64" \
|
|
"tun2socks-linux-386" \
|
|
"tun2socks-linux-amd64" \
|
|
"tun2socks-linux-arm64" \
|
|
"tun2socks-linux-mips" \
|
|
"tun2socks-linux-mips64" \
|
|
"tun2socks-linux-mips64le" \
|
|
"tun2socks-linux-mipsle" \
|
|
"tun2socks-windows-4.0-386.exe" \
|
|
"tun2socks-windows-4.0-amd64.exe" \
|
|
)
|
|
eval $list_assets_cmd
|
|
if [ $? -ne 0 ]; then
|
|
cd build
|
|
for i in ${executables[@]}; do
|
|
zip "$i.zip" "$i"
|
|
done
|
|
cd ..
|
|
fi
|
|
|
|
owner=eycorsican
|
|
repo=go-tun2socks
|
|
base_url=https://api.github.com
|
|
|
|
content_type_json="Content-Type: application/json"
|
|
content_type_zip="Content-Type: application/zip"
|
|
|
|
api_create_release=/repos/$owner/$repo/releases
|
|
api_get_release_by_tag=/repos/$owner/$repo/releases/tags/$tag
|
|
api_create_release_data="{\
|
|
\"tag_name\": \"${tag}\",\
|
|
\"target_commitish\": \"master\",\
|
|
\"name\": \"${tag}\",
|
|
\"body\": \"${description}\",
|
|
\"draft\": false,\
|
|
\"prerelease\": false\
|
|
}"
|
|
|
|
# Get the release id by tag name.
|
|
release_id=`curl -u $owner:$token -H "$content_type_json" -X GET "${base_url}${api_get_release_by_tag}" | \
|
|
python -c "import sys;import json;print(json.loads(\"\".join(sys.stdin.readlines()))[\"id\"])"` 2>/dev/null
|
|
|
|
# If there is release with the tag exists, delete it first.
|
|
if [ $? -eq 0 ]; then
|
|
api_delete_release=/repos/$owner/$repo/releases/$release_id
|
|
curl -u $owner:$token -H "$content_type_json" -X DELETE "${base_url}${api_delete_release}"
|
|
fi
|
|
|
|
# Create a release.
|
|
curl -u $owner:$token -H "$content_type_json" -X POST "${base_url}${api_create_release}" --data "${api_create_release_data}"
|
|
|
|
# Get the release id by tag name.
|
|
release_id=`curl -u $owner:$token -H "$content_type_json" -X GET "${base_url}${api_get_release_by_tag}" | \
|
|
python -c "import sys;import json;print(json.loads(\"\".join(sys.stdin.readlines()))[\"id\"])"`
|
|
|
|
# Upload assets.
|
|
eval $list_assets_cmd | while read -r asset_name; do
|
|
upload_url=https://uploads.github.com/repos/$owner/$repo/releases/$release_id/assets?name=$(basename $asset_name)
|
|
curl --progress-bar -u $owner:$token -H "$content_type_zip" --data-binary @"$asset_name" -X POST $upload_url
|
|
if [ $? -ne "0" ]; then
|
|
exit 1
|
|
fi
|
|
done
|