oh-my-fish/tools/generate-themes-doc.fish

62 lines
1.9 KiB
Fish
Raw Normal View History

#!/usr/bin/env fish
set -l project_dir (status -f|xargs dirname|xargs dirname)
if [ $argv ]
set theme_doc $argv
else
set theme_doc "$project_dir/docs/Themes.md"
end
set temp_theme_contents (mktemp /tmp/fish.Themes.Content.XXXXX.md)
set temp_theme_toc (mktemp /tmp/fish.Themes.TOC.XXXXX.md)
function __write_theme_readme -a name raw_content readme
set -l escaped_raw_content (echo $raw_content | sed -r s"#[\/]#\\\/#gi")
curl -s "$raw_content/$readme" | \
sed -r 's/^#(.*)$/###\1/gi' | \
sed -r 's/^=+$//gi' | \
sed -r 's/^!\[(.*)\]\(([^h][^t][^t].*)\)$/![\1]('$escaped_raw_content'\/\2)/gi' | \
sed -r 's/\[([^\]+)\]\[([a-zA-Z0-9]+)\]/[\1][THEMES-NAMESPACE-'"$name"'-\2]/gi' | \
sed -r 's/\[([a-zA-Z0-9]+)\]: (.+)/[THEMES-NAMESPACE-'"$name"'-\1]: \2/gi' \
>> $temp_theme_contents
echo "" >> $temp_theme_contents
echo "" >> $temp_theme_contents
end
function __find_readme -a raw_content
for readme in "README.md" "readme.md"
if curl -Ifs "$raw_content/$readme" > /dev/null
echo $readme
break
end
end
end
echo "Generating Themes documentation to $theme_doc ..."
echo "# Available themes" > $temp_theme_toc
for theme in (command find $project_dir/db/themes/ -type f|sort)
set -l name (basename $theme)
read -l url < $theme
set -l raw_content (echo $url | sed -r 's#\.git$#/#i; s#https://github.com/([-.a-z0-9]+)/([-.a-z0-9]+)#https://raw.githubusercontent.com/\1/\2/master#i')
set -l readme (__find_readme $raw_content)
echo "- [$name](#$name)" >> $temp_theme_toc
echo "# $name" >> $temp_theme_contents
if [ $readme ]
echo "Fetching readme for $name"
__write_theme_readme $name $raw_content $readme
else
2016-12-18 10:26:46 +08:00
echo "FAILED: No readme for $name" >&2
echo "See $url for details" >> $temp_theme_contents
end
end
echo "" >> $temp_theme_toc
cat $temp_theme_contents >> $temp_theme_toc
rm -f $theme_doc
cat $temp_theme_toc >> $theme_doc
echo "All done: $theme_doc"
rm $temp_theme_contents
rm $temp_theme_toc