Skip to content

Instantly share code, notes, and snippets.

@k-tsj
Last active December 31, 2018 04:10
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save k-tsj/1467442 to your computer and use it in GitHub Desktop.
Save k-tsj/1467442 to your computer and use it in GitHub Desktop.
update-ruby-trunk-changes-notes.sh
#!/bin/sh
# Usage:
# update-ruby-trunk-changes-notes.sh YYYY-MM-DD
export LANG=en_US.UTF-8
REPOSDIR=/var/working/ruby-trunk-changes-notes
TMPDIR=/tmp/ruby-trunk-changes
URL_PREFIX='https://ruby-trunk-changes.hatenablog.com/archive/'
[ -d $TMPDIR ] || mkdir -p $TMPDIR
if [ -z "$1" ]
then
YYYYMMDD=$(ruby -rdate -e 'puts (Date.today - 3).to_s')
else
YYYYMMDD=$1
fi
YYYY=$(echo $YYYYMMDD|cut -d- -f 1)
MM=$(echo $YYYYMMDD|cut -d- -f 2)
DD=$(echo $YYYYMMDD|cut -d- -f 3)
cd $TMPDIR
for i in $(wget -O - "${URL_PREFIX}$YYYY/$MM/$DD" | grep entry-title-link | grep -o 'href="[^"]*"' | cut -d '"' -f 2)
do
w3m -T text/html $i|ruby -e '
HEADER = /: ?r(\d+) \d{4}/
ARGF.read.slice(/#{HEADER.source}.*?(?=^nagachika \d{4}-)/m).tap {|i| exit unless i }\
.each_line.slice_before(HEADER).each do |entry|
open(entry[0].slice(HEADER, 1), "w:utf-8") do |f|
f.puts entry[1..-1].find_all{|i| ! i.chomp.empty?}.join
end
end
'
done
cd $REPOSDIR
git pull
for i in $(ls $TMPDIR)
do
echo "## $i"
cat $TMPDIR/$i
echo
git notes --ref=ruby-trunk-changes add -F $TMPDIR/$i \
$(git log -1 --grep="^git-svn-id: [^ ]*@$i " --format=%H)
done
git gc
# git push k-tsj refs/notes/ruby-trunk-changes
rm -rf $TMPDIR
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment