From 49422a702b4e195b39055f049e507854ad9609eb Mon Sep 17 00:00:00 2001
From: Robin Candau <robincandau@protonmail.com>
Date: Wed, 6 Nov 2024 15:31:09 +0100
Subject: [PATCH] feat: Add support for pikaur

Add support for the [pikaur](https://github.com/actionless/pikaur) AUR helper (in additon of `paru` and `yay`) for AUR packages support.

Closes https://github.com/Antiz96/arch-update/issues/275
---
 README-fr.md                  | 14 ++++++++------
 README.md                     | 14 ++++++++------
 doc/man/arch-update.1         | 17 ++++++++++-------
 doc/man/arch-update.conf.5    |  4 ++--
 doc/man/fr/arch-update.1      | 15 +++++++++------
 doc/man/fr/arch-update.conf.5 |  4 ++--
 src/arch-update.sh            |  2 +-
 src/lib/check.sh              |  4 ++--
 src/lib/common.sh             |  3 +++
 src/lib/config.sh             |  2 +-
 src/lib/list_packages.sh      |  4 ++--
 11 files changed, 48 insertions(+), 35 deletions(-)

diff --git a/README-fr.md b/README-fr.md
index 945d1bb..589f142 100644
--- a/README-fr.md
+++ b/README-fr.md
@@ -34,7 +34,7 @@ Fonctionnalités :
 - Vérification automatique des mises à jour du noyau en attente nécessitant un redémarrage et propose de redémarrer s'il y en a une.
 - Vérification automatique des services nécessitant un redémarrage après mise à jour et propose de les redémarrer s'il y en a.
 - Support de `sudo`, `doas` et `run0`.
-- Prise en charge optionnelle des paquets AUR (via `yay` ou `paru`).
+- Prise en charge optionnelle des paquets AUR (via `paru`, `yay` ou `pikaur`).
 - Prise en charge optionnelle des paquets Flatpak.
 - Prise en charge optionnelle des notifications de bureau lors de nouvelles mises à jour disponibles.
 
@@ -55,8 +55,9 @@ sudo pacman -S --needed pacman-contrib archlinux-contrib curl fakeroot htmlq dif
 
 Dépendances optionnelles supplémentaires dont vous pourriez avoir besoin ou que vous pourriez souhaiter :
 
-- [yay](https://aur.archlinux.org/packages/yay): Support des paquets AUR
 - [paru](https://aur.archlinux.org/packages/paru): Support des paquets AUR
+- [yay](https://aur.archlinux.org/packages/yay): Support des paquets AUR
+- [pikaur](https://aur.archlinux.org/packages/pikaur): Support des paquets AUR
 - [flatpak](https://archlinux.org/packages/extra/x86_64/flatpak/): Support des paquets Flatpak
 - [libnotify](https://archlinux.org/packages/extra/x86_64/libnotify/): Support des notifications de bureau lors de nouvelles mises à jour disponibles (voir <https://wiki.archlinux.org/title/Desktop_notifications>)
 - [vim](https://archlinux.org/packages/extra/x86_64/vim/): Programme de fusion par défaut pour pacdiff
@@ -155,7 +156,7 @@ Alternativement, vous pouvez voir la liste des mises à jour disponible dans le
 
 ![dropdown_menu_fr](https://github.com/user-attachments/assets/60c3c0d8-8091-4047-b8da-ce8f8bc72476)
 
-Quand l'icône du systray est cliquée, elle affiche la liste des paquets disponibles pour la mise à jour dans une fenêtre de terminal et demande la confirmation de l'utilisateur pour procéder à l'installation (peut aussi être lancé en exécutant la commande `arch-update`, requiert [yay](https://aur.archlinux.org/packages/yay "yay") ou [paru](https://aur.archlinux.org/packages/paru "paru") pour le support des paquets AUR et [flatpak](https://archlinux.org/packages/extra/x86_64/flatpak/) pour le support des paquets Flatpak).
+Quand l'icône du systray est cliquée, elle affiche la liste des paquets disponibles pour la mise à jour dans une fenêtre de terminal et demande la confirmation de l'utilisateur pour procéder à l'installation (peut aussi être lancé en exécutant la commande `arch-update`, requiert [paru](https://aur.archlinux.org/packages/paru "paru"), [yay](https://aur.archlinux.org/packages/yay "yay") ou [pikaur](https://aur.archlinux.org/packages/pikaur "pikaur") pour le support des paquets AUR et [flatpak](https://archlinux.org/packages/extra/x86_64/flatpak/) pour le support des paquets Flatpak).
 
 ![listing_packages-FR](https://github.com/Antiz96/arch-update/assets/53110319/60547cde-f327-46f8-907c-61bf9bbee6c5)
 
@@ -238,7 +239,7 @@ Les options prises en charge sont :
 - NoVersion # Ne pas afficher les modifications de versions des paquets lors du listing des mises à jour en attente (y compris lors de l'utilisation de l'option `-l / --list`).
 - AlwaysShowNews # Toujours afficher les Arch news avant de mettre à jour, peu importe s'il y en a une nouvelle depuis la dernière exécution ou non.
 - NewsNum=[Num] # Nombre de Arch news à affcher avant la mise à jour et avec l'option `-n / --news` (voir la page de manuel arch-update(1) pour plus de details). La valeur par défaut est 5.
-- AURHelper=[AUR Helper] # AUR helper à utiliser pour la prise en charge des paquets AUR. Les valeurs valides sont `paru` ou `yay`. Si cette option n'est pas spécifiée, Arch-Update utilisera le premier AUR helper disponible dans l'ordre suivant : `paru` puis `yay` (si aucun des deux n'est installé, Arch-Update ne prendra pas en compte les paquets AUR).
+- AURHelper=[AUR Helper] # AUR helper à utiliser pour la prise en charge des paquets AUR. Les valeurs valides sont `paru`, `yay` ou `pikaur`. Si cette option n'est pas spécifiée, Arch-Update utilisera le premier AUR helper disponible dans l'ordre suivant : `paru` puis `yay` puis `pikaur` (si aucun des deux n'est installé, Arch-Update ne prendra pas en compte les paquets AUR).
 - PrivilegeElevationCommand=[Cmd] # Commande à utiliser pour l'élévation de privilège. Les valeurs valides sont `sudo`, `doas` ou `run0`. Si cette option n'est pas spécifiée, Arch-Update utilisera la première commande disponible dans l'odre suivant : `sudo`, `doas` puis `run0`.
 - KeepOldPackages=[Num] # Nombre d'anciennes versions de paquets à conserver dans le cache de pacman. La valeur par défaut est 3.
 - KeepUninstalledPackages=[Num] # Nombre de versions de paquets désinstallés à conserver dans le cache de pacman. La valeur par défaut est 0.
@@ -254,9 +255,10 @@ Pour plus d'informations, consultez la page de manuel arch-update.conf(5).
 
 ### Support du AUR
 
-Arch-Update prend en charge les paquets AUR si **yay** ou **paru** est installé :  
+Arch-Update prend en charge les paquets AUR si **paru**, **yay** ou **pikaur** est installé :  
+Voir <https://github.com/morganamilo/paru> et <https://aur.archlinux.org/packages/paru>  
 Voir <https://github.com/Jguer/yay> et <https://aur.archlinux.org/packages/yay>  
-Voir <https://github.com/morganamilo/paru> et <https://aur.archlinux.org/packages/paru>
+Voir <https://github.com/actionless/pikaur> et <https://aur.archlinux.org/packages/pikaur>
 
 ### Support de Flatpak
 
diff --git a/README.md b/README.md
index d7e18da..88cdbe5 100644
--- a/README.md
+++ b/README.md
@@ -34,7 +34,7 @@ Features:
 - Automatic check for pending kernel updates requiring a reboot to be applied and offers to do so if there's one.
 - Automatic check for services requiring a post upgrade restart and offers to do so if there are.
 - Support for `sudo`, `doas` & `run0`.
-- Optional support for AUR packages (through `yay` or `paru`).
+- Optional support for AUR packages (through `paru`, `yay` or `pikaur`).
 - Optional support for Flatpak packages.
 - Optional support for desktop notifications on new available updates.
 
@@ -55,8 +55,9 @@ sudo pacman -S --needed pacman-contrib archlinux-contrib curl fakeroot htmlq dif
 
 Additional optional dependencies you might need or want:
 
-- [yay](https://aur.archlinux.org/packages/yay): AUR Packages support
 - [paru](https://aur.archlinux.org/packages/paru): AUR Packages support
+- [yay](https://aur.archlinux.org/packages/yay): AUR Packages support
+- [pikaur](https://aur.archlinux.org/packages/pikaur): AUR Packages support
 - [flatpak](https://archlinux.org/packages/extra/x86_64/flatpak/): Flatpak Packages support
 - [libnotify](https://archlinux.org/packages/extra/x86_64/libnotify/): Desktop notifications support on new available updates (see <https://wiki.archlinux.org/title/Desktop_notifications>)
 - [vim](https://archlinux.org/packages/extra/x86_64/vim/): Default merge program for pacdiff
@@ -155,7 +156,7 @@ Alternatively, you can see the list of available updates in the dropdown menu en
 
 ![dropdown_menu](https://github.com/user-attachments/assets/4621d7d2-a9e4-40c3-851f-ee1687e6cf1e)
 
-When the systray icon is left-clicked, it prints the list of packages available for updates inside a terminal window and asks for the user's confirmation to proceed with the installation (it can also be launched by running the `arch-update` command, requires [yay](https://aur.archlinux.org/packages/yay "yay") or [paru](https://aur.archlinux.org/packages/paru "paru") for AUR packages support and [flatpak](https://archlinux.org/packages/extra/x86_64/flatpak/) for Flatpak packages support).
+When the systray icon is left-clicked, it prints the list of packages available for updates inside a terminal window and asks for the user's confirmation to proceed with the installation (it can also be launched by running the `arch-update` command, requires [paru](https://aur.archlinux.org/packages/paru "paru"), [yay](https://aur.archlinux.org/packages/yay "yay") or [pikaur](https://aur.archlinux.org/packages/pikaur "pikaur") for AUR packages support and [flatpak](https://archlinux.org/packages/extra/x86_64/flatpak/) for Flatpak packages support).
 
 ![listing_packages](https://github.com/Antiz96/arch-update/assets/53110319/ed552414-0dff-4cff-84d2-6ff13340259d)
 
@@ -238,7 +239,7 @@ The supported options are:
 - NoVersion # Do not show versions changes for packages when listing pending updates (including when using the `-l / --list` option).
 - AlwaysShowNews # Always display Arch news before updating, regardless of whether there's a new one since the last run or not.
 - NewsNum=[Num] # Number of Arch news to display before updating and with the `-n / --news` option (see the arch-update(1) man page for more details). Defaults to 5.
-- AURHelper=[AUR Helper] # AUR helper to be used for AUR packages support. Valid values are `paru` or `yay`. If this option is not set, Arch-Update will use the first available AUR helper in the following order: `paru` then `yay` (in case none of them is installed, Arch-Update will not take AUR packages into account).
+- AURHelper=[AUR Helper] # AUR helper to be used for AUR packages support. Valid values are `paru`, `yay` or `pikaur`. If this option is not set, Arch-Update will use the first available AUR helper in the following order: `paru` then `yay` then `pikaur` (in case none of them is installed, Arch-Update will not take AUR packages into account).
 - PrivilegeElevationCommand=[Cmd] # Command to be used for privilege elevation. Valid values are `sudo`, `doas` or `run0`. If this option is not set, Arch-Update will use the first available command in the following order: `sudo`, `doas` then `run0`.
 - KeepOldPackages=[Num] # Number of old packages' versions to keep in pacman's cache. Defaults to 3.
 - KeepUninstalledPackages=[Num] # Number of uninstalled packages' versions to keep in pacman's cache. Defaults to 0.
@@ -254,9 +255,10 @@ For more information, see the arch-update.conf(5) man page.
 
 ### AUR support
 
-Arch-Update supports AUR packages if **yay** or **paru** is installed:  
+Arch-Update supports AUR packages if **paru**, **yay** or **pikaur** is installed:  
+See <https://github.com/morganamilo/paru> and <https://aur.archlinux.org/packages/paru>  
 See <https://github.com/Jguer/yay> and <https://aur.archlinux.org/packages/yay>  
-See <https://github.com/morganamilo/paru> and <https://aur.archlinux.org/packages/paru>
+See <https://github.com/actionless/pikaur> and <https://aur.archlinux.org/packages/pikaur>
 
 ### Flatpak support
 
diff --git a/doc/man/arch-update.1 b/doc/man/arch-update.1
index 87fc32b..5c25e84 100644
--- a/doc/man/arch-update.1
+++ b/doc/man/arch-update.1
@@ -1,4 +1,4 @@
-.TH "ARCH-UPDATE" "1" "October 2024" "Arch-Update 3.3.0" "Arch-Update Manual"
+.TH "ARCH-UPDATE" "1" "November 2024" "Arch-Update 3.3.0" "Arch-Update Manual"
 
 .SH NAME
 arch-update \- An update notifier & applier for Arch Linux that assists you with important pre / post update tasks.
@@ -10,7 +10,7 @@ arch-update \- An update notifier & applier for Arch Linux that assists you with
 .SH DESCRIPTION
 An update notifier & applier for Arch Linux that assists you with important pre / post update tasks and that includes a clickeable systray applet for an easy integration with any panel on any Desktop Environment / Window Manager.
 .br
-.RB "Optional support for AUR packages update (through " "yay " "or " "paru" "), Flatpak packages update (through " "flatpak" ") and desktop notifications (through " "libnotify" ")."
+.RB "Optional support for AUR packages update (through " "paru" ", " "yay " "or " "pikaur" "), Flatpak packages update (through " "flatpak" ") and desktop notifications (through " "libnotify" ")."
 .br
 Arch-Update is designed to follow usual system maintenance steps, as described in the Arch Wiki at https://wiki.archlinux.org/title/System_maintenance.
 
@@ -18,7 +18,7 @@ Arch-Update is designed to follow usual system maintenance steps, as described i
 .PP
 If no option is passed, launch the relevant series of functions to perform a complete and proper update starting by displaying the list of packages available for update, then ask for the user's confirmation to proceed with the installation.
 .br
-.RB "It also supports AUR packages update (if " "yay " "or " "paru " "is installed) and Flatpak packages update (if " "flatpak " "is installed)."
+.RB "It also supports AUR packages update (if " "paru" ", " "yay " "or " "pikaur " "is installed) and Flatpak packages update (if " "flatpak " "is installed)."
 .br
 Before performing the update, it offers to display the latest Arch Linux news to the user. By default, Arch news are only displayed if at least a new one has been published since the last run. Arch news published since the last run or at the same date are tagged as '[NEW]'.
 .br
@@ -34,7 +34,7 @@ Check for available updates.
 .br
 It changes the systray icon and sends a desktop notification containing the number of available updates (if there are new available updates compared to the last check).
 .br
-.RB "It supports AUR packages update (if " "yay " "or " "paru " "is installed) and Flatpak packages update (if " "flatpak " "is installed)."
+.RB "It supports AUR packages update (if " "paru" ", " "yay " "or " "pikaur " "is installed) and Flatpak packages update (if " "flatpak " "is installed)."
 .br
 .RB "The " "\-\-check " "option is automatically launched at boot and then every hour if you enabled the associated " "systemd.timer " "with the following command:"
 .br
@@ -136,11 +136,13 @@ To start it automatically at boot, you can either:
 .SH TIPS AND TRICKS 
 .TP
 .B AUR Support
-.RB "Arch-Update supports AUR packages update when checking and installing updates if " "yay " "or " "paru " "is installed."
+.RB "Arch-Update supports AUR packages update when checking and installing updates if " "paru" ", " "yay " "or " "pikaur " "is installed."
+.br
+See https://github.com/morganamilo/paru and https://aur.archlinux.org/packages/paru
 .br
 See https://github.com/Jguer/yay and https://aur.archlinux.org/packages/yay
 .br
-See https://github.com/morganamilo/paru and https://aur.archlinux.org/packages/paru
+See https://github.com/actionless/pikaur and https://aur.archlinux.org/packages/pikaur
 
 .TP
 .B Flatpak Support
@@ -291,8 +293,9 @@ The diff prog editor set in the arch-update.conf configuration file isn't found
 .BR pacman (8),
 .BR pacdiff (8),
 .BR paccache (8),
-.BR yay (8),
 .BR paru (8),
+.BR yay (8),
+.BR pikaur (1),
 .BR flatpak (1),
 .BR arch-update.conf (5)
 
diff --git a/doc/man/arch-update.conf.5 b/doc/man/arch-update.conf.5
index 949bb07..ae9a631 100644
--- a/doc/man/arch-update.conf.5
+++ b/doc/man/arch-update.conf.5
@@ -1,4 +1,4 @@
-.TH "ARCH-UPDATE.CONF" "5" "October 2024" "Arch-Update 3.3.0" "Arch-Update Manual"
+.TH "ARCH-UPDATE.CONF" "5" "November 2024" "Arch-Update 3.3.0" "Arch-Update Manual"
 
 .SH NAME
 arch-update.conf \- arch-update configuration file.
@@ -37,7 +37,7 @@ Always display Arch news before updating, regardless of whether there's a new on
 
 .TP
 .B AURHelper=[AUR Helper]
-AUR helper to be used for AUR packages support. Valid values are paru or yay. If this option is not set, Arch-Update will use the first installed AUR helper in the following order: paru then yay (in case none of them is installed, Arch-Update will not take AUR packages into account).
+AUR helper to be used for AUR packages support. Valid values are paru, yay or pikaur. If this option is not set, Arch-Update will use the first installed AUR helper in the following order: paru then yay then pikaur (in case none of them is installed, Arch-Update will not take AUR packages into account).
 
 .TP
 .B PrivilegeElevationCommand=[Cmd]
diff --git a/doc/man/fr/arch-update.1 b/doc/man/fr/arch-update.1
index feae180..a209e46 100644
--- a/doc/man/fr/arch-update.1
+++ b/doc/man/fr/arch-update.1
@@ -1,4 +1,4 @@
-.TH "ARCH-UPDATE" "1" "Octobre 2024" "Arch-Update 3.3.0" "Manuel de Arch-Update"
+.TH "ARCH-UPDATE" "1" "Novembre 2024" "Arch-Update 3.3.0" "Manuel de Arch-Update"
 
 .SH NAME
 arch-update \- Un notificateur & applicateur de mises à jour pour Arch Linux qui vous assiste dans les tâches importantes d'avant / après mise à jour.
@@ -10,7 +10,7 @@ arch-update \- Un notificateur & applicateur de mises à jour pour Arch Linux qu
 .SH DESCRIPTION
 Un notificateur & applicateur de mises à jour pour Arch Linux qui vous assiste dans les tâches importantes d'avant / après mise à jour et qui inclut une applet systray cliquable pour une intégration facile avec n'importe quel panneau sur n'importe quel environnement de bureau ou gestionnaire de fenêtres.
 .br
-.RB "Prise en charge optionnelle des mises à jour des paquets AUR (via " "yay " "or " "paru" "), des mises à jour des paquets Flatpak (via " "flatpak" ") et des notifications de bureau (via " "libnotify" ")."
+.RB "Prise en charge optionnelle des mises à jour des paquets AUR (via " "paru" ", " "yay " "ou " "pikaur" "), des mises à jour des paquets Flatpak (via " "flatpak" ") et des notifications de bureau (via " "libnotify" ")."
 .br
 Arch-Update est conçu pour suivre les étapes usuelles de maintenance du système, telles que décrites dans le Arch Wiki à https://wiki.archlinux.org/title/System_maintenance.
 
@@ -18,7 +18,7 @@ Arch-Update est conçu pour suivre les étapes usuelles de maintenance du systè
 .PP
 Si aucune option n'est passée, lance la série de fonctions adéquates pour effectuer une mise à jour complète et correcte, en commençant par afficher la liste des paquets disponibles pour la mise à jour et en demandant la confirmation de l'utilisateur pour procéder à l'installation.
 .br
-.RB "Supporte les mises à jour des paquets AUR (si " "yay " "ou " "paru " "est installé) et des paquets Flatpak (si " "flatpak " "est installé)."
+.RB "Supporte les mises à jour des paquets AUR (si " "paru" ", " "yay " "ou " "pikaur " "est installé) et des paquets Flatpak (si " "flatpak " "est installé)."
 .br
 Avant d'effectuer la mise à jour, propose d'afficher les dernières Arch news à l'utilisateur. Par défaut, les Arch news sont seulement affichées si au moins une nouvelle news a été publiée depuis la dernière exécution. Les Arch news publiées depuis la dernière exécution ou à la même date sont étiquetées comme '[NOUVEAU]'.
 .br
@@ -34,7 +34,7 @@ Vérifier les mises à jour disponibles.
 .br
 Change l'icône du systray et envoie une notification de bureau contenant le nombre de mises à jour disponibles (s'il y a des nouvelles mises à jour disponibles depuis le dernier check).
 .br
-.RB "Supporte les mises à jour des paquets AUR (si " "yay " "ou " "paru " "est installé) et les mises à jour des paquets Flatpak (si " "flatpak " "est installé)."
+.RB "Supporte les mises à jour des paquets AUR (si " "paru" ", " "yay " "ou " "pikaur " "est installé) et les mises à jour des paquets Flatpak (si " "flatpak " "est installé)."
 .br
 .RB "L'option " "\-\-check " "est automatiquement lancée au démarrage du système puis une fois chaque heure si vous avez activé le " "systemd.timer " "associé avec la commande suivante :"
 .br
@@ -136,11 +136,13 @@ Pour la démarrer automatiquement au démarrage du système, utilisez l'une des
 .SH TRUCS ET ASTUCES
 .TP
 .B Prise en charge du AUR
-.RB "Arch-Update prend en charge la mise à jour des paquets AUR lors de la vérification et de l'installation des mises à jour si " "yay " "ou " "paru " "est installé."
+.RB "Arch-Update prend en charge la mise à jour des paquets AUR lors de la vérification et de l'installation des mises à jour si " "paru" ", " "yay " "ou " "pikaur " "est installé."
+.br
+Voir https://github.com/morganamilo/paru et https://aur.archlinux.org/packages/paru
 .br
 Voir https://github.com/Jguer/yay et https://aur.archlinux.org/packages/yay
 .br
-Voir https://github.com/morganamilo/paru et https://aur.archlinux.org/packages/paru
+Voir https://github.com/actionless/pikaur et https://aur.archlinux.org/packages/pikaur
 
 .TP
 .B Prise en charge de Flatpak
@@ -294,6 +296,7 @@ L'éditeur "diff prog" défini dans le fichier de configuration arch-update.conf
 .BR paccache (8),
 .BR yay (8),
 .BR paru (8),
+.BR pikaur (1),
 .BR flatpak (1),
 .BR arch-update.conf (5)
 
diff --git a/doc/man/fr/arch-update.conf.5 b/doc/man/fr/arch-update.conf.5
index 878d673..a9fa365 100644
--- a/doc/man/fr/arch-update.conf.5
+++ b/doc/man/fr/arch-update.conf.5
@@ -1,4 +1,4 @@
-.TH "ARCH-UPDATE.CONF" "5" "Octobre 2024" "Arch-Update 3.3.0" "Manuel de Arch-Update"
+.TH "ARCH-UPDATE.CONF" "5" "Novembre 2024" "Arch-Update 3.3.0" "Manuel de Arch-Update"
 
 .SH NAME
 arch-update.conf \- fichier de configuration pour arch-update.
@@ -37,7 +37,7 @@ Toujours afficher les Arch news avant de mettre à jour, peu importe s'il y en a
 
 .TP
 .B AURHelper=[AUR Helper]
-AUR helper à utiliser pour la prise en charge des paquets AUR. Les valeurs valides sont paru ou yay. Si cette option n'est pas spécifiée, Arch-Update utilisera le premier AUR helper disponible dans l'ordre suivant : paru puis yay (si aucun des deux n'est installé, Arch-Update ne prendra pas en compte les paquets AUR).
+AUR helper à utiliser pour la prise en charge des paquets AUR. Les valeurs valides sont paru, yay ou pikaur. Si cette option n'est pas spécifiée, Arch-Update utilisera le premier AUR helper disponible dans l'ordre suivant : paru puis yay puis pikaur (si aucun des deux n'est installé, Arch-Update ne prendra pas en compte les paquets AUR).
 
 .TP
 .B PrivilegeElevationCommand=[Cmd]
diff --git a/src/arch-update.sh b/src/arch-update.sh
index bdb9bb3..8b37eec 100755
--- a/src/arch-update.sh
+++ b/src/arch-update.sh
@@ -44,7 +44,7 @@ case "${option}" in
 		source "${libdir}/full_upgrade.sh"
 	;;
 	-d|--devel)
-		# Set the "--devel" flag for AUR helpers (yay / paru)
+		# Set the "--devel" flag for AUR helpers
 		devel_flag+=("--devel")
 
 		# Source the "full_upgrade" library which executes the series of relevant functions / libraries to perform a complete and proper update of the system
diff --git a/src/lib/check.sh b/src/lib/check.sh
index 9bb64b9..aaebbef 100755
--- a/src/lib/check.sh
+++ b/src/lib/check.sh
@@ -5,9 +5,9 @@
 # SPDX-License-Identifier: GPL-3.0-or-later
 
 if [ -n "${aur_helper}" ] && [ -n "${flatpak}" ]; then
-	update_available=$(checkupdates ; "${aur_helper}" -Qua ; flatpak update | sed -n '/^ 1./,$p' | awk '{print $2}' | grep -v '^$' | sed '$d')
+	update_available=$(checkupdates ; "${aur_helper}" -Qua 2> /dev/null | sed 's/^ *//' | sed 's/ \+/ /g' ; flatpak update | sed -n '/^ 1./,$p' | awk '{print $2}' | grep -v '^$' | sed '$d')
 elif [ -n "${aur_helper}" ] && [ -z "${flatpak}" ]; then
-	update_available=$(checkupdates ; "${aur_helper}" -Qua)
+	update_available=$(checkupdates ; "${aur_helper}" -Qua 2> /dev/null | sed 's/^ *//' | sed 's/ \+/ /g')
 elif [ -z "${aur_helper}" ] && [ -n "${flatpak}" ]; then
 	update_available=$(checkupdates ; flatpak update | sed -n '/^ 1./,$p' | awk '{print $2}' | grep -v '^$' | sed '$d')
 else
diff --git a/src/lib/common.sh b/src/lib/common.sh
index 4fd7c7f..3966bae 100755
--- a/src/lib/common.sh
+++ b/src/lib/common.sh
@@ -117,6 +117,9 @@ if [ -z "${aur_helper}" ]; then
 	elif command -v yay > /dev/null; then
 		# shellcheck disable=SC2034
 		aur_helper="yay"
+	elif command -v pikaur > /dev/null; then
+		# shellcheck disable=SC2034
+		aur_helper="pikaur"
 	fi
 else
 	if ! command -v "${aur_helper}" > /dev/null; then
diff --git a/src/lib/config.sh b/src/lib/config.sh
index d854f47..62eb624 100755
--- a/src/lib/config.sh
+++ b/src/lib/config.sh
@@ -28,7 +28,7 @@ if [ -f "${config_file}" ]; then
 
 	# Check the "AURHelper" option in arch-update.conf
 	# shellcheck disable=SC2034
-	aur_helper=$(grep -E '^[[:space:]]*AURHelper[[:space:]]*=[[:space:]]*(paru|yay)[[:space:]]*$' "${config_file}" 2> /dev/null | awk -F '=' '{print $2}' | tr -d '[:space:]')
+	aur_helper=$(grep -E '^[[:space:]]*AURHelper[[:space:]]*=[[:space:]]*(paru|yay|pikaur)[[:space:]]*$' "${config_file}" 2> /dev/null | awk -F '=' '{print $2}' | tr -d '[:space:]')
 
 	# Check the "PrivilegeElevationCommand" option in arch-update.conf
 	# shellcheck disable=SC2034
diff --git a/src/lib/list_packages.sh b/src/lib/list_packages.sh
index 04b237d..d75ac25 100755
--- a/src/lib/list_packages.sh
+++ b/src/lib/list_packages.sh
@@ -17,10 +17,10 @@ fi
 if [ -n "${aur_helper}" ]; then
 	if [ -z "${no_version}" ]; then
 		# shellcheck disable=SC2154
-		aur_packages=$("${aur_helper}" --color "${pacman_color_opt}" "${devel_flag[@]}" -Qua)
+		aur_packages=$("${aur_helper}" --color "${pacman_color_opt}" "${devel_flag[@]}" -Qua 2> /dev/null | sed 's/^ *//' | sed 's/ \+/ /g')
 	else
 		# shellcheck disable=SC2154
-		aur_packages=$("${aur_helper}" --color "${pacman_color_opt}" "${devel_flag[@]}" -Qua | awk '{print $1}')
+		aur_packages=$("${aur_helper}" --color "${pacman_color_opt}" "${devel_flag[@]}" -Qua 2> /dev/null | sed 's/^ *//' | sed 's/ \+/ /g' | awk '{print $1}')
 	fi
 fi