Use jq / output-as json to get info from yunohost commands instead of scraping with grep

This commit is contained in:
Alexandre Aubin 2021-02-02 03:45:13 +01:00
parent 071d8c4cbe
commit 06185a2392
4 changed files with 20 additions and 15 deletions

View file

@ -399,6 +399,15 @@ ynh_delete_file_checksum () {
ynh_app_setting_delete --app=$app --key=$checksum_setting_name ynh_app_setting_delete --app=$app --key=$checksum_setting_name
} }
# Checks a backup archive exists
#
# [internal]
#
ynh_backup_archive_exists () {
yunohost backup list --output-as json --quiet \
| jq -e --arg archive "$1" '.archives | index($archive)' >/dev/null
}
# Make a backup in case of failed upgrade # Make a backup in case of failed upgrade
# #
# usage: # usage:
@ -423,7 +432,7 @@ ynh_backup_before_upgrade () {
if [ "$NO_BACKUP_UPGRADE" -eq 0 ] if [ "$NO_BACKUP_UPGRADE" -eq 0 ]
then then
# Check if a backup already exists with the prefix 1 # Check if a backup already exists with the prefix 1
if yunohost backup list | grep --quiet $app_bck-pre-upgrade1 if ynh_backup_archive_exists "$app_bck-pre-upgrade1"
then then
# Prefix becomes 2 to preserve the previous backup # Prefix becomes 2 to preserve the previous backup
backup_number=2 backup_number=2
@ -435,7 +444,7 @@ ynh_backup_before_upgrade () {
if [ "$?" -eq 0 ] if [ "$?" -eq 0 ]
then then
# If the backup succeeded, remove the previous backup # If the backup succeeded, remove the previous backup
if yunohost backup list | grep --quiet $app_bck-pre-upgrade$old_backup_number if ynh_backup_archive_exists "$app_bck-pre-upgrade$old_backup_number"
then then
# Remove the previous backup only if it exists # Remove the previous backup only if it exists
yunohost backup delete $app_bck-pre-upgrade$old_backup_number > /dev/null yunohost backup delete $app_bck-pre-upgrade$old_backup_number > /dev/null
@ -467,7 +476,7 @@ ynh_restore_upgradebackup () {
if [ "$NO_BACKUP_UPGRADE" -eq 0 ] if [ "$NO_BACKUP_UPGRADE" -eq 0 ]
then then
# Check if an existing backup can be found before removing and restoring the application. # Check if an existing backup can be found before removing and restoring the application.
if yunohost backup list | grep --quiet $app_bck-pre-upgrade$backup_number if ynh_backup_archive_exists "$app_bck-pre-upgrade$backup_number"
then then
# Remove the application then restore it # Remove the application then restore it
yunohost app remove $app yunohost app remove $app

View file

@ -185,7 +185,8 @@ ynh_permission_exists() {
local permission local permission
ynh_handle_getopts_args "$@" ynh_handle_getopts_args "$@"
yunohost user permission list --short | grep --word-regexp --quiet "$app.$permission" yunohost user permission list --output-as json --quiet \
| jq -e --arg perm "$app.$permission" '.permissions[$perm]' >/dev/null
} }
# Redefine the url associated to a permission # Redefine the url associated to a permission
@ -366,7 +367,8 @@ ynh_permission_has_user() {
return 1 return 1
fi fi
yunohost user permission info "$app.$permission" | grep --word-regexp --quiet "$user" yunohost user permission info "$app.$permission" --output-as json --quiet \
| jq -e --arg user $user '.corresponding_users | index($user)' >/dev/null
} }
# Check if a legacy permissions exist # Check if a legacy permissions exist

View file

@ -17,7 +17,7 @@ ynh_user_exists() {
# Manage arguments with getopts # Manage arguments with getopts
ynh_handle_getopts_args "$@" ynh_handle_getopts_args "$@"
yunohost user list --output-as json | grep --quiet "\"username\": \"${username}\"" yunohost user list --output-as json --quiet | jq -e ".users.${username}" >/dev/null
} }
# Retrieve a YunoHost user information # Retrieve a YunoHost user information
@ -39,7 +39,7 @@ ynh_user_get_info() {
# Manage arguments with getopts # Manage arguments with getopts
ynh_handle_getopts_args "$@" ynh_handle_getopts_args "$@"
yunohost user info "$username" --output-as plain | ynh_get_plain_key "$key" yunohost user info "$username" --output-as json --quiet | jq -r ".$key"
} }
# Get the list of YunoHost users # Get the list of YunoHost users
@ -51,8 +51,7 @@ ynh_user_get_info() {
# #
# Requires YunoHost version 2.4.0 or higher. # Requires YunoHost version 2.4.0 or higher.
ynh_user_list() { ynh_user_list() {
yunohost user list --output-as plain --quiet \ yunohost user list --output-as json --quiet | jq -r ".users | keys[]"
| awk '/^##username$/{getline; print}'
} }
# Check if a user exists on the system # Check if a user exists on the system

View file

@ -504,12 +504,7 @@ ynh_secure_remove () {
# #
# [internal] # [internal]
# #
# example: yunohost user info tata --output-as plain | ynh_get_plain_key mail # (Deprecated, use --output-as json and jq instead)
#
# usage: ynh_get_plain_key key [subkey [subsubkey ...]]
# | ret: string - the key's value
#
# Requires YunoHost version 2.2.4 or higher.
ynh_get_plain_key() { ynh_get_plain_key() {
local prefix="#" local prefix="#"
local founded=0 local founded=0