88 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			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 "$@"
 |