Created
August 9, 2020 10:05
-
-
Save falgon/2499c2f577c43ae16a7154ea8eae5bdb to your computer and use it in GitHub Desktop.
Simple script to migrate from my old blog to new blog
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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