#!/bin/bash function changelog(){ current_tag=$(git describe --tags --abbrev=0) previous_tag=$(git describe --tags --abbrev=0 $(git rev-list --tags --skip=1 --max-count=1)) git log ${previous_tag}..${current_tag} --reverse --pretty=format:"%B" | nl -w2 -s". " > CHANGELOG.txt cat CHANGELOG.txt } function main() { local cmd=$1 shift 1 case $cmd in changelog) changelog ;; *) changelog ;; esac } main $@