2 changed files with 35 additions and 38 deletions
@ -1,61 +1,60 @@ |
|||
#!/usr/bin/env bash |
|||
#!/usr/bin/env miaou-bash |
|||
|
|||
# CONSTANTS |
|||
|
|||
BASEDIR=$(dirname "$0") |
|||
CONTAINER= |
|||
USER= |
|||
|
|||
# FUNCTIONS |
|||
|
|||
function usage { |
|||
echo "$(basename "$0") <CONTAINER_NAME> [--user|-u USER]" |
|||
echo "$(basename "$0") <CONTAINER_NAME> [--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) |
|||
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 |
|||
incus exec "$CONTAINER" -- su - "$1" |
|||
} |
|||
|
|||
function incus_user_exists { |
|||
incus exec "$CONTAINER" -- id $1 &> /dev/null |
|||
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 |
|||
if [[ -n $USER ]]; then |
|||
incus_su "$USER" |
|||
else |
|||
local current |
|||
current=$(whoami) |
|||
incus_user_exists "$current" && incus_su "$current" || incus_su root |
|||
fi |
|||
} |
|||
|
|||
# MAIN |
|||
|
|||
set -Eue |
|||
parse_options $* |
|||
parse_options "$@" |
|||
login |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue