| #!/usr/bin/env sh |
| # usage: $0 [weekly|monthly|quarterly] < filenames |
| # sorts files of the form VENDOR/BOARD/COMMIT/DATE/revision.txt |
| # into buckets of the given granularity |
| |
| weekly() { |
| date --date="$1" +%GW%V 2>/dev/null |
| return $? |
| } |
| |
| monthly() { |
| date --date="$1" +%Y-%m 2>/dev/null |
| return $? |
| } |
| |
| quarterly() { |
| date --date="$1" "+%Y %m" 2>/dev/null | awk '{ q=int(($2-1)/3+1); print $1 "Q" q}' |
| return $? |
| } |
| |
| # Restrict $1 to allowed values |
| if [ "$1" != "weekly" ] && [ "$1" != "monthly" ] && [ "$1" != "quarterly" ]; then |
| exit 1 |
| fi |
| |
| curr="" |
| sort -r -k4 -t/ | while read file; do |
| # Exclude 'oem' directories |
| if echo "$file" | grep -q '/oem/'; then continue; fi |
| timestamp=$(printf "%s" "$file" | cut -d/ -f4 | tr _ :) |
| |
| # If the directory is not a date, skip it. |
| new=$($1 "$timestamp");retval=$? |
| if [ "$retval" != "0" ]; then continue; fi |
| |
| if [ "$new" != "$curr" ]; then |
| if [ "$curr" != "" ]; then |
| printf "\n" |
| fi |
| printf "%s:" "$new" |
| curr=$new |
| fi |
| printf "%s " "$file" |
| done |
| printf "\n" |