dotfiles/scripts/envm

61 lines
1.5 KiB
Bash
Executable file

#!/bin/sh
# Automate temporary shell envs
OPT="$1"
ENVDIR="/tmp/env"
ENVSHELL="/bin/bash"
print_title() {
printf "\033[2m%s\033[0m\n" "$1"
}
print_dialogue() {
printf "\033[2m%s:\033[0m " "$1"
}
print_warning() {
printf "\033[31mWarning:\033[0m \033[2m%s\033[0m\n" "$1"
}
help() {
printf "\033[2mUsage:\033[0m envm [list|create|login|delete]\n"
}
list() {
print_title "Current users:"
sed '/^env-.*::\/tmp\/env\/.*:\/bin\/bash$/!d;s/^env-//g;s/:.*::/ -> /g;s/:/ -> /g' /etc/passwd
}
create() {
print_warning 'super user privileges are needed for user and home creation'
print_dialogue 'Create user' && read -r ENVUSER
ENVNAME="env-$ENVUSER"
sudo mkdir -p "$ENVDIR"
sudo useradd -m -d $ENVDIR/$ENVUSER -s $ENVSHELL $ENVNAME
}
login() {
list && echo
print_warning 'super user privileges are needed for login'
print_dialogue 'Login as' && read -r ENVUSER
[ -z "$ENVUSER" ] && print_warning 'Empty user' && return 0
ENVNAME="env-$ENVUSER"
sudo su - "$ENVNAME"
}
delete() {
list && echo
print_warning 'super user privileges are needed for user and home deletion'
print_dialogue 'Delete user' && read -r ENVUSER
[ -z "$ENVUSER" ] && print_warning 'Empty user' && return 0
ENVNAME="env-$ENVUSER"
sudo rm -rfv $ENVDIR/$ENVUSER
sudo userdel $ENVNAME
}
[ "$OPT" = "" ] && help && list
[ "$OPT" = "help" ] && help
[ "$OPT" = "list" ] && list
[ "$OPT" = "create" ] && create
[ "$OPT" = "login" ] && login
[ "$OPT" = "delete" ] && delete