diff --git a/manifest.json b/manifest.json
index 0233b0f..6bc8b0c 100644
--- a/manifest.json
+++ b/manifest.json
@@ -13,7 +13,7 @@
"previous_maintainers": {
"name": "scith"
},
- "version": "12.0-1",
+ "version": "12.0-5",
"url": "https://github.com/YunoHost-Apps/libreerp_ynh",
"license": "LGPL-3.0,AGPL-3.0",
"requirements": {
diff --git a/scripts/_common.sh b/scripts/_common.sh
index 40dd478..5007306 100644
--- a/scripts/_common.sh
+++ b/scripts/_common.sh
@@ -6,10 +6,7 @@ export APPNAME="libreerp"
export FORKNAME="odoo"
DEPENDENCIES="curl postgresql xfonts-75dpi xfonts-base wkhtmltopdf node-less python3-dev gcc libldap2-dev libssl-dev libsasl2-dev python3-pip python3-dev python3-venv python3-wheel libxslt-dev libzip-dev python3-setuptools python-virtualenv python-wheel python-setuptools libjpeg-dev zlib1g-dev"
-function setup_files() {
-
- ynh_setup_source $final_path/$APPNAME $app_version
-
+function debranding() {
# Remove Odoo references to avoid trademark issue
if [ -d $final_path/$APPNAME/$FORKNAME ]; then
python_app=$final_path/$APPNAME/$FORKNAME
@@ -24,20 +21,28 @@ function setup_files() {
sed -i 's/]*>Documentation<\/a>//g' $final_path/$APPNAME/addons/web/static/src/xml/base.xml
sed -i 's/]*>Support<\/a>//g' $final_path/$APPNAME/addons/web/static/src/xml/base.xml
cp ../conf/logo_type.png $python_app/addons/base/static/img/logo_white.png
+
+}
+function setup_files() {
+
+ ynh_setup_source $final_path/$APPNAME $app_version
+ debranding
mkdir -p $final_path/custom-addons
chown -R $app:$app $final_path
- ynh_configure server.conf $conf_file
- chown $app:$app $conf_file
-
- # Autoinstall the LDAP auth module
- if ls $final_path/$APPNAME/$FORKNAME-bin > /dev/null ; then
- ynh_replace_string "^{$" "{'auto_install': True," ${final_path}/$APPNAME/addons/auth_ldap/__manifest__.py
- else
- ynh_replace_string "'auto_install': False" "'auto_install': True" ${final_path}/$APPNAME/addons/auth_ldap/__openerp__.py
- fi
-
touch /var/log/$app.log
chown $app:$app /var/log/$app.log
+
+ if [ ! -f $conf_file ]; then
+ ynh_configure server.conf $conf_file
+ chown $app:$app $conf_file
+
+ # Autoinstall the LDAP auth module
+ if ls $final_path/$APPNAME/$FORKNAME-bin > /dev/null ; then
+ ynh_replace_string "^{$" "{'auto_install': True," ${final_path}/$APPNAME/addons/auth_ldap/__manifest__.py
+ else
+ ynh_replace_string "'auto_install': False" "'auto_install': True" ${final_path}/$APPNAME/addons/auth_ldap/__openerp__.py
+ fi
+ fi
}
# Install dependencies
@@ -47,7 +52,14 @@ function install_dependencies() {
if ! wkhtmltopdf --version | grep "wkhtmltopdf 0.12.4 (with patched qt)"; then
# The debian package has a bug so we deploy a more recent version
- ynh_setup_source /usr/
+ if [ -f '../manifest.json' ] ; then
+ ynh_setup_source /usr/
+ else
+ OLD_YNH_CWD=$YNH_CWD
+ YNH_CWD=$YNH_CWD/../settings/conf
+ ynh_setup_source /usr/
+ YNH_CWD=$OLD_YNH_CWD
+ fi
fi
pushd $final_path
if grep "python3" $final_path/$APPNAME/$FORKNAME-bin ; then
diff --git a/scripts/_future.sh b/scripts/_future.sh
index 366de51..c0d4dc7 100644
--- a/scripts/_future.sh
+++ b/scripts/_future.sh
@@ -33,7 +33,11 @@ ynh_configure () {
local TEMPLATE=$1
local DEST=$2
mkdir -p "$(dirname $DEST)"
- ynh_render_template "${YNH_CWD}/../conf/$TEMPLATE.j2" "$DEST"
+ if [ -f '../manifest.json' ] ; then
+ ynh_render_template "${YNH_CWD}/../conf/$TEMPLATE.j2" "$DEST"
+ else
+ ynh_render_template "${YNH_CWD}/../settings/conf/$TEMPLATE.j2" "$DEST"
+ fi
}
ynh_configure_nginx () {
@@ -323,3 +327,48 @@ ynh_del_swap () {
rm /swap
fi
}
+
+# Checks the app version to upgrade with the existing app version and returns:
+# - UPGRADE_APP if the upstream app version has changed
+# - UPGRADE_PACKAGE if only the YunoHost package has changed
+#
+## It stops the current script without error if the package is up-to-date
+#
+# This helper should be used to avoid an upgrade of an app, or the upstream part
+# of it, when it's not needed
+#
+# To force an upgrade, even if the package is up to date,
+# you have to set the variable YNH_FORCE_UPGRADE before.
+# example: sudo YNH_FORCE_UPGRADE=1 yunohost app upgrade MyApp
+
+# usage: ynh_check_app_version_changed
+ynh_check_app_version_changed () {
+ local force_upgrade=${YNH_FORCE_UPGRADE:-0}
+ local package_check=${PACKAGE_CHECK_EXEC:-0}
+
+ # By default, upstream app version has changed
+ local return_value="UPGRADE_APP"
+
+ local current_version=$(ynh_read_json "/etc/yunohost/apps/$YNH_APP_INSTANCE_NAME/manifest.json" "version" || echo 1.0)
+ local current_upstream_version="${current_version/~ynh*/}"
+ local update_version=$(ynh_read_manifest "version" || echo 1.0)
+ local update_upstream_version="${update_version/~ynh*/}"
+
+ if [ "$current_version" == "$update_version" ] ; then
+ # Complete versions are the same
+ if [ "$force_upgrade" != "0" ]
+ then
+ echo "Upgrade forced by YNH_FORCE_UPGRADE." >&2
+ unset YNH_FORCE_UPGRADE
+ elif [ "$package_check" != "0" ]
+ then
+ echo "Upgrade forced for package check." >&2
+ else
+ ynh_die "Up-to-date, nothing to do" 0
+ fi
+ elif [ "$current_upstream_version" == "$update_upstream_version" ] ; then
+ # Upstream versions are the same, only YunoHost package versions differ
+ return_value="UPGRADE_PACKAGE"
+ fi
+ echo $return_value
+}
diff --git a/scripts/install b/scripts/install
index d268c6c..ed4884c 100644
--- a/scripts/install
+++ b/scripts/install
@@ -30,7 +30,6 @@ export port_chat=$(ynh_find_port 8072)
# CHECK IF THE APP CAN BE INSTALLED WITH THIS ARGS
#=================================================
test ! -e "$final_path" || ynh_die "This path already contains a folder"
-ynh_webpath_available $domain "/"
ynh_webpath_register $app $domain "/"
diff --git a/scripts/remove b/scripts/remove
index 83843ec..92462ab 100644
--- a/scripts/remove
+++ b/scripts/remove
@@ -11,12 +11,14 @@ app=$YNH_APP_INSTANCE_NAME
# Retrieve app settings
domain=$(ynh_app_setting_get "$app" domain)
final_path=$(ynh_app_setting_get "$app" final_path)
+conf_file=$(ynh_app_setting_get "$app" conf_file)
yunohost service stop $app
yunohost service remove $app
ynh_psql_remove_db $app $app
ynh_secure_remove "$final_path"
+ynh_secure_remove "$conf_file"
ynh_remove_app_dependencies
diff --git a/scripts/restore b/scripts/restore
index 9202517..ac1e39f 100644
--- a/scripts/restore
+++ b/scripts/restore
@@ -19,6 +19,13 @@ export db_pass=$(ynh_app_setting_get $app psqlpwd)
export final_path=$(ynh_app_setting_get $app final_path)
export conf_file=$(ynh_app_setting_get $app conf_file)
export is_public=0
+export bin_file="$final_path/venv/bin/python $final_path/$APPNAME/$FORKNAME-bin"
+if [ "$app_version" = "9" ]; then
+ bin_file="$final_path/venv/bin/python $final_path/$APPNAME/$FORKNAME.py"
+fi
+if [ "$app_version" = "8" ]; then
+ bin_file="$final_path/venv/bin/python $final_path/$APPNAME/$FORKNAME.py"
+fi
#=================================================
# CHECK IF THE APP CAN BE RESTORED
diff --git a/scripts/upgrade b/scripts/upgrade
index 0d3776e..1008026 100644
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -19,17 +19,18 @@ source _common.sh
export app=$YNH_APP_INSTANCE_NAME
export domain=$(ynh_app_setting_get "$app" domain)
export app_version=$(ynh_app_setting_get "$app" app_version)
-export is_master=$(ynh_app_setting_get "$app" is_master)
export oca=$(ynh_app_setting_get "$app" oca)
export port=$(ynh_app_setting_get $app port)
+export port_chat=$(ynh_app_setting_get $app port_chat)
export is_public=0
-export major_upgrade=$(ynh_app_setting_get $app major_upgrade)
+export final_path=$(ynh_app_setting_get $app final_path)
+export conf_file=$(ynh_app_setting_get $app conf_file)
#=================================================
# CHECK VERSION
#=================================================
-ynh_abort_if_up_to_date
+ynh_check_app_version_changed
#=================================================
# STANDARD UPGRADE STEPS
@@ -50,24 +51,6 @@ ynh_abort_if_errors
#=================================================
# STEP Migrations
#=================================================
-# Zamentur version https://github.com/zamentur/odoo_ynh/commit/cdeb9afbf218431781f752dedfbf4247afbd5b44
-if ynh_version_le "9.0-0" ; then
- # set new args
- app_version=${app_version:-$(ynh_app_setting_get "$app" version)}
- port=${port:-8069}
- oca=${oca:-false}
- ynh_save_args app_version oca is_master port
-
- # Install official debian package
- install_dependencies
-fi
-
-if ynh_version_le "11.0-1" ; then
- # By default we don't upgrade to major version
- major_upgrade=${major_upgrade:-0}
- ynh_save_args major_upgrade
-fi
-
ynh_system_user_create $app
setup_files
install_dependencies