diff --git a/bin/yunohost b/bin/yunohost index b24fffb7..6800a4a9 100755 --- a/bin/yunohost +++ b/bin/yunohost @@ -13,6 +13,9 @@ USE_CACHE = True # Either the output has to be encoded as a JSON encoded string or not PRINT_JSON = False +# Either the output has to printed for scripting usage or not +PRINT_PLAIN = False + # Level for which loggers will log LOGGERS_LEVEL = 'INFO' @@ -62,6 +65,10 @@ def _parse_argv(): global PRINT_JSON PRINT_JSON = True argv.remove('--json') + if '--plain' in argv: + global PRINT_PLAIN + PRINT_PLAIN = True + argv.remove('--plain') if '--debug' in argv: global LOGGERS_LEVEL LOGGERS_LEVEL = 'DEBUG' @@ -156,6 +163,6 @@ if __name__ == '__main__': # Execute the action from moulinette import cli - ret = cli(_retrieve_namespaces(), args, - print_json=PRINT_JSON, use_cache=USE_CACHE) + ret = cli(_retrieve_namespaces(), args, use_cache=USE_CACHE, + print_json=PRINT_JSON, print_plain=PRINT_PLAIN) sys.exit(ret) diff --git a/data/apps/helpers.d/user b/data/apps/helpers.d/user index de9a2cbc..1fd8d203 100644 --- a/data/apps/helpers.d/user +++ b/data/apps/helpers.d/user @@ -1,5 +1,15 @@ - # Check if a user exists +# +# usage: ynh_user_exists username +# | ret: retcode - 0 if user exists, 1 otherwise ynh_user_exists() { sudo yunohost user list --json | grep -q "\"username\": \"${1}\"" -} \ No newline at end of file +} + +# Retrieve a user information +# +# usage: ynh_user_info username key +# | ret: string - the key's value +ynh_user_get_info() { + sudo yunohost user info "${1}" --plain | ynh_get_plain_key "${2}" +} diff --git a/data/apps/helpers.d/utils b/data/apps/helpers.d/utils new file mode 100644 index 00000000..87cd47f6 --- /dev/null +++ b/data/apps/helpers.d/utils @@ -0,0 +1,24 @@ +# Extract a key from a plain command output +# +# usage: ynh_get_plain_key key [subkey [subsubkey ...]] +# | ret: string - the key's value +ynh_get_plain_key() { + prefix="#" + founded=0 + key=$1 + shift + while read line; do + if [[ "$founded" == "1" ]] ; then + [[ "$line" =~ ^${prefix}[^#] ]] && return + echo $line + elif [[ "$line" =~ ^${prefix}${key}$ ]]; then + if [[ -n "$1" ]]; then + prefix+="#" + key=$1 + shift + else + founded=1 + fi + fi + done +}