From 00c468d25881c64f1a5db9befbc1994ada2790ff Mon Sep 17 00:00:00 2001 From: wpioneer Date: Wed, 24 Oct 2018 12:32:55 +0300 Subject: [PATCH] Add scripts and CHANGELOG.md --- CHANGELOG.md | 3 +++ scripts/update_changelog.sh | 31 ++++++++++++++++++++++ scripts/update_release_note.sh | 47 ++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 CHANGELOG.md create mode 100755 scripts/update_changelog.sh create mode 100755 scripts/update_release_note.sh diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e6d6828 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3 @@ +# Change Log +All notable changes to this project will be documented in this file. + diff --git a/scripts/update_changelog.sh b/scripts/update_changelog.sh new file mode 100755 index 0000000..1bb5c17 --- /dev/null +++ b/scripts/update_changelog.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +set -e + +usage() { + echo "$0 " >&2; +} + +if [ "$1" = "-h" -o "$1" = "--help" ]; then + usage + exit 1; +fi + +if [ -z "$2" ] +then + REPO=$(git ls-remote --get-url origin | \ + sed -u 's/git@//g; s/https:\/\///g; s/github.com\///g; s/\.git//g') +else + REPO=$2 +fi + +NEW_TAG=$1 +CURRENT_DATE=$(date +"%Y-%m-%d") + +LAST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1)) +LAST_DATE=$(git log -1 --format=%ai $LAST_TAG) + +CHANGES=$(curl -s "https://api.github.com/repos/${REPO}/pulls?state=closed" | \ +jq --arg l "$LAST_DATE" -r '.[] | select((.merged_at != null) and (.closed_at > $l)) | "- [Pull #\(.number)](\(.html_url)): \(.title)"') + +sed -i "4i ## [$NEW_TAG] - $CURRENT_DATE\n### Added\n${CHANGES//$'\n'/\\$'\n'}\n" CHANGELOG.md diff --git a/scripts/update_release_note.sh b/scripts/update_release_note.sh new file mode 100755 index 0000000..6c95f0b --- /dev/null +++ b/scripts/update_release_note.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +set -e + +usage() { + echo "$0 []" >&2; +} + +if [ "$1" = "-h" -o "$1" = "--help" ]; then + usage + exit 1; +fi + +if [ -z "$1" ] +then + REPO=$(git ls-remote --get-url origin | \ + sed -u 's/git@//g; s/https:\/\///g; s/github.com\///g; s/\.git//g') +else + REPO=$1 +fi + +if [ -z "$2" ] +then + TAG=$(git describe --tags $(git rev-list --tags --max-count=1)) +else + TAG=$2 +fi + +BODY=$(awk "/$TAG/ {print; exit}" RS="\n\n" ORS="\n\n" CHANGELOG.md | tail -n+2) + +PAYLOAD=$( + jq --null-input \ + --arg t "$TAG" \ + --arg n "$TAG" \ + --arg b "$BODY" \ + '{ tag_name: $t, name: $n, body: $b}' +) + +TAG_ID=$(curl -s "https://api.github.com/repos/$REPO/releases/tags/$TAG" | jq -r '.id') + +curl --fail \ + --netrc \ + --silent \ + --location \ + --request PATCH \ + --data "$PAYLOAD" \ + "https://api.github.com/repos/${REPO}/releases/${TAG_ID}" \ No newline at end of file