mirror of
https://github.com/YunoHost/package_check.git
synced 2024-09-03 20:06:20 +02:00
[ref] Check and read CLI arguments
Refactoring of the block which read and parse the arguments
This commit is contained in:
parent
ba86a4fc01
commit
0b2bf64902
4 changed files with 138 additions and 58 deletions
173
package_check.sh
173
package_check.sh
|
@ -1,65 +1,144 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Arguments du script
|
#=================================================
|
||||||
# --bash-mode Mode bash, le script est autonome. Il ignore la valeur de $auto_remove
|
# Grab the script directory
|
||||||
# --build-lxc Installe lxc et créer la machine si nécessaire.
|
#=================================================
|
||||||
# --branch=nom-de-la-branche Teste une branche du dépôt, plutôt que tester master
|
|
||||||
# --force-install-ok Force la réussite des installations, même si elles échouent. Permet d'effectuer les tests qui suivent même si l'installation a échouée.
|
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$(echo $PWD/$(dirname "$0" | cut -d '.' -f2) | sed 's@/$@@')"; fi
|
||||||
# --interrupt Force l'option auto_remove à 0.
|
|
||||||
# --no-lxc N'utilise pas la virtualisation en conteneur lxc. La virtualisation est utilisée par défaut si disponible.
|
#=================================================
|
||||||
# --help Affiche l'aide du script
|
# Check and read CLI arguments
|
||||||
|
#=================================================
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
# Init arguments value
|
||||||
|
gitbranch=0
|
||||||
|
force_install_ok=0
|
||||||
|
interrupt=0
|
||||||
notice=0
|
notice=0
|
||||||
|
build_lxc=0
|
||||||
|
bash_mode=0
|
||||||
|
|
||||||
|
# If no arguments provided
|
||||||
if [ "$#" -eq 0 ]
|
if [ "$#" -eq 0 ]
|
||||||
then
|
then
|
||||||
echo "Le script prend en argument le package à tester."
|
# Print the help and exit
|
||||||
|
notice=1
|
||||||
|
else
|
||||||
|
# Reduce the arguments for getopts
|
||||||
|
arguments="$*"
|
||||||
|
arguments=${arguments//--branch=/-b }
|
||||||
|
arguments=${arguments//--force-install-ok/-f}
|
||||||
|
arguments=${arguments//--interrupt/-i}
|
||||||
|
arguments=${arguments//--help/-h}
|
||||||
|
arguments=${arguments//--build-lxc/-l}
|
||||||
|
arguments=${arguments//--bash-mode/-y}
|
||||||
|
|
||||||
|
# Read and parse all the arguments
|
||||||
|
while [ $# -ne 0 ]
|
||||||
|
do
|
||||||
|
# Initialize getopts' index
|
||||||
|
OPTIND=1
|
||||||
|
# Parse with getopts only if the argument begin by -
|
||||||
|
if [ ${1:0:1} = "-" ]
|
||||||
|
then
|
||||||
|
getopts ":b:fihly " parameter
|
||||||
|
case $parameter in
|
||||||
|
b)
|
||||||
|
# --branch=branch-name
|
||||||
|
gitbranch="$OPTARG"
|
||||||
|
;;
|
||||||
|
f)
|
||||||
|
# --force-install-ok
|
||||||
|
force_install_ok=1
|
||||||
|
;;
|
||||||
|
i)
|
||||||
|
# --interrupt
|
||||||
|
interrupt=1
|
||||||
|
;;
|
||||||
|
h)
|
||||||
|
# --help
|
||||||
|
notice=1
|
||||||
|
;;
|
||||||
|
l)
|
||||||
|
# --build-lxc
|
||||||
|
build_lxc=1
|
||||||
|
;;
|
||||||
|
y)
|
||||||
|
# --bash-mode
|
||||||
|
bash_mode=1
|
||||||
|
;;
|
||||||
|
\?)
|
||||||
|
echo "Invalid argument: -$OPTARG" >&2
|
||||||
|
notice=1
|
||||||
|
;;
|
||||||
|
:)
|
||||||
|
echo "-$OPTARG parameter requires an argument." >&2
|
||||||
|
notice=1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
other_args="$other_args $1"
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prevent a conflict between --interrupt and --bash-mode
|
||||||
|
if [ $interrupt -eq 1 ] && [ $bash_mode -eq 1 ]
|
||||||
|
then
|
||||||
|
echo "You can't use --interrupt and --bash-mode together !"
|
||||||
notice=1
|
notice=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## Récupère les arguments
|
# Print help
|
||||||
# --bash-mode
|
if [ $notice -eq 1 ]
|
||||||
bash_mode=$(echo "$*" | grep -c -e "--bash-mode") # bash_mode vaut 1 si l'argument est présent.
|
then
|
||||||
# --no-lxc
|
cat << EOF
|
||||||
no_lxc=$(echo "$*" | grep -c -e "--no-lxc") # no_lxc vaut 1 si l'argument est présent.
|
|
||||||
# --build-lxc
|
|
||||||
build_lxc=$(echo "$*" | grep -c -e "--build-lxc") # build_lxc vaut 1 si l'argument est présent.
|
|
||||||
# --force-install-ok
|
|
||||||
force_install_ok=$(echo "$*" | grep -c -e "--force-install-ok") # force-install-ok vaut 1 si l'argument est présent.
|
|
||||||
# --branch=
|
|
||||||
gitbranch=$(echo "$*" | grep -e "--branch") # gitbranch prend l'ensemble des arguments à partir de --branch
|
|
||||||
# --interrupt
|
|
||||||
interrupt=$(echo "$*" | grep -c -e "--interrupt") # interrupt vaut 1 si l'argument est présent.
|
|
||||||
if test -n "$gitbranch"; then
|
|
||||||
if ! echo "$gitbranch" | grep -q "branch=[[:alnum:]]"; then
|
|
||||||
notice=1 # Renvoi vers l'aide si la syntaxe est incorrecte
|
|
||||||
else
|
|
||||||
gitbranch="--branch $(echo "$gitbranch" | cut -d'=' -f2 | cut -d' ' -f1)" # Isole le nom de la branche entre le = et l'espace. Et ajoute l'argument de git clone
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
# --help
|
|
||||||
if [ "$notice" -eq 0 ]; then
|
|
||||||
notice=$(echo "$*" | grep -c -e "--help") # notice vaut 1 si l'argument est présent. Il affichera alors l'aide.
|
|
||||||
fi
|
|
||||||
arg_app=$(echo "$*" | sed 's/--bash-mode\|--no-lxc\|--build-lxc\|--force-install-ok\|--interrupt\|--branch=[[:alnum:]-]*//g' | sed 's/^ *\| *$//g') # Supprime les arguments déjà lu pour ne garder que l'app. Et supprime les espaces au début et à la fin
|
|
||||||
# echo "arg_app=$arg_app."
|
|
||||||
|
|
||||||
if [ "$notice" -eq 1 ]; then
|
Usage:
|
||||||
echo -e "\nUsage:"
|
package_check.sh [OPTION]... PACKAGE_TO_CHECK
|
||||||
echo "package_check.sh [--bash-mode] [--branch=] [--build-lxc] [--force-install-ok] [--no-lxc] [--help] \"package to check\""
|
-b, --branch=BRANCH
|
||||||
echo -e "\n\t--bash-mode\t\tDo not ask for continue check. Ignore auto_remove."
|
Specify a branch to check.
|
||||||
echo -e "\t--branch=branch-name\tSpecify a branch to check."
|
-f, --force-install-ok
|
||||||
echo -e "\t--build-lxc\t\tInstall LXC and build the container if necessary."
|
Force following test even if all install have failed.
|
||||||
echo -e "\t--force-install-ok\tForce following test even if all install are failed."
|
-i, --interrupt
|
||||||
echo -e "\t--interrupt\tForce auto_remove value, break before each remove."
|
Force auto_remove value, break before each remove.
|
||||||
echo -e "\t--no-lxc\t\tDo not use a LXC container. You should use this option only on a test environnement."
|
-h, --help
|
||||||
echo -e "\t--help\t\t\tDisplay this notice."
|
Display this notice.
|
||||||
|
-l, --build-lxc
|
||||||
|
Install LXC and build the container if necessary.
|
||||||
|
-y, --bash-mode
|
||||||
|
Do not ask for continue check. Ignore auto_remove.
|
||||||
|
EOF
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Récupère le dossier du script
|
|
||||||
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$(echo $PWD/$(dirname "$0" | cut -d '.' -f2) | sed 's@/$@@')"; fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# Globals variables
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
complete_log="$script_dir/Complete.log"
|
||||||
|
temp_log="$script_dir/temp_yunohost-cli.log"
|
||||||
|
temp_result="$script_dir/temp_result.log"
|
||||||
|
test_result="$script_dir/Test_results.log"
|
||||||
|
yunohost_log="/var/lib/lxc/\$LXC_NAME/rootfs/var/log/yunohost/yunohost-cli.log"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Détermine l'environnement d'exécution de Package check
|
# Détermine l'environnement d'exécution de Package check
|
||||||
type_exec_env=0 # Par défaut, exécution de package check seul
|
type_exec_env=0 # Par défaut, exécution de package check seul
|
||||||
|
|
|
@ -1,11 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
temp_log="$script_dir/temp_yunohost-cli.log"
|
|
||||||
# yunohost_log="/var/lib/lxc/$LXC_NAME/rootfs/var/log/yunohost/yunohost-cli.log"
|
|
||||||
yunohost_log="/var/lib/lxc/pchecker_lxc/rootfs/var/log/yunohost/yunohost-cli.log"
|
|
||||||
complete_log="$script_dir/Complete.log"
|
|
||||||
temp_result="$script_dir/temp_result.log"
|
|
||||||
|
|
||||||
echo "Load functions from log_extractor.sh"
|
echo "Load functions from log_extractor.sh"
|
||||||
|
|
||||||
ECHO_FORMAT () {
|
ECHO_FORMAT () {
|
||||||
|
|
|
@ -1,9 +1,14 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# arg_ssh="-t"
|
echo -e "Load functions from lxc_launcher.sh"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# Globals variables
|
||||||
|
#=================================================
|
||||||
|
|
||||||
arg_ssh="-tt"
|
arg_ssh="-tt"
|
||||||
|
|
||||||
echo -e "Load functions from lxc_launcher.sh"
|
#=================================================
|
||||||
|
|
||||||
is_lxc_running () {
|
is_lxc_running () {
|
||||||
sudo lxc-info --name=$LXC_NAME | grep --quiet "RUNNING"
|
sudo lxc-info --name=$LXC_NAME | grep --quiet "RUNNING"
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
test_result="$script_dir/Test_results.log"
|
|
||||||
backup_hooks="conf_ssowat data_home conf_ynh_firewall conf_cron" # La liste des hooks disponible pour le backup se trouve dans /usr/share/yunohost/hooks/backup/
|
|
||||||
|
|
||||||
echo -e "Load functions from testing_process.sh"
|
echo -e "Load functions from testing_process.sh"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# Globals variables
|
# Globals variables
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
# A complete list of backup hooks is available at /usr/share/yunohost/hooks/backup/
|
||||||
|
backup_hooks="conf_ssowat data_home conf_ynh_firewall conf_cron"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
|
||||||
break_before_continue () {
|
break_before_continue () {
|
||||||
# Make a break if auto_remove is set
|
# Make a break if auto_remove is set
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue