From 5f420e6f24f1439fa51040130b26bbd812c538c2 Mon Sep 17 00:00:00 2001 From: Bruno Tavares Date: Mon, 3 Mar 2014 11:10:03 -0300 Subject: [PATCH] Introduce kickstart.user.exec --- docs/kickstart/user/exec.md | 18 ++++++++++++++++++ kickstart/recipes/kickstart/user.sh | 13 +++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 docs/kickstart/user/exec.md diff --git a/docs/kickstart/user/exec.md b/docs/kickstart/user/exec.md new file mode 100644 index 0000000..8dc7705 --- /dev/null +++ b/docs/kickstart/user/exec.md @@ -0,0 +1,18 @@ +# kickstart.user.exec user command + +Execute `command` as `user`. +It makes kickstart functions available to be used. +To use variables, like `~`, quote it, otherwise it will be resolved by the current user. + +### Example + +```bash +$ kickstart.user.exec vagrant whoami +vagrant + +$ kickstart.user.exec vagrant kickstart.os +Ubuntu + +$ kickstart.user.exec vagrant 'cd ~; pwd' +/home/vagrant +``` diff --git a/kickstart/recipes/kickstart/user.sh b/kickstart/recipes/kickstart/user.sh index 9ce7960..84a1311 100644 --- a/kickstart/recipes/kickstart/user.sh +++ b/kickstart/recipes/kickstart/user.sh @@ -17,3 +17,16 @@ kickstart.user.remove_group() { IFS=" " read -a groups < <(id -nG $1 | sed "s/$2//") && \ usermod -G `kickstart.print_with_separator , ${groups[*]}` $1 } + +kickstart.user.exec() { + local user=$1 + shift + + local command=$(cat <