53 lines
1.6 KiB
Bash
53 lines
1.6 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
set -e
|
||
|
[ "$TRACE" ] && set -x
|
||
|
|
||
|
# Create tag and push
|
||
|
tag="v$(node -p "require('./package.json').version")"
|
||
|
git tag -f "$tag" -m "Release $tag"
|
||
|
git push --tags
|
||
|
|
||
|
GH_API="https://api.github.com"
|
||
|
GH_REPO="$GH_API/repos/iamcco/markdown-preview.nvim"
|
||
|
GH_TAGS="$GH_REPO/releases/tags/$tag"
|
||
|
AUTH="Authorization: token $GITHUB_API_TOKEN"
|
||
|
|
||
|
echo "Creating release for $tag"
|
||
|
curl -X POST -H "Authorization: token $GITHUB_API_TOKEN" \
|
||
|
-H "Content-Type: application/json" \
|
||
|
--data "{\"tag_name\":\"$tag\"}" \
|
||
|
"$GH_REPO/releases"
|
||
|
|
||
|
# upload assets
|
||
|
cd ./app/bin
|
||
|
tar -zcf markdown-preview-macos.tar.gz markdown-preview-macos
|
||
|
tar -zcf markdown-preview-linux.tar.gz markdown-preview-linux
|
||
|
zip markdown-preview-win.zip markdown-preview-win.exe
|
||
|
|
||
|
declare -a files=("markdown-preview-win.zip" "markdown-preview-macos.tar.gz" "markdown-preview-linux.tar.gz")
|
||
|
|
||
|
# Validate token.
|
||
|
curl -o /dev/null -sH "$AUTH" $GH_REPO || { echo "Error: Invalid repo, token or network issue!"; exit 1; }
|
||
|
|
||
|
# Read asset tags.
|
||
|
response=$(curl -sH "$AUTH" $GH_TAGS)
|
||
|
|
||
|
# Get ID of the asset based on given filename.
|
||
|
eval $(echo "$response" | grep -m 1 "id.:" | grep -w id | tr : = | tr -cd '[[:alnum:]]=')
|
||
|
[ "$id" ] || { echo "Error: Failed to get release id for tag: $tag"; echo "$response" | awk 'length($0)<100' >&2; exit 1; }
|
||
|
|
||
|
# Upload asset
|
||
|
for filename in "${files[@]}"
|
||
|
do
|
||
|
GH_ASSET="https://uploads.github.com/repos/iamcco/markdown-preview.nvim/releases/$id/assets?name=$filename"
|
||
|
echo "Uploading $filename"
|
||
|
curl -X POST -H "Authorization: token $GITHUB_API_TOKEN" \
|
||
|
-H "Content-Type: application/octet-stream" \
|
||
|
--data-binary @"$filename" \
|
||
|
$GH_ASSET
|
||
|
done
|
||
|
|
||
|
# clear bin
|
||
|
rm ./*
|