76 lines
2.0 KiB
Bash
Executable File
76 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euvo pipefail
|
|
|
|
GIT_TAG=$(git describe --abbrev=0 --tags)
|
|
VERSION=${GIT_TAG##v}
|
|
API=https://app.vagrantup.com/api/v1
|
|
|
|
# Create a new version
|
|
response=$(
|
|
curl -sSL --header "Content-Type: application/json" --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
|
|
"$API/box/monicahq/monicahq/versions" \
|
|
--data "{ \
|
|
\"version\": { \
|
|
\"version\": \"$VERSION\", \
|
|
\"description\": \"https://github.com/monicahq/monica/releases/tag/$GIT_TAG\" \
|
|
} \
|
|
}"
|
|
)
|
|
if [ $(echo "$response" | jq .success) == "false" ]; then
|
|
if [ $(echo "$response" | jq .errors[0]) != "Version has already been taken" ]; then
|
|
echo "$response" | jq .errors[0]
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Create provider
|
|
response=$(
|
|
curl -sSL --header "Content-Type: application/json" --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
|
|
"$API/box/monicahq/monicahq/version/$VERSION/providers" \
|
|
--data "{ \
|
|
\"provider\": { \
|
|
\"name\": \"virtualbox\" \
|
|
} \
|
|
}"
|
|
)
|
|
if [ $(echo "$response" | jq .success) == "false" ]; then
|
|
if [ $(echo "$response" | jq .errors[0]) != "Metadata provider must be unique for version" ]; then
|
|
echo "$response" | jq .errors[0]
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Upload the box
|
|
response=$(
|
|
curl -sSL --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
|
|
"$API/box/monicahq/monicahq/version/$VERSION/provider/virtualbox/upload"
|
|
)
|
|
if [ $(echo "$response" | jq .success) == "false" ]; then
|
|
echo "$response" | jq .errors[0]
|
|
exit 1
|
|
fi
|
|
upload_path=$(echo "$response" | jq .upload_path)
|
|
upload_path="${upload_path%\"}"
|
|
upload_path="${upload_path#\"}"
|
|
|
|
curl -fL --progress-bar \
|
|
--request PUT \
|
|
"$upload_path" \
|
|
--upload-file "monicahq-$GIT_TAG.box"
|
|
retval=$?
|
|
if [ $? -ne 0 ]; then
|
|
exit 1
|
|
fi
|
|
|
|
# Publish the version
|
|
response=$(
|
|
curl -sSL --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
|
|
--request PUT \
|
|
"$API/box/monicahq/monicahq/version/$VERSION/release"
|
|
)
|
|
if [ $(echo "$response" | jq .success) == "false" ]; then
|
|
echo "$response" | jq .errors[0]
|
|
exit 1
|
|
fi
|