jw-pkg/scripts/python-tools.sh

81 lines
1.3 KiB
Bash
Raw Normal View History

#!/bin/bash
usage()
{
cat <<-EOT
usage $myname [-e sed-extract-command] [-m module] file.py ...
EOT
[ "$1" ] && exit $1
}
module_path()
{
if [ "$module" ]; then
echo $module.$1
return
fi
echo $1
}
cmd_create_init()
{
local import_submodules=0
local e f files base extracted module_path
local del="-------------------------- generated by $myname"
echo "# >> $del >>"
echo "from pkgutil import extend_path"
echo "from typing import Iterable"
echo "__path__ = extend_path(__path__, __name__) # type: Iterable[str]"
files="$*"
for f in $files; do
test -d $f && continue
base=${f##*/}
base=${base%.py}
if [ "$sed_extract_command" ]; then
#echo running $sed_extract_command on $f
extracted=`sed "$sed_extract_command" $f`
#extracted="$sed_extract_command"
for e in $extracted; do
echo "from `module_path $base` import $e"
done
fi
done
if [ "$import_submodules" = 1 ]; then
for f in $files; do
[ -f $f/__init__.py ] && echo "import `module_path $f` as $f"
done
fi
echo "# << $del <<"
}
# --------------------- here we go
myname=`basename $0`
eval set -- `getopt -o 'he:m:' "$@"`
while [ "$1" != -- ]; do
case $1 in
-e)
sed_extract_command="$2"
shift
;;
-m)
module=$2
shift
;;
-h)
usage 0;;
*)
echo unknown argument $1
usage 1;;
esac
shift
done
shift
cmd=cmd_${1//-/_}
shift
eval $cmd $*