Add serve plugin.

Gives you access to two functions:
serve-html for serving a folder with whichever python version is
availabel and
serve-doc for serving a program’s documentation in /usr/share/doc.
This commit is contained in:
Profpatsch 2014-09-16 14:27:21 +02:00
parent 96e4e5dd03
commit 369756d3f1

View File

@ -0,0 +1,54 @@
# Serves html documentation from /usr/share/doc and opens it in your browser
# Args:
# doc_folder: folder in /usr/share/doc that should be served
function serve-doc() {
local doc_base_path="/usr/share/doc"
local doc_folder=$1
local old_folder=$(pwd)
local folder="$doc_base_path/$doc_folder"
cd $folder || return
# look for an index file
if [ -e "$folder/index.html" ]; then
serve-html $folder
else
# look if there is one in /html
[ -e "$folder/html/index.html" ] \
&& {cd $old_folder; serve-html "$folder/html"} \
|| {echo "No documentation for that."; cd $old_folder >/dev/null}
fi
}
# Serves html from a folder and opens it in your browser
# Args:
# folder: folder that should be served
function serve-html() {
which python >/dev/null
if [ $? -ne 0 ]; then
echo "This function (serve-doc) uses Python. Please install it."
return
fi
local folder=$1
local old_folder=$(pwd)
cd $folder || return
# python2 prints --version to stderr, python3 to stdout
if [[ $(python --version 2>&1) =~ "Python 2.*" ]]; then
local invocation="python -m SimpleHTTPServer"
else
local invocation="python -m http.server"
fi
# This is not really equally distributed, but who cares
local port=$RANDOM
let "port %= 10000"
let "port += 50000"
# start server, put it in background
eval "$invocation $port >/dev/null" &
# open docs in browser
xdg-open "http://localhost:$port" &
cd $old_folder
# put server into foreground
fg; fg
}