Skip to content

Instantly share code, notes, and snippets.

@falgon
Created August 9, 2020 10:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save falgon/2499c2f577c43ae16a7154ea8eae5bdb to your computer and use it in GitHub Desktop.
Save falgon/2499c2f577c43ae16a7154ea8eae5bdb to your computer and use it in GitHub Desktop.
Simple script to migrate from my old blog to new blog
#!/bin/bash
function fix_metadata() {
i="$1"
fname="$2"
line="$3"
if [ "`echo "$line" | grep 'Title'`" ]; then
sed -i -e "${i}s/Title/title/g" "$fname"
elif [ "`echo "$line" | grep 'Tags'`" ]; then
sed -i -e "${i}s/Tags/tags/g" "$fname"
elif [ "`echo "$line" | grep 'Date'`" ]; then
sed -i -e "${i}s/Date/date/g" "$fname"
# when specified time
if [ "`head -$i "$fname" | tail -n1 | sed -e 's/date://g' | grep ':'`" ]; then
sed -i "${i}s/$/:00/" "$fname"
else
sed -i "${i}s/$/ 00:00:00/" "$fname"
fi
else
sed -i "${i}d" "$fname"
return 1
fi
return 0
}
function counter() {
fname="$1"
i=1
while read line; do
if [ "`echo "$line" | grep ':'`" ]; then
i=$((++i))
fix_metadata "$i" "$fname" "$line"
res=$?
if [ $res -eq 1 ]; then
i=$((--i))
fi
elif [ "$line" != "---" ]; then
break
fi
done < "$fname"
echo $((++i))
}
function caldic() {
if [ "`echo "$1" | grep 'Jan'`" ]; then
echo 01
elif [ "`echo "$1" | grep 'Feb'`" ]; then
echo 02
elif [ "`echo "$1" | grep 'Mar'`" ]; then
echo 03
elif [ "`echo "$1" | grep 'Apr'`" ]; then
echo 04
elif [ "`echo "$1" | grep 'May'`" ]; then
echo 05
elif [ "`echo "$1" | grep 'Jun'`" ]; then
echo 06
elif [ "`echo "$1" | grep 'Jul'`" ]; then
echo 07
elif [ "`echo "$1" | grep 'Aug'`" ]; then
echo 08
elif [ "`echo "$1" | grep 'Sep'`" ]; then
echo 09
elif [ "`echo "$1" | grep 'Oct'`" ]; then
echo 10
elif [ "`echo "$1" | grep 'Nov'`" ]; then
echo 11
elif [ "`echo "$1" | grep 'Dec'`" ]; then
echo 12
fi
}
function escape_katex() {
beg="mathjaxbegin"
end="mathjaxend"
sed -i -e "s/\\\\\\\\(/$beg/g" "$filename"
sed -i -e "s/\\\\\\\\)/$end/g" "$filename"
sed -i -e "s/\\\(/\(/g" "$filename"
sed -i -e "s/\\\)/\)/g" "$filename"
sed -i -e "s/$beg/\\\\\\\\(/g" "$filename"
sed -i -e "s/$end/\\\\\\\\)/g" "$filename"
# https://github.com/KaTeX/KaTeX/issues/2003
sed -i -e 's/\\label{eq:[^}]*}//g' "$filename"
sed -i -e 's/\\eqref{eq:[^}]*}//g' "$filename"
sed -i -e 's/\\_/_/g' "$filename"
sed -i -e 's/\\\\{/{/g' "$filename"
sed -i -e 's/\\\\}/}/g' "$filename"
sed -i -e 's/\\left{/{/g' "$filename"
sed -i -e 's/\\right}/}/g' "$filename"
sed -i -e 's/\\left(/(/g' "$filename"
sed -i -e 's/\\right)/)/g' "$filename"
sed -i -e 's/\\\[0,2\\pi\\\]/[0,2\\pi]/g' "$filename"
sed -i -e 's/\\\[0,\\infty\\\]/[0,\\infty]/g' "$filename"
}
function porting() {
target_year="$1"
for dirname in $(ls -1 "$target_year"); do
cal_num=$(caldic "$dirname")
mv "$target_year/$dirname" "$target_year/$cal_num"
done
while read -d '' filename; do
sed -i "1s/^/---\n/" "$filename"
insert_target_line=$(counter "${filename}" < /dev/null)
echo "$filename"
sed -i "${insert_target_line}s/^/---\n/" "$filename"
escape_katex "$filename"
done < <(find "$target_year" -name "index.md" -type f -print0)
}
porting "$1"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment