diff --git a/Makefile b/Makefile index 1454b02..ab0e80b 100644 --- a/Makefile +++ b/Makefile @@ -3,5 +3,11 @@ all: @./make.py +clean: + rm -rf css + +release: + bash release.sh + screenshots: @./make.py screenshots diff --git a/release.sh b/release.sh new file mode 100755 index 0000000..2fe93ce --- /dev/null +++ b/release.sh @@ -0,0 +1,90 @@ +#!/bin/bash +set -euo pipefail +IFS=$'\n\t' + +API_BASE="https://api.github.com" +UPLOAD_BASE="https://uploads.github.com" +# TODO, rename this to alphapapa/solarized-everything-css +OWNER="alphapapa" +# REPO="solarized-everything-css" +REPO="solarized-everything-css" +REPO_BASE="${OWNER}/${REPO}" +TARGET_ZIP_NAME="generated_files.zip" + +# USAGE: +# ./release.sh [tag-name] [tag-message] +# +# To upload releases, please put a github token in the GH_TOKEN env var, or run with +# GH_TOKEN="" ./release.sh hello "my message" +# +# For a unofficial release: ./release.sh +# +# Dependencies: curl, jq, and git + +# Check depdencies +if ! command -v curl >/dev/null 2>&1 \ + || ! command -v jq >/dev/null 2>&1 \ + || ! command -v git >/dev/null 2>&1; then + echo "Please install curl, jq, and git to continue" >&2 + exit 1 +fi + +GIT_COMMIT="$(git rev-parse HEAD)" + +echo "Running make..." +echo + +make + +mkdir -p dist +cd dist + +echo "zipping files..." + +zip "$TARGET_ZIP_NAME" -r ../css/ + +if [ -z "${GH_TOKEN:-}" ]; then + echo "No GH_TOKEN provided, exiting" + exit 2 +fi + +# Check if we have tag info +if [ -z "${1:-}" ]; then + echo + echo "Please provide a tag for this release" 2>&1 + exit 1 +elif [ -z "${2:-}" ]; then + echo + echo "Please provide a tag message this release" 2>&1 + exit 1 +else + TAG="$1" + MESSAGE="$2" +fi + +echo "Creating release..." +echo + +RELEASE_OBJECT="$(curl -X POST "$API_BASE/repos/$REPO_BASE/releases" \ + -H "Authorization: token $GH_TOKEN" \ + -d "{ + \"tag_name\": \"$TAG\", + \"target_commitish\": \"$GIT_COMMIT\", + \"name\": \"$TAG\", + \"body\": \"$MESSAGE\", + \"draft\": true, + \"prerelease\": false +}")" + +RELEASE_ID="$(echo "$RELEASE_OBJECT" | jq -r '.id')" + +echo "Uploading release assets..." + +curl -X POST "$UPLOAD_BASE/repos/$REPO_BASE/releases/$RELEASE_ID/assets?name=$TARGET_ZIP_NAME" \ + -H "Authorization: token $GH_TOKEN" \ + -H "Content-Type: application/zip" \ + -d "@${TARGET_ZIP_NAME}" >/dev/null + +echo +echo "Release created successfuly!" +echo "Please verify and publish the draft."