at master 1.5 kB view raw
1#!/usr/bin/env bash 2 3cd "$1" 4 5log="$(git log --pretty=format:'%h %ad' --date=iso-strict)" 6 7prev_hash="$(git status | head -1 | awk '{print($NF) }')" 8 9echo "wordcount,timestamp" > wordcounts.csv 10while IFS= read -r line; do 11 hash="$(echo "$line" | awk '{print $1}')" 12 time="$(echo "$line" | awk '{print $2}')" 13 git checkout "$hash" || exit 1 14 wordcount="$(texcount -merge -sum -q -1 ${3:-main.tex})" 15 if [ ! -z $wordcount ]; then 16 echo "$wordcount,$time" >> wordcounts.csv 17 fi 18 if [ "$hash" == "$2" ]; then break; fi 19done <<< "$log" 20 21git checkout "$prev_hash" | exit 1 22 23echo " 24import csv 25from datetime import datetime 26import numpy as np 27import matplotlib.pyplot as plt 28import matplotlib.dates as dates 29 30with open('wordcounts.csv') as file: 31 data = [row for row in csv.reader(file)][1:] 32 33timestamps=[datetime.strptime(timestamp, '%Y-%m-%dT%H:%M:%S%z') for wordcount, timestamp in data] 34wordcounts=[int(wordcount) for wordcount, timestamp in data] 35 36start=datetime.combine(datetime.date(min(timestamps)), datetime.min.time()).timestamp() 37end=max(timestamps).timestamp() + 60*60*24 38increment=60*60*6 39 40plt.figure(figsize=(12, 4)) 41#plt.xticks([datetime.fromtimestamp(t) for t in np.arange(start, end, increment)]) 42#plt.gca().xaxis.set_major_formatter(dates.DateFormatter('%Y-%m-%d %H:%M')) 43#plt.gcf().autofmt_xdate() 44#plt.gcf().subplots_adjust(bottom=0.25) 45plt.plot(timestamps, wordcounts) 46 47#plt.xticks(rotation=45) 48plt.xlabel('timestamp') 49plt.ylabel('wordcount') 50plt.savefig('wordcounts.pdf')" | python3