From 744fdf5867eff9ffd3d7b9075008190970ad6d15 Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Sat, 31 Aug 2024 02:59:01 +0200 Subject: [PATCH 1/7] [autopatch] Automatic patch attempt for helpers 2.1 --- .gitignore | 1 + manifest.toml | 3 ++- scripts/_common.sh | 20 ++++------------ scripts/backup | 27 +++++++-------------- scripts/change_url | 40 ++++++++++++------------------- scripts/install | 44 ++++++++++++++-------------------- scripts/remove | 31 ++++++++++-------------- scripts/restore | 42 +++++++++++++------------------- scripts/upgrade | 60 +++++++++++++++++++--------------------------- 9 files changed, 104 insertions(+), 164 deletions(-) diff --git a/.gitignore b/.gitignore index 783a4ae..8f144f3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *~ *.sw[op] +.DS_Store diff --git a/manifest.toml b/manifest.toml index d58c483..de54218 100644 --- a/manifest.toml +++ b/manifest.toml @@ -15,7 +15,8 @@ code = "https://github.com/AnalogJ/scrutiny" fund = "https://paypal.me/analogj/usd10" [integration] -yunohost = ">= 11.2" +yunohost = ">= 11.2.18" +helpers_version = "2.1" architectures = ["amd64", "arm64"] multi_instance = false ldap = "not_relevant" diff --git a/scripts/_common.sh b/scripts/_common.sh index dec9475..6728b6a 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -1,25 +1,13 @@ #!/bin/bash #================================================= -# COMMON VARIABLES +# COMMON VARIABLES AND CUSTOM HELPERS #================================================= ynh_arch="$YNH_ARCH" -#================================================= -# PERSONAL HELPERS -#================================================= - myynh_set_permissions () { - chown -R $app: "$install_dir" - chmod 750 "$install_dir" - chmod -R o-rwx "$install_dir" + #REMOVEME? Assuming the install dir is setup using ynh_setup_source, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chown -R $app: "$install_dir" + #REMOVEME? Assuming the install dir is setup using ynh_setup_source, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chmod 750 "$install_dir" + #REMOVEME? Assuming the install dir is setup using ynh_setup_source, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chmod -R o-rwx "$install_dir" chmod -R +x "$install_dir/bin/" } - -#================================================= -# EXPERIMENTAL HELPERS -#================================================= - -#================================================= -# FUTURE OFFICIAL HELPERS -#================================================= diff --git a/scripts/backup b/scripts/backup index 9083f3d..fd3d0d9 100755 --- a/scripts/backup +++ b/scripts/backup @@ -1,30 +1,21 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers -#================================================= -# DECLARE DATA AND CONF FILES TO BACKUP -#================================================= -ynh_print_info --message="Declaring files to be backed up..." +ynh_print_info "Declaring files to be backed up..." #================================================= # BACKUP THE APP MAIN DIR #================================================= -ynh_backup --src_path="$install_dir" +ynh_backup "$install_dir" #================================================= # BACKUP THE NGINX CONFIGURATION #================================================= -ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" +ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= # SPECIFIC BACKUP @@ -32,19 +23,19 @@ ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" # BACKUP LOGROTATE #================================================= -ynh_backup --src_path="/etc/logrotate.d/$app" -ynh_backup --src_path="/var/log/$app" +ynh_backup "/etc/logrotate.d/$app" +ynh_backup "/var/log/$app" #================================================= # BACKUP SYSTEMD #================================================= -ynh_backup --src_path="/etc/systemd/system/scrutiny-web-server.service" -ynh_backup --src_path="/etc/systemd/system/scrutiny-collector.service" -ynh_backup --src_path="/etc/systemd/system/scrutiny-collector.timer" +ynh_backup "/etc/systemd/system/scrutiny-web-server.service" +ynh_backup "/etc/systemd/system/scrutiny-collector.service" +ynh_backup "/etc/systemd/system/scrutiny-collector.timer" #================================================= # END OF SCRIPT #================================================= -ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." +ynh_print_info "Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." diff --git a/scripts/change_url b/scripts/change_url index 44d2151..6e06aad 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -1,34 +1,26 @@ #!/bin/bash -#================================================= -# GENERIC STARTING -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source _common.sh source /usr/share/yunohost/helpers -#================================================= -# STANDARD MODIFICATIONS #================================================= # STOP SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Stopping a systemd service..." --weight=1 +ynh_script_progression "Stopping $app's systemd service..." -ynh_systemd_action --service_name="influxdb" --action="stop" -ynh_systemd_action --service_name="scrutiny-web-server.service" --action="stop" --log_path="/var/log/$app/web-server.log" +ynh_systemctl --service="influxdb" --action="stop" +ynh_systemctl --service="scrutiny-web-server.service" --action="stop" --log_path="/var/log/$app/web-server.log" if [ $collector -eq 1 ] then - ynh_systemd_action --service_name="scrutiny-collector.timer" --action="stop" --log_path="/var/log/$app/collector.log" + ynh_systemctl --service="scrutiny-collector.timer" --action="stop" --log_path="/var/log/$app/collector.log" fi #================================================= # MODIFY URL IN NGINX CONF #================================================= -ynh_script_progression --message="Updating NGINX web server configuration..." --weight=1 +ynh_script_progression "Updating NGINX web server configuration..." -ynh_change_url_nginx_config +ynh_config_change_url_nginx #================================================= # SPECIFIC MODIFICATIONS @@ -48,34 +40,32 @@ then key="basepath" new_value="'$new_base_path'" sed --regexp-extended "s/^(\s*${key}:\s*).*/\1${new_value}/" --in-place "$install_dir/config/scrutiny.yaml" - ynh_store_file_checksum --file="$install_dir/config/scrutiny.yaml" - + ynh_store_file_checksum "$install_dir/config/scrutiny.yaml" + # Update collector.yaml - port=$(ynh_app_setting_get --app=$app --key=port) + port=$(ynh_app_setting_get --key=port) key="endpoint" new_value="'http:\/\/127.0.0.1:${port}${new_base_path}\/'" sed --regexp-extended "s/^(\s*${key}:\s*).*/\1${new_value}/" --in-place "$install_dir/config/collector.yaml" - ynh_store_file_checksum --file="$install_dir/config/collector.yaml" + ynh_store_file_checksum "$install_dir/config/collector.yaml" fi -#================================================= -# GENERIC FINALISATION #================================================= # START SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Starting a systemd service..." --weight=1 +ynh_script_progression "Starting $app's systemd service..." systemctl daemon-reload -ynh_systemd_action --service_name="influxdb" --action="start" -ynh_systemd_action --service_name="scrutiny-web-server.service" --action="start" --log_path="/var/log/$app/web-server.log" +ynh_systemctl --service="influxdb" --action="start" +ynh_systemctl --service="scrutiny-web-server.service" --action="start" --log_path="/var/log/$app/web-server.log" if [ $collector -eq 1 ] then - ynh_systemd_action --service_name="scrutiny-collector.timer" --action="start" --log_path="/var/log/$app/collector.log" + ynh_systemctl --service="scrutiny-collector.timer" --action="start" --log_path="/var/log/$app/collector.log" fi #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Change of URL completed for $app" --last +ynh_script_progression "Change of URL completed for $app" diff --git a/scripts/install b/scripts/install index aedbc94..c3b0506 100755 --- a/scripts/install +++ b/scripts/install @@ -1,11 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source _common.sh source /usr/share/yunohost/helpers @@ -14,7 +8,7 @@ source /usr/share/yunohost/helpers #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= -ynh_script_progression --message="Setting up source files..." --weight=1 +ynh_script_progression "Setting up source files..." mkdir -p "$install_dir/bin" ynh_setup_source --source_id="main" --dest_dir="$install_dir/bin" @@ -26,30 +20,30 @@ ynh_setup_source --source_id="scrutiny-web-frontend" --dest_dir="$install_dir/we #================================================= # SYSTEM CONFIGURATION #================================================= -ynh_script_progression --message="Adding system configurations related to $app ..." --weight=1 +ynh_script_progression "Adding system configurations related to $app ..." # Create a dedicated NGINX config using the conf/nginx.conf template -ynh_add_nginx_config +ynh_config_add_nginx # Create a dedicated systemd config -ynh_add_systemd_config --service="scrutiny-web-server" --template="systemd-scrutiny-web-server.service" +ynh_config_add_systemd --service="scrutiny-web-server" --template="systemd-scrutiny-web-server.service" yunohost service add "scrutiny-web-server" --description="WebUI for smartd S.M.A.R.T monitoring" --log="/var/log/$app/web-server.log" --test_status="systemctl show scrutiny-web-server.service -p ActiveState --value | grep -v failed" -ynh_add_config --template="systemd-scrutiny-collector.service" --destination="/etc/systemd/system/scrutiny-collector.service" +ynh_config_add --template="systemd-scrutiny-collector.service" --destination="/etc/systemd/system/scrutiny-collector.service" if [ $collector -eq 1 ] then yunohost service add "scrutiny-collector" --description="Collector running on timer (daily) for smartd S.M.A.R.T monitoring" --log="/var/log/$app/collector.log" --test_status="systemctl show scrutiny-collector.service -p ActiveState --value | grep -v failed" fi # Use logrotate to manage application logfile(s) -ynh_use_logrotate --specific_user="$app" +ynh_config_add_logrotate #================================================= # APP INITIAL CONFIGURATION #================================================= # ADD A CONFIGURATION #================================================= -ynh_script_progression --message="Adding a configuration file..." --weight=1 +ynh_script_progression "Adding $app's configuration..." mkdir -p "$install_dir/config" if [ "${path}" == "/" ] @@ -58,10 +52,10 @@ then else base_path="${path}" fi -ynh_add_config --template="config/scrutiny.yaml" --destination="$install_dir/config/scrutiny.yaml" +ynh_config_add --template="config/scrutiny.yaml" --destination="$install_dir/config/scrutiny.yaml" -ynh_add_config --template="systemd-scrutiny-collector.timer" --destination="/etc/systemd/system/scrutiny-collector.timer" -ynh_add_config --template="config/collector.yaml" --destination="$install_dir/config/collector.yaml" +ynh_config_add --template="systemd-scrutiny-collector.timer" --destination="/etc/systemd/system/scrutiny-collector.timer" +ynh_config_add --template="config/collector.yaml" --destination="$install_dir/config/collector.yaml" #================================================= # SET FILE OWNERSHIP / PERMISSIONS @@ -69,26 +63,24 @@ ynh_add_config --template="config/collector.yaml" --destination="$install_dir/co myynh_set_permissions -#================================================= -# GENERIC FINALIZATION #================================================= # START SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Starting a systemd service..." --weight=1 -ynh_systemd_action --service_name="influxdb" --action="enable" -ynh_systemd_action --service_name="influxdb" --action="start" +ynh_script_progression "Starting $app's systemd service..." +ynh_systemctl --service="influxdb" --action="enable" +ynh_systemctl --service="influxdb" --action="start" -ynh_systemd_action --service_name="scrutiny-web-server.service" --action="enable" -ynh_systemd_action --service_name="scrutiny-web-server.service" --action="start" --log_path="/var/log/$app/web-server.log" +ynh_systemctl --service="scrutiny-web-server.service" --action="enable" +ynh_systemctl --service="scrutiny-web-server.service" --action="start" --log_path="/var/log/$app/web-server.log" if [ $collector -eq 1 ] then systemctl daemon-reload - ynh_systemd_action --service_name="scrutiny-collector.timer" --action="enable" - ynh_systemd_action --service_name="scrutiny-collector.timer" --action="start" --log_path="/var/log/$app/collector.log" + ynh_systemctl --service="scrutiny-collector.timer" --action="enable" + ynh_systemctl --service="scrutiny-collector.timer" --action="start" --log_path="/var/log/$app/collector.log" fi #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Installation of $app completed" --last +ynh_script_progression "Installation of $app completed" diff --git a/scripts/remove b/scripts/remove index f454a86..52c585f 100755 --- a/scripts/remove +++ b/scripts/remove @@ -1,44 +1,39 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source _common.sh source /usr/share/yunohost/helpers #================================================= # REMOVE SYSTEM CONFIGURATIONS #================================================= -# REMOVE SYSTEMD SERVICE +# REMOVE SYSTEMD SERVICE + #================================================= -ynh_script_progression --message="Removing system configurations related to $app..." --weight=1 +ynh_script_progression "Removing system configurations related to $app..." -if ynh_exec_warn_less yunohost service status "scrutiny-web-server" >/dev/null +if ynh_hide_warnings yunohost service status "scrutiny-web-server" >/dev/null then - ynh_script_progression --message="Removing scrutiny-web-server service integration..." --weight=1 + ynh_script_progression "Removing scrutiny-web-server service integration..." yunohost service remove "scrutiny-web-server" fi -if ynh_exec_warn_less yunohost service status "scrutiny-collector" >/dev/null +if ynh_hide_warnings yunohost service status "scrutiny-collector" >/dev/null then - ynh_script_progression --message="Removing scrutiny-collector service integration..." --weight=1 + ynh_script_progression "Removing scrutiny-collector service integration..." yunohost service remove "scrutiny-collector" fi -ynh_remove_systemd_config --service="scrutiny-web-server" -ynh_remove_systemd_config --service="scrutiny-collector" -ynh_secure_remove --file="/etc/systemd/system/scrutiny-collector.timer" +ynh_config_remove_systemd"scrutiny-web-server" +ynh_config_remove_systemd"scrutiny-collector" +ynh_safe_rm "/etc/systemd/system/scrutiny-collector.timer" -ynh_remove_nginx_config +ynh_config_remove_nginx -ynh_remove_logrotate +ynh_config_remove_logrotate #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Removal of $app completed" --last +ynh_script_progression "Removal of $app completed" diff --git a/scripts/restore b/scripts/restore index ca7ba3d..0829748 100755 --- a/scripts/restore +++ b/scripts/restore @@ -1,63 +1,55 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers #================================================= # RESTORE THE APP MAIN DIR #================================================= -ynh_script_progression --message="Restoring the app main directory..." --weight=1 +ynh_script_progression "Restoring the app main directory..." -ynh_restore_file --origin_path="$install_dir" +ynh_restore "$install_dir" #================================================= # RESTORE SYSTEM CONFIGURATIONS #================================================= # RESTORE THE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Restoring system configurations related to $app..." --weight=1 +ynh_script_progression "Restoring system configurations related to $app..." -ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" +ynh_restore "/etc/nginx/conf.d/$domain.d/$app.conf" -ynh_restore_file --origin_path="/etc/systemd/system/scrutiny-web-server.service" -ynh_restore_file --origin_path="/etc/systemd/system/scrutiny-collector.service" -ynh_restore_file --origin_path="/etc/systemd/system/scrutiny-collector.timer" +ynh_restore "/etc/systemd/system/scrutiny-web-server.service" +ynh_restore "/etc/systemd/system/scrutiny-collector.service" +ynh_restore "/etc/systemd/system/scrutiny-collector.timer" -ynh_restore_file --origin_path="/etc/logrotate.d/$app" -ynh_restore_file --origin_path="/var/log/$app" +ynh_restore "/etc/logrotate.d/$app" +ynh_restore "/var/log/$app" -#================================================= -# GENERIC FINALIZATION #================================================= # RELOAD NGINX AND PHP-FPM OR THE APP SERVICE #================================================= -ynh_script_progression --message="Reloading NGINX web server and $app's service..." --weight=1 +ynh_script_progression "Reloading NGINX web server and $app's service..." systemctl daemon-reload -ynh_systemd_action --service_name="nginx" --action="reload" +ynh_systemctl --service="nginx" --action="reload" -ynh_systemd_action --service_name="influxdb" --action="enable" -ynh_systemd_action --service_name="influxdb" --action="start" +ynh_systemctl --service="influxdb" --action="enable" +ynh_systemctl --service="influxdb" --action="start" systemctl enable "/etc/systemd/system/scrutiny-web-server.service" --quiet yunohost service add "scrutiny-web-server" --description="WebUI for smartd S.M.A.R.T monitoring" --log="/var/log/$app/web-server.log" --test_status="systemctl show scrutiny-web-server.service -p ActiveState --value | grep -v failed" -ynh_systemd_action --service_name="scrutiny-web-server.service" --action="start" --log_path="/var/log/$app/web-server.log" +ynh_systemctl --service="scrutiny-web-server.service" --action="start" --log_path="/var/log/$app/web-server.log" if [ $collector -eq 1 ] then yunohost service add "scrutiny-collector" --description="Collector running on timer (daily) for smartd S.M.A.R.T monitoring" --log="/var/log/$app/collector.log" --test_status="systemctl show scrutiny-collector.service -p ActiveState --value | grep -v failed" - ynh_systemd_action --service_name="scrutiny-collector.timer" --action="enable" - ynh_systemd_action --service_name="scrutiny-collector.timer" --action="start" --log_path="/var/log/$app/collector.log" + ynh_systemctl --service="scrutiny-collector.timer" --action="enable" + ynh_systemctl --service="scrutiny-collector.timer" --action="start" --log_path="/var/log/$app/collector.log" fi #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Restoration completed for $app" --last +ynh_script_progression "Restoration completed for $app" diff --git a/scripts/upgrade b/scripts/upgrade index 913d141..be5c1d3 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -1,35 +1,25 @@ #!/bin/bash -#================================================= -# GENERIC START -#================================================= -# IMPORT GENERIC HELPERS -#================================================= - source _common.sh source /usr/share/yunohost/helpers -upgrade_type=$(ynh_check_app_version_changed) - -#================================================= -# STANDARD UPGRADE STEPS #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= -ynh_script_progression --message="Ensuring downward compatibility..." --weight=1 -ynh_secure_remove --file="$install_dir/bin/scrutiny-web-linux-$YNH_ARCH" -ynh_secure_remove --file="$install_dir/bin/scrutiny-collector-metrics-linux-$YNH_ARCH" +ynh_script_progression "Ensuring downward compatibility..." +ynh_safe_rm "$install_dir/bin/scrutiny-web-linux-$YNH_ARCH" +ynh_safe_rm "$install_dir/bin/scrutiny-collector-metrics-linux-$YNH_ARCH" #================================================= # STOP SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Stopping a systemd service..." --weight=1 +ynh_script_progression "Stopping $app's systemd service..." -ynh_systemd_action --service_name="influxdb" --action="stop" -ynh_systemd_action --service_name="scrutiny-web-server.service" --action="stop" --log_path="/var/log/$app/web-server.log" +ynh_systemctl --service="influxdb" --action="stop" +ynh_systemctl --service="scrutiny-web-server.service" --action="stop" --log_path="/var/log/$app/web-server.log" if [ $collector -eq 1 ] then - ynh_systemd_action --service_name="scrutiny-collector.timer" --action="stop" --log_path="/var/log/$app/collector.log" + ynh_systemctl --service="scrutiny-collector.timer" --action="stop" --log_path="/var/log/$app/collector.log" fi #================================================= @@ -38,7 +28,7 @@ fi # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= -ynh_script_progression --message="Upgrading source files..." --weight=1 +ynh_script_progression "Upgrading source files..." # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --source_id="main" --dest_dir="$install_dir/bin" @@ -48,27 +38,27 @@ ynh_setup_source --source_id="scrutiny-web-frontend" --dest_dir="$install_dir/we #================================================= # REAPPLY SYSTEM CONFIGURATIONS #================================================= -ynh_script_progression --message="Upgrading system configurations related to $app..." --weight=1 +ynh_script_progression "Upgrading system configurations related to $app..." -ynh_add_nginx_config +ynh_config_add_nginx -ynh_add_systemd_config --service="scrutiny-web-server" --template="systemd-scrutiny-web-server.service" +ynh_config_add_systemd --service="scrutiny-web-server" --template="systemd-scrutiny-web-server.service" yunohost service add "scrutiny-web-server" --description="WebUI for smartd S.M.A.R.T monitoring" --log="/var/log/$app/web-server.log" --test_status="systemctl show scrutiny-web-server.service -p ActiveState --value | grep -v failed" -ynh_add_config --template="systemd-scrutiny-collector.service" --destination="/etc/systemd/system/scrutiny-collector.service" +ynh_config_add --template="systemd-scrutiny-collector.service" --destination="/etc/systemd/system/scrutiny-collector.service" if [ $collector -eq 1 ] then yunohost service add "scrutiny-collector" --description="Collector running on timer (daily) for smartd S.M.A.R.T monitoring" --log="/var/log/$app/collector.log" --test_status="systemctl show scrutiny-collector.service -p ActiveState --value | grep -v failed" fi -ynh_use_logrotate --specific_user="$app" --non-append +ynh_config_add_logrotate #================================================= # RECONFIGURE THE APP (UPDATE CONF, APPLY MIGRATIONS, ...) #================================================= # UPDATE A CONFIG FILE #================================================= -ynh_script_progression --message="Updating a configuration file..." --weight=1 +ynh_script_progression "Updating configuration..." if [ "${path}" == "/" ] then @@ -76,10 +66,10 @@ then else base_path="${path}" fi -ynh_add_config --template="config/scrutiny.yaml" --destination="$install_dir/config/scrutiny.yaml" +ynh_config_add --template="config/scrutiny.yaml" --destination="$install_dir/config/scrutiny.yaml" -ynh_add_config --template="systemd-scrutiny-collector.timer" --destination="/etc/systemd/system/scrutiny-collector.timer" -ynh_add_config --template="config/collector.yaml" --destination="$install_dir/config/collector.yaml" +ynh_config_add --template="systemd-scrutiny-collector.timer" --destination="/etc/systemd/system/scrutiny-collector.timer" +ynh_config_add --template="config/collector.yaml" --destination="$install_dir/config/collector.yaml" #================================================= # SET FILE OWNERSHIP / PERMISSIONS @@ -90,23 +80,23 @@ myynh_set_permissions #================================================= # START SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Starting a systemd service..." --weight=1 +ynh_script_progression "Starting $app's systemd service..." systemctl daemon-reload -ynh_systemd_action --service_name="influxdb" --action="enable" -ynh_systemd_action --service_name="influxdb" --action="start" +ynh_systemctl --service="influxdb" --action="enable" +ynh_systemctl --service="influxdb" --action="start" -ynh_systemd_action --service_name="scrutiny-web-server.service" --action="enable" -ynh_systemd_action --service_name="scrutiny-web-server.service" --action="start" --log_path="/var/log/$app/web-server.log" +ynh_systemctl --service="scrutiny-web-server.service" --action="enable" +ynh_systemctl --service="scrutiny-web-server.service" --action="start" --log_path="/var/log/$app/web-server.log" if [ $collector -eq 1 ] then - ynh_systemd_action --service_name="scrutiny-collector.timer" --action="enable" - ynh_systemd_action --service_name="scrutiny-collector.timer" --action="start" --log_path="/var/log/$app/collector.log" + ynh_systemctl --service="scrutiny-collector.timer" --action="enable" + ynh_systemctl --service="scrutiny-collector.timer" --action="start" --log_path="/var/log/$app/collector.log" fi #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Upgrade of $app completed" --last +ynh_script_progression "Upgrade of $app completed" From 7e803174cd35122f7c1e3fc0aec118e48cb999b2 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Sun, 1 Sep 2024 18:49:29 +0000 Subject: [PATCH 2/7] Auto-update READMEs --- ALL_README.md | 2 ++ README.md | 2 +- README_es.md | 2 +- README_eu.md | 2 +- README_fr.md | 2 +- README_gl.md | 2 +- README_id.md | 63 +++++++++++++++++++++++++++++++++++++++++++++++ README_ru.md | 63 +++++++++++++++++++++++++++++++++++++++++++++++ README_zh_Hans.md | 2 +- 9 files changed, 134 insertions(+), 6 deletions(-) create mode 100644 README_id.md create mode 100644 README_ru.md diff --git a/ALL_README.md b/ALL_README.md index 152f2e7..e3c80d2 100644 --- a/ALL_README.md +++ b/ALL_README.md @@ -5,4 +5,6 @@ - [Irakurri README euskaraz](README_eu.md) - [Lire le README en français](README_fr.md) - [Le o README en galego](README_gl.md) +- [Baca README dalam bahasa bahasa Indonesia](README_id.md) +- [Прочитать README на русский](README_ru.md) - [阅读中文(简体)的 README](README_zh_Hans.md) diff --git a/README.md b/README.md index b54e90c..8ce452f 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ It shall NOT be edited by hand. # Scrutiny for YunoHost -[![Integration level](https://dash.yunohost.org/integration/scrutiny.svg)](https://dash.yunohost.org/appci/app/scrutiny) ![Working status](https://ci-apps.yunohost.org/ci/badges/scrutiny.status.svg) ![Maintenance status](https://ci-apps.yunohost.org/ci/badges/scrutiny.maintain.svg) +[![Integration level](https://dash.yunohost.org/integration/scrutiny.svg)](https://ci-apps.yunohost.org/ci/apps/scrutiny/) ![Working status](https://ci-apps.yunohost.org/ci/badges/scrutiny.status.svg) ![Maintenance status](https://ci-apps.yunohost.org/ci/badges/scrutiny.maintain.svg) [![Install Scrutiny with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=scrutiny) diff --git a/README_es.md b/README_es.md index 4bce79a..6066840 100644 --- a/README_es.md +++ b/README_es.md @@ -5,7 +5,7 @@ No se debe editar a mano. # Scrutiny para Yunohost -[![Nivel de integración](https://dash.yunohost.org/integration/scrutiny.svg)](https://dash.yunohost.org/appci/app/scrutiny) ![Estado funcional](https://ci-apps.yunohost.org/ci/badges/scrutiny.status.svg) ![Estado En Mantención](https://ci-apps.yunohost.org/ci/badges/scrutiny.maintain.svg) +[![Nivel de integración](https://dash.yunohost.org/integration/scrutiny.svg)](https://ci-apps.yunohost.org/ci/apps/scrutiny/) ![Estado funcional](https://ci-apps.yunohost.org/ci/badges/scrutiny.status.svg) ![Estado En Mantención](https://ci-apps.yunohost.org/ci/badges/scrutiny.maintain.svg) [![Instalar Scrutiny con Yunhost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=scrutiny) diff --git a/README_eu.md b/README_eu.md index 562726f..feab854 100644 --- a/README_eu.md +++ b/README_eu.md @@ -5,7 +5,7 @@ EZ editatu eskuz. # Scrutiny YunoHost-erako -[![Integrazio maila](https://dash.yunohost.org/integration/scrutiny.svg)](https://dash.yunohost.org/appci/app/scrutiny) ![Funtzionamendu egoera](https://ci-apps.yunohost.org/ci/badges/scrutiny.status.svg) ![Mantentze egoera](https://ci-apps.yunohost.org/ci/badges/scrutiny.maintain.svg) +[![Integrazio maila](https://dash.yunohost.org/integration/scrutiny.svg)](https://ci-apps.yunohost.org/ci/apps/scrutiny/) ![Funtzionamendu egoera](https://ci-apps.yunohost.org/ci/badges/scrutiny.status.svg) ![Mantentze egoera](https://ci-apps.yunohost.org/ci/badges/scrutiny.maintain.svg) [![Instalatu Scrutiny YunoHost-ekin](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=scrutiny) diff --git a/README_fr.md b/README_fr.md index 26231cc..422a0c1 100644 --- a/README_fr.md +++ b/README_fr.md @@ -5,7 +5,7 @@ Il NE doit PAS être modifié à la main. # Scrutiny pour YunoHost -[![Niveau d’intégration](https://dash.yunohost.org/integration/scrutiny.svg)](https://dash.yunohost.org/appci/app/scrutiny) ![Statut du fonctionnement](https://ci-apps.yunohost.org/ci/badges/scrutiny.status.svg) ![Statut de maintenance](https://ci-apps.yunohost.org/ci/badges/scrutiny.maintain.svg) +[![Niveau d’intégration](https://dash.yunohost.org/integration/scrutiny.svg)](https://ci-apps.yunohost.org/ci/apps/scrutiny/) ![Statut du fonctionnement](https://ci-apps.yunohost.org/ci/badges/scrutiny.status.svg) ![Statut de maintenance](https://ci-apps.yunohost.org/ci/badges/scrutiny.maintain.svg) [![Installer Scrutiny avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=scrutiny) diff --git a/README_gl.md b/README_gl.md index 71e9cf8..5034e95 100644 --- a/README_gl.md +++ b/README_gl.md @@ -5,7 +5,7 @@ NON debe editarse manualmente. # Scrutiny para YunoHost -[![Nivel de integración](https://dash.yunohost.org/integration/scrutiny.svg)](https://dash.yunohost.org/appci/app/scrutiny) ![Estado de funcionamento](https://ci-apps.yunohost.org/ci/badges/scrutiny.status.svg) ![Estado de mantemento](https://ci-apps.yunohost.org/ci/badges/scrutiny.maintain.svg) +[![Nivel de integración](https://dash.yunohost.org/integration/scrutiny.svg)](https://ci-apps.yunohost.org/ci/apps/scrutiny/) ![Estado de funcionamento](https://ci-apps.yunohost.org/ci/badges/scrutiny.status.svg) ![Estado de mantemento](https://ci-apps.yunohost.org/ci/badges/scrutiny.maintain.svg) [![Instalar Scrutiny con YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=scrutiny) diff --git a/README_id.md b/README_id.md new file mode 100644 index 0000000..a8b6091 --- /dev/null +++ b/README_id.md @@ -0,0 +1,63 @@ + + +# Scrutiny untuk YunoHost + +[![Tingkat integrasi](https://dash.yunohost.org/integration/scrutiny.svg)](https://ci-apps.yunohost.org/ci/apps/scrutiny/) ![Status kerja](https://ci-apps.yunohost.org/ci/badges/scrutiny.status.svg) ![Status pemeliharaan](https://ci-apps.yunohost.org/ci/badges/scrutiny.maintain.svg) + +[![Pasang Scrutiny dengan YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=scrutiny) + +*[Baca README ini dengan bahasa yang lain.](./ALL_README.md)* + +> *Paket ini memperbolehkan Anda untuk memasang Scrutiny secara cepat dan mudah pada server YunoHost.* +> *Bila Anda tidak mempunyai YunoHost, silakan berkonsultasi dengan [panduan](https://yunohost.org/install) untuk mempelajari bagaimana untuk memasangnya.* + +## Ringkasan + +**Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates.** + +> NOTE: Scrutiny is a Work-in-Progress and still has some rough edges. + +### Features + +Scrutiny is a simple but focused application, with a couple of core features: + +- Web UI Dashboard - focused on Critical metrics +- `smartd` integration (no re-inventing the wheel) +- Auto-detection of all connected hard-drives +- S.M.A.R.T metric tracking for historical trends +- Customized thresholds using real world failure rates +- Temperature tracking +- Provided as an all-in-one Docker image (but can be installed manually) +- Configurable Alerting/Notifications via Webhooks +- (Future) Hard Drive performance testing & tracking + + +**Versi terkirim:** 0.8.1~ynh1 + +## Tangkapan Layar + +![Tangkapan Layar pada Scrutiny](./doc/screenshots/dashboard.png) + +## Dokumentasi dan sumber daya + +- Dokumentasi admin resmi: +- Depot kode aplikasi hulu: +- Gudang YunoHost: +- Laporkan bug: + +## Info developer + +Silakan kirim pull request ke [`testing` branch](https://github.com/YunoHost-Apps/scrutiny_ynh/tree/testing). + +Untuk mencoba branch `testing`, silakan dilanjutkan seperti: + +```bash +sudo yunohost app install https://github.com/YunoHost-Apps/scrutiny_ynh/tree/testing --debug +atau +sudo yunohost app upgrade scrutiny -u https://github.com/YunoHost-Apps/scrutiny_ynh/tree/testing --debug +``` + +**Info lebih lanjut mengenai pemaketan aplikasi:** diff --git a/README_ru.md b/README_ru.md new file mode 100644 index 0000000..7ca59a0 --- /dev/null +++ b/README_ru.md @@ -0,0 +1,63 @@ + + +# Scrutiny для YunoHost + +[![Уровень интеграции](https://dash.yunohost.org/integration/scrutiny.svg)](https://ci-apps.yunohost.org/ci/apps/scrutiny/) ![Состояние работы](https://ci-apps.yunohost.org/ci/badges/scrutiny.status.svg) ![Состояние сопровождения](https://ci-apps.yunohost.org/ci/badges/scrutiny.maintain.svg) + +[![Установите Scrutiny с YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=scrutiny) + +*[Прочтите этот README на других языках.](./ALL_README.md)* + +> *Этот пакет позволяет Вам установить Scrutiny быстро и просто на YunoHost-сервер.* +> *Если у Вас нет YunoHost, пожалуйста, посмотрите [инструкцию](https://yunohost.org/install), чтобы узнать, как установить его.* + +## Обзор + +**Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates.** + +> NOTE: Scrutiny is a Work-in-Progress and still has some rough edges. + +### Features + +Scrutiny is a simple but focused application, with a couple of core features: + +- Web UI Dashboard - focused on Critical metrics +- `smartd` integration (no re-inventing the wheel) +- Auto-detection of all connected hard-drives +- S.M.A.R.T metric tracking for historical trends +- Customized thresholds using real world failure rates +- Temperature tracking +- Provided as an all-in-one Docker image (but can be installed manually) +- Configurable Alerting/Notifications via Webhooks +- (Future) Hard Drive performance testing & tracking + + +**Поставляемая версия:** 0.8.1~ynh1 + +## Снимки экрана + +![Снимок экрана Scrutiny](./doc/screenshots/dashboard.png) + +## Документация и ресурсы + +- Официальная документация администратора: +- Репозиторий кода главной ветки приложения: +- Магазин YunoHost: +- Сообщите об ошибке: + +## Информация для разработчиков + +Пришлите Ваш запрос на слияние в [ветку `testing`](https://github.com/YunoHost-Apps/scrutiny_ynh/tree/testing). + +Чтобы попробовать ветку `testing`, пожалуйста, сделайте что-то вроде этого: + +```bash +sudo yunohost app install https://github.com/YunoHost-Apps/scrutiny_ynh/tree/testing --debug +или +sudo yunohost app upgrade scrutiny -u https://github.com/YunoHost-Apps/scrutiny_ynh/tree/testing --debug +``` + +**Больше информации о пакетировании приложений:** diff --git a/README_zh_Hans.md b/README_zh_Hans.md index c892cd0..b81a2d2 100644 --- a/README_zh_Hans.md +++ b/README_zh_Hans.md @@ -5,7 +5,7 @@ # YunoHost 上的 Scrutiny -[![集成程度](https://dash.yunohost.org/integration/scrutiny.svg)](https://dash.yunohost.org/appci/app/scrutiny) ![工作状态](https://ci-apps.yunohost.org/ci/badges/scrutiny.status.svg) ![维护状态](https://ci-apps.yunohost.org/ci/badges/scrutiny.maintain.svg) +[![集成程度](https://dash.yunohost.org/integration/scrutiny.svg)](https://ci-apps.yunohost.org/ci/apps/scrutiny/) ![工作状态](https://ci-apps.yunohost.org/ci/badges/scrutiny.status.svg) ![维护状态](https://ci-apps.yunohost.org/ci/badges/scrutiny.maintain.svg) [![使用 YunoHost 安装 Scrutiny](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=scrutiny) From ba2715e945f402e3697dc24a369f8528b5f162c2 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Sun, 1 Sep 2024 21:16:17 +0200 Subject: [PATCH 3/7] Fix helpers 2.1 --- manifest.toml | 3 --- scripts/_common.sh | 7 ------- scripts/change_url | 2 +- scripts/install | 6 ------ 4 files changed, 1 insertion(+), 17 deletions(-) diff --git a/manifest.toml b/manifest.toml index de54218..29ef7a5 100644 --- a/manifest.toml +++ b/manifest.toml @@ -76,9 +76,6 @@ ram.runtime = "50M" [resources.system_user] [resources.install_dir] - dir = "/var/www/__APP__" - owner = "__APP__:rwx" - group = "__APP__:rx" [resources.permissions] main.url = "/" diff --git a/scripts/_common.sh b/scripts/_common.sh index 6728b6a..503b8a6 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -3,11 +3,4 @@ #================================================= # COMMON VARIABLES AND CUSTOM HELPERS #================================================= -ynh_arch="$YNH_ARCH" -myynh_set_permissions () { - #REMOVEME? Assuming the install dir is setup using ynh_setup_source, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chown -R $app: "$install_dir" - #REMOVEME? Assuming the install dir is setup using ynh_setup_source, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chmod 750 "$install_dir" - #REMOVEME? Assuming the install dir is setup using ynh_setup_source, the proper chmod/chowns are now already applied and it shouldn't be necessary to tweak perms | chmod -R o-rwx "$install_dir" - chmod -R +x "$install_dir/bin/" -} diff --git a/scripts/change_url b/scripts/change_url index 6e06aad..4289200 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -43,7 +43,7 @@ then ynh_store_file_checksum "$install_dir/config/scrutiny.yaml" # Update collector.yaml - port=$(ynh_app_setting_get --key=port) + port=$(ynh_app_setting_get --key=port) key="endpoint" new_value="'http:\/\/127.0.0.1:${port}${new_base_path}\/'" sed --regexp-extended "s/^(\s*${key}:\s*).*/\1${new_value}/" --in-place "$install_dir/config/collector.yaml" diff --git a/scripts/install b/scripts/install index c3b0506..f46aaeb 100755 --- a/scripts/install +++ b/scripts/install @@ -57,12 +57,6 @@ ynh_config_add --template="config/scrutiny.yaml" --destination="$install_dir/con ynh_config_add --template="systemd-scrutiny-collector.timer" --destination="/etc/systemd/system/scrutiny-collector.timer" ynh_config_add --template="config/collector.yaml" --destination="$install_dir/config/collector.yaml" -#================================================= -# SET FILE OWNERSHIP / PERMISSIONS -#================================================= - -myynh_set_permissions - #================================================= # START SYSTEMD SERVICE #================================================= From 003a2bffe3aa45d28fb8d193f9f0a60c0ccdbfea Mon Sep 17 00:00:00 2001 From: Sylvain Date: Mon, 2 Sep 2024 17:37:26 +0200 Subject: [PATCH 4/7] Fix helpers 2.1 --- manifest.toml | 3 ++- scripts/install | 2 +- scripts/upgrade | 6 ++---- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/manifest.toml b/manifest.toml index 29ef7a5..3ef5794 100644 --- a/manifest.toml +++ b/manifest.toml @@ -42,7 +42,7 @@ ram.runtime = "50M" [resources] [resources.sources] - [resources.sources.main] + [resources.sources.scrutiny-web-linux] in_subdir = false rename = "scrutiny-web-linux" amd64.url = "https://github.com/AnalogJ/scrutiny/releases/download/v0.8.1/scrutiny-web-linux-amd64" @@ -56,6 +56,7 @@ ram.runtime = "50M" [resources.sources.scrutiny-collector-metrics-linux] in_subdir = false + rename = "scrutiny-collector-metrics-linux" amd64.url = "https://github.com/AnalogJ/scrutiny/releases/download/v0.8.1/scrutiny-collector-metrics-linux-amd64" amd64.sha256 = "904056ddc4e0bd3455a0db45d56f98084135a967eef018d18bfc8e4c0ef6887e" arm64.url = "https://github.com/AnalogJ/scrutiny/releases/download/v0.8.1/scrutiny-collector-metrics-linux-arm64" diff --git a/scripts/install b/scripts/install index f46aaeb..dd67e49 100755 --- a/scripts/install +++ b/scripts/install @@ -11,7 +11,7 @@ source /usr/share/yunohost/helpers ynh_script_progression "Setting up source files..." mkdir -p "$install_dir/bin" -ynh_setup_source --source_id="main" --dest_dir="$install_dir/bin" +ynh_setup_source --source_id="scrutiny-web-linux" --dest_dir="$install_dir/bin" ynh_setup_source --source_id="scrutiny-collector-metrics-linux" --dest_dir="$install_dir/bin" mkdir -p "$install_dir/web" diff --git a/scripts/upgrade b/scripts/upgrade index be5c1d3..1601297 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -6,9 +6,7 @@ source /usr/share/yunohost/helpers #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= -ynh_script_progression "Ensuring downward compatibility..." -ynh_safe_rm "$install_dir/bin/scrutiny-web-linux-$YNH_ARCH" -ynh_safe_rm "$install_dir/bin/scrutiny-collector-metrics-linux-$YNH_ARCH" +#ynh_script_progression "Ensuring downward compatibility..." #================================================= # STOP SYSTEMD SERVICE @@ -31,7 +29,7 @@ fi ynh_script_progression "Upgrading source files..." # Download, check integrity, uncompress and patch the source from app.src -ynh_setup_source --source_id="main" --dest_dir="$install_dir/bin" +ynh_setup_source --source_id="scrutiny-web-linux" --dest_dir="$install_dir/bin" ynh_setup_source --source_id="scrutiny-collector-metrics-linux" --dest_dir="$install_dir/bin" ynh_setup_source --source_id="scrutiny-web-frontend" --dest_dir="$install_dir/web" From ceda1b85ac77501e2441d6e33b3e77ecb7b47136 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Mon, 2 Sep 2024 18:02:37 +0200 Subject: [PATCH 5/7] Fix helpers 2.1 --- scripts/upgrade | 6 ------ 1 file changed, 6 deletions(-) diff --git a/scripts/upgrade b/scripts/upgrade index 1601297..8b4ee3e 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -69,12 +69,6 @@ ynh_config_add --template="config/scrutiny.yaml" --destination="$install_dir/con ynh_config_add --template="systemd-scrutiny-collector.timer" --destination="/etc/systemd/system/scrutiny-collector.timer" ynh_config_add --template="config/collector.yaml" --destination="$install_dir/config/collector.yaml" -#================================================= -# SET FILE OWNERSHIP / PERMISSIONS -#================================================= - -myynh_set_permissions - #================================================= # START SYSTEMD SERVICE #================================================= From de1cdfb9308fe463219103bd42b7fe318a391bfc Mon Sep 17 00:00:00 2001 From: Sylvain Date: Mon, 2 Sep 2024 18:11:59 +0200 Subject: [PATCH 6/7] Fix helpers 2.1 --- scripts/_common.sh | 6 ++++++ scripts/install | 6 ++++++ scripts/upgrade | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/scripts/_common.sh b/scripts/_common.sh index 503b8a6..d886fdd 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -4,3 +4,9 @@ # COMMON VARIABLES AND CUSTOM HELPERS #================================================= +myynh_set_permissions () { + chown -R $app: "$install_dir" + chmod 750 "$install_dir" + chmod -R o-rwx "$install_dir" + chmod -R +x "$install_dir/bin/*" +} diff --git a/scripts/install b/scripts/install index dd67e49..2ff4398 100755 --- a/scripts/install +++ b/scripts/install @@ -57,6 +57,12 @@ ynh_config_add --template="config/scrutiny.yaml" --destination="$install_dir/con ynh_config_add --template="systemd-scrutiny-collector.timer" --destination="/etc/systemd/system/scrutiny-collector.timer" ynh_config_add --template="config/collector.yaml" --destination="$install_dir/config/collector.yaml" +#================================================= +# SET FILE OWNERSHIP / PERMISSIONS +#================================================= + +myynh_set_permissions + #================================================= # START SYSTEMD SERVICE #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 8b4ee3e..1601297 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -69,6 +69,12 @@ ynh_config_add --template="config/scrutiny.yaml" --destination="$install_dir/con ynh_config_add --template="systemd-scrutiny-collector.timer" --destination="/etc/systemd/system/scrutiny-collector.timer" ynh_config_add --template="config/collector.yaml" --destination="$install_dir/config/collector.yaml" +#================================================= +# SET FILE OWNERSHIP / PERMISSIONS +#================================================= + +myynh_set_permissions + #================================================= # START SYSTEMD SERVICE #================================================= From cae74e13802c649f2c75e57d57a5ed9b6ac05d67 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Mon, 2 Sep 2024 18:21:29 +0200 Subject: [PATCH 7/7] Fix helpers 2.1 --- scripts/_common.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/_common.sh b/scripts/_common.sh index d886fdd..a891931 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -8,5 +8,5 @@ myynh_set_permissions () { chown -R $app: "$install_dir" chmod 750 "$install_dir" chmod -R o-rwx "$install_dir" - chmod -R +x "$install_dir/bin/*" + chmod -R +x "$install_dir/bin/" }