dotfiles/zsh/func/setup-cpython

88 lines
1.7 KiB
Bash

#!/usr/bin/env zsh
#
# Set up for CPython development.
#
# Eryn Wells <eryn@erynwells.me>
function _usage-setup-cpython
{
cat <<EOF
Usage: $1 [-h] [-r root]
Setup for CPython development.
Arguments:
-h Show this help.
-r root Use the given directory as the root of the CPython source tree.
EOF
}
function setup-cpython
{
root="$HOME/Code/cpython"
coverage="$HOME/Code/coveragepy"
while getopts 'hr:' opt; do
case $opt in
(h)
_usage-setup-cpython "$0"
return 0
;;
(r)
root="$OPTARG"
;;
(*)
echo "Invalid argument: $OPTARG" 1>&2
return -1
;;
esac
done
if [[ ! -d "$root" ]]; then
print_error "Invalid source root: $root"
return 1
fi
export coverage
export lib="$root/Lib"
export root
function cov
{
local cmd
case "$1" in
(html)
local module="$root/Lib/$2"
if [[ ! -d "$module" ]]; then
if [[ -f "$module.py" ]]; then
module="$module.py"
fi
fi
cmd="html -i --include=$module"
;;
(report)
cmd="report"
;;
(run)
cmd="run --pylib --source=$2 Lib/test/regrtest.py test_$2"
;;
esac
(cd "$root"; ./python.exe "$coverage" "$cmd")
}
unsetup_functions=(unsetup-cpython)
}
function unsetup-cpython
{
unset coverage
unset lib
unset root
unfunction cov
}
setup-cpython "$@"