Options parser, --userspec
This commit is contained in:
parent
2931330ad4
commit
c2d852bfb0
1 changed files with 30 additions and 5 deletions
35
run.sh
35
run.sh
|
@ -1,7 +1,11 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
help () {
|
||||
echo 'dchr-run <chroot-dir> [command]'
|
||||
echo 'dchr-run [options] <chroot-dir> [command]'
|
||||
echo '-- options:'
|
||||
echo ' -u uid[:gid] invoke command in chroot as a different user'
|
||||
# TODO:
|
||||
#echo ' -x11 apply options for correctly starting GUI apps'
|
||||
echo 'https://dchr.dc09.ru'
|
||||
}
|
||||
|
||||
|
@ -28,22 +32,43 @@ setup () {
|
|||
|
||||
runcmd () {
|
||||
echo -e '-- \e[1;32mOK\e[0m -- running chroot'
|
||||
chrdir="$1"
|
||||
shift
|
||||
userspec="--userspec=$1"
|
||||
chrdir="$2"
|
||||
shift 2
|
||||
chrcmd=("$@")
|
||||
chroot "$chrdir" "${chrcmd[@]}"
|
||||
chroot "$userspec" "$chrdir" "${chrcmd[@]}"
|
||||
}
|
||||
|
||||
main () {
|
||||
[[ "$1" == "--help" || "$1" == "" ]] && help && exit 0
|
||||
|
||||
userspec="$(id -u):$(id -g)"
|
||||
|
||||
while [[ "$1" == -* ]]
|
||||
do
|
||||
case "$1" in
|
||||
-u)
|
||||
userspec="$2"
|
||||
shift 2
|
||||
;;
|
||||
#-x11);; TODO
|
||||
*)
|
||||
echo -ne '-- \e[1mInvalid option:\e[0m '
|
||||
echo "$1"
|
||||
echo '-- Use ./ or full path if your chroot-dir starts with dash (-)'
|
||||
help
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
chrdir=$(readlink -f "$1")
|
||||
shift
|
||||
|
||||
trap "clean \"$chrdir\"" EXIT
|
||||
|
||||
setup "$chrdir"
|
||||
runcmd "$chrdir" "$@"
|
||||
runcmd "$userspec" "$chrdir" "$@"
|
||||
exit $?
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue