diff options
-rwxr-xr-x | project/pycopy.sh | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/project/pycopy.sh b/project/pycopy.sh new file mode 100755 index 0000000..2a55b7a --- /dev/null +++ b/project/pycopy.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# pyccopy: a build-time utiltiy script +# objective: copy one or more source python (.py) scripts +# to the destination directory specified via the +# environment variable PYCOPY_DSTDIR, replacing +# the original shebang line, should the script +# contain one, with a program interpreter based +# on the PYCOPY_PREFIX and PYCOPY_PYTHON +# environment variables. + +if [ -z "$PYCOPY_PYTHON" ]; then + python='python' +else + python="$PYCOPY_PYTHON" +fi + +if [ -z "$PYCOPY_PREFIX" ]; then + prefix='/usr' +else + prefix="$PYCOPY_PREFIX" +fi + +if [ -z "$PYCOPY_DSTDIR" ]; then + dstdir='.' +else + dstdir="$PYCOPY_DSTDIR" +fi + +for pysrc in $@; do + basename=$(basename "$pysrc"); + + sed -e '1s@^#!.*@#!'" $prefix/bin/$python"'@g' \ + "$pysrc" > "$dstdir/$basename" || exit 2 + + if [ "$(head -n1 "$dstdir/$basename")" = "#! $prefix/bin/$python" ]; then + chmod +x "$dstdir/$basename" || exit 2 + fi +done + +exit 0 |