Skip to content

Instantly share code, notes, and snippets.

@osule
Last active July 26, 2017 16:56
Show Gist options
  • Save osule/34a7bd6a95b1394954ef15ed9159994e to your computer and use it in GitHub Desktop.
Save osule/34a7bd6a95b1394954ef15ed9159994e to your computer and use it in GitHub Desktop.
Naive bash script to compute how old a project repository is
#!/bin/bash
START_DATE=$(git --no-pager log $(git rev-list --max-parents=0 HEAD) --format="%at")
END_DATE=$(git --no-pager log -n 1 $(git rev-list HEAD^..HEAD) --format="%at")
DURATION=$(( $(($END_DATE - $START_DATE)) / 86400 ))
pluralize() {
echo $1s
}
make_time_text() {
if [[ $2 -eq 1 ]]; then
echo $2 $1
fi
if [[ $2 -gt 1 ]]; then
echo $2 $(pluralize $1)
fi
}
concat() {
echo $1 "$2"
}
if [[ $DURATION > 365 ]]; then
YEARS=$(( $DURATION / 365 ))
RESULT_TEXT=$(concat "" "$(make_time_text 'year' $YEARS)")
REMAINING_DAYS=$(( $DURATION % 365 ))
MONTHS=$(( $REMAINING_DAYS / (7 * 4) ))
RESULT_TEXT=$(concat "$RESULT_TEXT" "$(make_time_text 'month' $MONTHS)")
REMAINING_DAYS=$(( $REMAINING_DAYS % (7 * 4) ))
WEEKS=$(( $REMAINING_DAYS / 7 ))
RESULT_TEXT=$(concat "$RESULT_TEXT" "$(make_time_text 'week' $WEEKS)")
REMAINING_DAYS=$(( $REMAINING_DAYS % 7 ))
RESULT_TEXT=$(concat "$RESULT_TEXT" "$(make_time_text 'day' $REMAINING_DAYS)")
fi
echo $RESULT_TEXT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment