From b7a3e098696ecddaf13703e52cab2a7d37daf7e1 Mon Sep 17 00:00:00 2001 From: kamzata Date: Sun, 4 Feb 2024 03:26:55 +0100 Subject: [PATCH] Add settings menu, update OCB, and update all options --- oca-repos-manager.sh | 150 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 129 insertions(+), 21 deletions(-) diff --git a/oca-repos-manager.sh b/oca-repos-manager.sh index 8933df8..529ff41 100644 --- a/oca-repos-manager.sh +++ b/oca-repos-manager.sh @@ -29,9 +29,35 @@ readonly color_end="\e[0m" readonly bold="\e[1m" readonly bold_end="\e[0m" +update_all() { + local repos=( $(get_local_repos) ) + + update_oca_repos "${repos[@]}" + update_ocb +} + +update_ocb() { + local exit_code + + printf "\n%s\n" "Start updating OCB..." + + echo "Entering: ${ocb_install_path}" >&2 + cd ${ocb_install_path} && git pull + exit_code=$? + if [[ "${exit_code}" -ne 0 ]]; then + printf "${color_danger}%s${color_end},\n" "Error! Something was wrong updating OCB..." + fi + + if [[ "${exit_code}" -eq 0 ]]; then + printf "\n${bold}%b${bold_end}\n" "Update complete!" + else + printf "${color_danger}%s${color_end}\n" "Error! Something was wrong during the update process." + exit 1 + fi +} show_installed_repos_path() { - local content=( $( find ${oca_addons_install_path} -type d -mindepth 1 -maxdepth 1 ) ) + local content=( $( find ${oca_addons_install_path} -mindepth 1 -maxdepth 1 -type d ) ) if [[ -z ${content[@]} ]]; then printf "\n\n\t\t${bold}%b${bold_end}\n" "No repositories found!" else @@ -45,14 +71,14 @@ get_local_repos() { echo "${local_repos[@]}" } -update() { +select_oca_repos_to_update() { local repos=( $(get_local_repos) ) local selected_repos - select_repos "update_cmd" "${repos[@]}" + select_repos "update_oca_repos" "${repos[@]}" } -update_cmd() { +update_oca_repos() { local exit_code printf "\n%s\n" "Start updating..." @@ -73,7 +99,7 @@ update_cmd() { fi } -clone() { +select_repos_to_clone() { local repos while true; do @@ -90,11 +116,11 @@ clone() { repos=( $(get_repos_names) ) - select_repos "clone_cmd" "${repos[@]}" + select_repos "clone_repos" "${repos[@]}" show_installed_repos_path } -clone_cmd() { +clone_repos() { local exit_code printf "\n%s\n" "Start cloning..." @@ -313,6 +339,33 @@ set_oca_addons_install_path() { save_in_config_file "oca_addons_install_path" "${path_selected}" } +set_ocb_install_path() { + local path_selected + + while true; do + printf "\n\n%s\n" "Please, insert the OCB install path." + echo "[Enter for default: /opt/odoo/${odoo_version}/OCB/ ]:" + echo -n "==> " + read -e path_selected + + if [[ -z "${path_selected:-}" ]]; then + path_selected="/opt/odoo/${odoo_version}/OCB/" + fi + + if [[ ! -d "${path_selected}" ]]; then + printf "\n\n${color_danger}%s${color_end}" "Path doesn't exist! Please, insert an existing one." + continue + fi + + break + done + + # Remove trailing slash if present + path_selected="${path_selected%/}" + + save_in_config_file "ocb_install_path" "${path_selected}" +} + set_odoo_version() { local odoo_version_selected @@ -350,20 +403,65 @@ get_config_file() { source "${orm_file}" 2>/dev/null } +settings_menu() { + while true; do + echo + echo "********************************************************" + echo " SETTINGS " + echo "********************************************************" + printf "${bold}%s ${color_success}%b${color_end}\n" " > Odoo target version:" "${odoo_version}" + printf "${bold}%s ${color_success}%b${color_end}\n" " > OCB install path:" "${ocb_install_path}" + printf "${bold}%s ${color_success}%b${color_end}\n" " > OCA addons install path:" "${oca_addons_install_path}" + echo "********************************************************" + echo + echo "1) Change Odoo target version" + echo "2) Change OCB install path" + echo "3) Change OCA addons install path" + echo "---" + echo "4) Back" + echo + echo -n "==> " + read -sn 1 + + case "${REPLY}" in + 1) + set_odoo_version + continue + ;; + 2) + set_ocb_install_path + continue + ;; + 3) + set_oca_addons_install_path + continue + ;; + 4) + main_menu + break + ;; + *) + echo "Choice not valid!" + continue + ;; + esac + done +} + main_menu() { while true; do echo echo "********************************************************" - printf "${bold}%s ${color_success}%b${color_end}\n" " > Odoo target version:" "${odoo_version}" - printf "${bold}%s ${color_success}%b${color_end}\n" " > OCA addons install path:" "${oca_addons_install_path}" + printf "\t\t\t${bold}%s${bold_end}\n" "MAIN MENU" echo "********************************************************" echo echo "1) Clone OCA repositories" - echo "2) Update OCA repositories already cloned" - echo "3) Show installed repositories path for Odoo config file" + echo "2) Show installed repositories path for Odoo config file" + echo "3) Update OCA repositories already cloned" + echo "4) Update OCB" + echo "5) Update All" echo "---" - echo "4) Change Odoo target version" - echo "5) Change OCA addons install path" + echo "6) Settings" echo "---" echo "q) Exit" echo @@ -372,26 +470,32 @@ main_menu() { case "${REPLY}" in 1) - clone + select_repos_to_clone read -p $'\nPress any key to continue...' continue ;; 2) - update - read -p $'\nPress any key to continue...' - continue - ;; - 3) show_installed_repos_path read -p $'\nPress any key to continue...' continue ;; + 3) + select_oca_repos_to_update + read -p $'\nPress any key to continue...' + continue + ;; 4) - set_odoo_version + update_ocb + read -p $'\nPress any key to continue...' continue ;; 5) - set_oca_addons_install_path + update_all + read -p $'\nPress any key to continue...' + continue + ;; + 6) + settings_menu continue ;; q|Q) @@ -439,6 +543,10 @@ main() { set_odoo_version fi + if [[ -z "${ocb_install_path+x:-}" ]]; then + set_ocb_install_path + fi + if [[ -z "${oca_addons_install_path+x:-}" ]]; then set_oca_addons_install_path fi