Last active
August 29, 2015 14:07
-
-
Save robbwagoner/52630effc210a12a4747 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# ---------------------------------------- | |
# Print git metadata for the current repo | |
# ---------------------------------------- | |
# metadata: | |
# date: ISO8601 timestamp | |
# sha: SHA short (7-digit) | |
# sha_full: SHA 40-digit | |
# | |
# optionally create a bash variable prefix, which is useful for eval statements | |
# | |
# $ git-info sha appname | |
# appname_sha=34abc67 | |
# | |
# thus: | |
# | |
# $ eval $(git-info.sh sha appname) | |
# $ echo $appname_sha | |
# 34abc67 | |
# | |
set -e | |
what=${1:-all} # print: all | date | sha | sha_full | |
if [[ $1 ]] ; then | |
shift 1 | |
fi | |
prefix="${@}" # prefix this string to all output | |
# ------------------------------------ | |
# Convert UNIX timestamp (seconds since epoch UTC) to YYYY-MM-DDTHH:MM:SSZ | |
# ------------------------------------ | |
function unix_to_iso() { | |
declare ts=${1} | |
declare formatOutput="+%FT%TZ" | |
case $(uname -s) in | |
( Darwin ) | |
TZ=UTC date -j -r $ts $formatOutput | |
;; | |
( Linux ) | |
TZ=UTC date -d @$ts $formatOutput | |
;; | |
esac | |
} | |
# ------------------------------------ | |
# Get the git metadata for the current project | |
# ------------------------------------ | |
declare -a versionMetadata=( $(TZ=UTC git log -n 1 --pretty="%ct %h %H") ) | |
declare versionDate=$(unix_to_iso ${versionMetadata[0]}) | |
declare versionSHA=${versionMetadata[1]} | |
declare versionSHAFull=${versionMetadata[2]} | |
case $what in | |
( all | date ) printf "${prefix:+${prefix}_date=}${versionDate}\n" ;;& | |
( all | sha ) printf "${prefix:+${prefix}_sha=}${versionSHA}\n" ;;& | |
( all | sha_full ) printf "${prefix:+${prefix}_sha_full=}${versionSHAFull}\n" ;;& | |
esac | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment