script/changelog in html-pipeline-2.0 vs script/changelog in html-pipeline-2.1.0

- old
+ new

@@ -1,30 +1,47 @@ -#!/usr/bin/env sh +#!/bin/bash # Usage: script/changelog [-r <repo>] [-b <base>] [-h <head>] # # repo: base string of GitHub repository url. e.g. "user_or_org/repository". Defaults to git remote url. # base: git ref to compare from. e.g. "v1.3.1". Defaults to latest git tag. # head: git ref to compare to. Defaults to "HEAD". # # Generate a changelog preview from pull requests merged between `base` and # `head`. # -# https://github.com/jch/release-scripts +# https://github.com/jch/release-scripts/blob/master/changelog set -e [ $# -eq 0 ] && set -- --help +while [[ $# > 1 ]] +do + key="$1" + case $key in + -r|--repo) + repo="$2" + shift + ;; + -b|--base) + base="$2" + shift + ;; + -h|--head) + head="$2" + shift + ;; + *) + ;; + esac + shift +done -# parse args -repo='jch/html-pipeline' -base=$(git tag -l | sort -t. -k 1,1n -k 2,2n -k 3,3n | tail -n 1) -head="HEAD" +repo="${repo:-$(git remote -v | grep push | awk '{print $2}' | cut -d'/' -f4- | sed 's/\.git//')}" +base="${base:-$(git tag -l | sort -t. -k 1,1n -k 2,2n -k 3,3n | tail -n 1)}" +head="${head:-HEAD}" api_url="https://api.github.com" -echo "# $repo $base..$head" -echo - # get merged PR's. Better way is to query the API for these, but this is easier for pr in $(git log --oneline $base..$head | grep "Merge pull request" | awk '{gsub("#",""); print $5}') do # frustrated with trying to pull out the right values, fell back to ruby - curl -s "$api_url/repos/$repo/pulls/$pr" | ruby -rjson -e 'pr=JSON.parse(STDIN.read); puts "* #{pr[%q(title)]} [##{pr[%q(number)]}](#{pr[%q(html_url)]}) @#{pr[%q(user)][%q(login)]}"' + curl -s "$api_url/repos/$repo/pulls/$pr" | ruby -rjson -e 'pr=JSON.parse(STDIN.read); puts "* #{pr[%q(title)]} [##{pr[%q(number)]}](#{pr[%q(html_url)]})"' done