diff --git a/generate_missing_docs.sh b/generate_missing_docs.sh new file mode 100755 index 00000000..bb4c755c --- /dev/null +++ b/generate_missing_docs.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +latest_docs_commit=$(git log ./docs | head -1 | cut -d' ' -f 2) +code_dirs='platypush/plugins platypush/backend platypush/message/event' +target_dir='docs/source/platypush' + +git diff --name-status $latest_docs_commit..HEAD $code_dirs \ + | grep '^A' | grep '\.py$' | awk '{print $2}' | while read filename; do + + module_name=$(echo -n $filename | sed -r -e 's/(.*)\.py$/\1/' | tr '/' '.') + + case $filename in + platypush/backend/*) + target_file="$target_dir/backend/$(echo -n $filename | sed -r -e 's/^platypush\/backend\/(.*)\.py$/\1.rst/' | tr '/' '.')" + ;; + platypush/plugins/*) + target_file="$target_dir/plugins/$(echo -n $filename | sed -r -e 's/^platypush\/plugins\/(.*)\.py$/\1.rst/' | tr '/' '.')" + ;; + platypush/message/event/*) + target_file="$target_dir/events/$(echo -n $filename | sed -r -e 's/^platypush\/message\/event\/(.*)\.py$/\1.rst/' | tr '/' '.')" + ;; + esac + + backticks='``' + header_top="$backticks$module_name$backticks" + echo "$header_top" > "$target_file" + perl -e "print '=' x length('$header_top')" >> "$target_file" + echo >> "$target_file" + echo >> "$target_file" + echo ".. automodule:: $module_name" >> "$target_file" + echo -e "\t:members:" >> $target_file + echo >> "$target_file" + + case $filename in + platypush/backend/*) + index_file="$target_dir/../backends.rst" + header=$(cat $index_file | head -8) + files=$(find docs/source/platypush/backend -type f -name '*.rst' | sort | sed -r -e 's/^docs\/source\/(.*)$/ \1/') + echo $"$header" > $index_file + echo $"$files" >> $index_file + ;; + platypush/plugins/*) + index_file="$target_dir/../plugins.rst" + header=$(cat $index_file | head -7) + files=$(find docs/source/platypush/plugins -type f -name '*.rst' | sort | sed -r -e 's/^docs\/source\/(.*)$/ \1/') + echo $"$header" > $index_file + echo >> $index_file + echo $"$files" >> $index_file + ;; + platypush/message/event/*) + index_file="$target_dir/../events.rst" + header=$(cat $index_file | head -7) + files=$(find docs/source/platypush/events -type f -name '*.rst' | sort | sed -r -e 's/^docs\/source\/(.*)$/ \1/') + echo $"$header" > $index_file + echo >> $index_file + echo $"$files" >> $index_file + ;; + esac +done +