#!/usr/bin/env bash # CONSTANTS BASEDIR=$(dirname "$0") CONTAINER='' USER='' # FUNCTIONS function usage { echo "$(basename "$0") [--user|-u USER]" } function parse_options { while [[ $# -gt 0 ]]; do case "$1" in --help | -h) usage && exit 0 ;; --user | -u) shift 1 [[ -z ${1:-} ]] && >&2 echo 'ERROR: user expected!' && usage && exit 5 USER="$1" ;; *) if [[ -z $CONTAINER ]]; then CONTAINER=$1 else echo >&2 "Unknown option: $1" && usage && exit 2 fi ;; esac shift 1 # Move to the next argument done [[ -n $CONTAINER ]] || (usage && exit 1) } function incus_su { incus exec "$CONTAINER" -- su - $1 } function incus_user_exists { incus exec "$CONTAINER" -- id $1 &> /dev/null } function login { if [[ -n $USER ]]; then incus_su $USER else local current=$(whoami) incus_user_exists $current && incus_su $current || incus_su root fi } # MAIN set -Eue parse_options $* login