From a7db07ddc1076fda815360d78b88c865e2916c07 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Thu, 5 Jun 2025 14:53:18 +0200 Subject: [PATCH 1/7] wip: make the app work as a service on linux and darwin --- projects/sftpgo.com/com.sftpgo.plist | 21 +++++++ projects/sftpgo.com/package.yml | 19 +++--- projects/sftpgo.com/setup.bash | 88 +++++++++++++++++++--------- projects/sftpgo.com/sftpgo.env | 12 +++- projects/sftpgo.com/sftpgo.service | 5 +- projects/sftpgo.com/wrapper.bash | 16 +++++ 6 files changed, 122 insertions(+), 39 deletions(-) create mode 100644 projects/sftpgo.com/com.sftpgo.plist create mode 100644 projects/sftpgo.com/wrapper.bash diff --git a/projects/sftpgo.com/com.sftpgo.plist b/projects/sftpgo.com/com.sftpgo.plist new file mode 100644 index 0000000000..9c74140256 --- /dev/null +++ b/projects/sftpgo.com/com.sftpgo.plist @@ -0,0 +1,21 @@ + + + + + Label + com.github.drakkan.sftpgo + UserName + _sftpgo + WorkingDirectory + /Users/_sftpgo/app/sftpgo/ + ProgramArguments + + /usr/local/bin/pkgx +sftpgo.com^${SFTPGO_VERSION} sftpgo-wrapper ${HOME} + serve + + KeepAlive + + ThrottleInterval + 10 + + diff --git a/projects/sftpgo.com/package.yml b/projects/sftpgo.com/package.yml index eaee11da4c..ce852fa914 100644 --- a/projects/sftpgo.com/package.yml +++ b/projects/sftpgo.com/package.yml @@ -24,26 +24,31 @@ build: GO_LDFLAGS: - -buildmode=pie SFTPGO_SETUP_SCRIPT: setup.bash + SFTPGO_WRAPPER_SCRIPT: wrapper.bash SFTPGO_README_FILE: README.md SFTPGO_CONFIG_FILE: sftpgo.json SFTPGO_SERVICE_ENVIRONMENT_FILE: sftpgo.env - SFTPGO_SERVICE_FILE: sftpgo.service + SFTPGO_SYSTEMD_SERVICE_FILE: sftpgo.service + SFTPGO_LAUNCHD_SERVICE_FILE: com.sftpgo.plist script: # fails to find sqlite3.Error - run: TAGS="-tags nosqlite" if: 2.6.0 - go build -v $TAGS -trimpath -ldflags="${GO_LDFLAGS}" -o {{prefix}}/bin/sftpgo - install -v -D props/${SFTPGO_SETUP_SCRIPT} {{prefix}}/bin/sftpgo-setup + - install -v -D props/${SFTPGO_WRAPPER_SCRIPT} {{prefix}}/bin/sftpgo-wrapper - install -v -D props/${SFTPGO_README_FILE} {{prefix}}/doc/${SFTPGO_README_FILE} - - install -v -D ${SFTPGO_CONFIG_FILE} {{prefix}}/etc/sftpgo/${SFTPGO_CONFIG_FILE} - - install -v -D props/${SFTPGO_SERVICE_ENVIRONMENT_FILE} {{prefix}}/etc/sftpgo/${SFTPGO_SERVICE_ENVIRONMENT_FILE} - - install -v -D props/${SFTPGO_SERVICE_FILE} {{prefix}}/etc/systemd/system/${SFTPGO_SERVICE_FILE} - - find templates -type f -exec install -v -D "{}" "{{prefix}}/{}" \; - - find static -type f -exec install -v -D "{}" "{{prefix}}/{}" \; - - find openapi -type f -exec install -v -D "{}" "{{prefix}}/{}" \; + - install -v -D ${SFTPGO_CONFIG_FILE} {{prefix}}/conf/${SFTPGO_CONFIG_FILE} + - install -v -D props/${SFTPGO_SERVICE_ENVIRONMENT_FILE} {{prefix}}/conf/${SFTPGO_SERVICE_ENVIRONMENT_FILE} + - install -v -D props/${SFTPGO_SYSTEMD_SERVICE_FILE} {{prefix}}/conf/${SFTPGO_SYSTEMD_SERVICE_FILE} + - install -v -D props/${SFTPGO_LAUNCHD_SERVICE_FILE} {{prefix}}/conf/${SFTPGO_LAUNCHD_SERVICE_FILE} + - find templates -type f -exec install -v -D "{}" "{{prefix}}/conf/{}" \; + - find static -type f -exec install -v -D "{}" "{{prefix}}/conf/{}" \; + - find openapi -type f -exec install -v -D "{}" "{{prefix}}/conf/{}" \; provides: - bin/sftpgo - bin/sftpgo-setup + - bin/sftpgo-wrapper test: test "$(sftpgo --version | cut -d' ' -f2 | cut -d'-' -f1)" = {{version}} diff --git a/projects/sftpgo.com/setup.bash b/projects/sftpgo.com/setup.bash index 303425524a..f79c867a5f 100644 --- a/projects/sftpgo.com/setup.bash +++ b/projects/sftpgo.com/setup.bash @@ -1,46 +1,78 @@ #!/usr/bin/env -S pkgx +gnu.org/coreutils +bash^5 bash +function install_files { + declare -r package_bin_path="$( sudo -u _sftpgo pkgx +sftpgo.com| cut -d= -f2 | cut -d$ -f1 )" + declare -r package_path="$( dirname "${package_bin_path}" )" + declare -r package_conf_path="${package_path}/conf" + + command install -v -D -b \ + "${package_conf_path}/${app_environment_file}" \ + "${app_conf_path}/${app_environment_file}" + sed -i "s/^PKGX_SFTPGO_VERSION=.*$/PKGX_SFTPGO_VERSION=${package_version}/" \ + "${app_conf_path}/${app_environment_file}" + command install -v -D -b \ + "${package_conf_path}/${app_conf_file}" \ + "${app_conf_path}/${app_conf_file}" + command install -v -D \ + "${package_conf_path}/${service_file}" \ + "${services_path}/${service_file}" + + for subdir in templates openapi static; do + ln -v -s "${package_conf_path}/${subdir}" \ + "${app_conf_path}" + done +} + +function setup_on_linux { + declare -r app_homedir="/home/${app_username}" + declare -r app_conf_path="${app_homedir}/app/sftpgo/conf" + declare -r service_file='sftpgo.service' + declare -r services_path='/etc/systemd/system' + + if [[ -d /run/systemd/system ]]; then + useradd -m \ + -d "${app_homedir}" \ + "${app_username}" + + sudo -u _sftpgo pkgx +sftpgo.com^${package_version} + install_files + else + echo 'Only systemd supported yet on Linux' + fi +} + +function setup_on_darwin { + declare -r app_homedir="/Users/${app_username}" + declare -r app_conf_path="${app_homedir}/app/sftpgo/conf" + declare -r service_file='com.sftpgo.plist' + declare -r services_path='/Library/LaunchDaemons' + + sysadminctl -addUser \ + -home "${app_homedir}" \ + "${app_username}" + + install_files +} + function main { declare -r script_file_path="$( realpath "${BASH_SOURCE[0]}" )" declare -r package_bin_path="$( dirname "${script_file_path}" )" declare -r package_path="$( dirname "${package_bin_path}" )" declare -r package_version="${package_path#*/v}" - declare -r package_etc_path="${package_path}/etc" - declare -r system_etc_path='/etc' - declare -r username="_sftpgo" - declare -r homedir="/home/${username}" - declare -r environment_file='sftpgo/sftpgo.env' - declare -r config_file='sftpgo/sftpgo.json' - declare -r systemd_service_file='systemd/system/sftpgo.service' + declare -r app_username="_sftpgo" + declare -r app_environment_file='sftpgo.env' + declare -r app_conf_file='sftpgo.json' printf 'Package directory %s\n' ${package_path} case "$(uname)" in Linux) - if [[ -d /run/systemd/system ]]; then - useradd -m -d "${homedir}" "${username}" - install -v -D -b \ - "${package_etc_path}/${environment_file}" \ - "${system_etc_path}/${environment_file}" - sed -i "s/^PKGX_SFTPGO_VERSION=.*$/PKGX_SFTPGO_VERSION=${package_version}/" \ - "${system_etc_path}/${environment_file}" - install -v -D -b \ - "${package_etc_path}/${config_file}" \ - "${system_etc_path}/${config_file}" - install -v -D \ - "${package_etc_path}/${systemd_service_file}" \ - "${system_etc_path}/${systemd_service_file}" - for subdir in templates openapi static; do - ln -v -s "${package_path}/${subdir}" "${homedir}/${subdir}" - done - else - echo 'Only systemd supported yet' - fi + setup_on_linux ;; Darwin) - echo 'Not managed yet on darwin' - ;; + setup_on_darwin + ;; *) echo 'OS not supported' ;; diff --git a/projects/sftpgo.com/sftpgo.env b/projects/sftpgo.com/sftpgo.env index ea81de5de5..459cd392f9 100644 --- a/projects/sftpgo.com/sftpgo.env +++ b/projects/sftpgo.com/sftpgo.env @@ -1,4 +1,12 @@ -PKGX_SFTPGO_PROJECT=sftpgo.com +set -a +PKGX_SFTPGO_PROJECT='sftpgo.com' PKGX_SFTPGO_VERSION=##SETUP## -SFTPGO_CONFIG_FILE=/etc/sftpgo/sftpgo.json +SFTPGO_CONFIG_DIR='/home/_sftpgo/app/sftpgo/conf' +SFTPGO_HTTPD__TEMPLATES_PATH='/home/_sftpgo/app/sftpgo/data/templates' +SFTPGO_HTTPD__STATIC_FILES_PATH='/home/_sftpgo/app/sftpgo/data/static' +SFTPGO_HTTPD__OPENAPI_PATH='/home/_sftpgo/app/sftpgo/data/openapi' +SFTPGO_HTTPD__BACKUPS_PATH='/home/_sftpgo/app/sftpgo/data/backups' +SFTPGO_DATA_PROVIDER__CREDENTIALS_PATH='/home/_sftpgo/app/sftpgo/data/credentials' + +set +a diff --git a/projects/sftpgo.com/sftpgo.service b/projects/sftpgo.com/sftpgo.service index 238bf4b08f..caa799b5c7 100644 --- a/projects/sftpgo.com/sftpgo.service +++ b/projects/sftpgo.com/sftpgo.service @@ -6,8 +6,9 @@ After=network.target Type=simple User=_sftpgo Group=_sftpgo -EnvironmentFile=/etc/sftpgo/sftpgo.env -ExecStart=/bin/bash -c "/usr/local/bin/pkgx +${PKGX_SFTPGO_PROJECT}^${PKGX_SFTPGO_VERSION} sftpgo serve --config-file ${SFTPGO_CONFIG_FILE} --config-dir=${HOME}" +Environment="PKGX_SFTPGO_PROJECT=sftpgo.com" +Environment="PKGX_SFTPGO_VERSION=2.6.6" +ExecStart=/bin/bash -c "exec /usr/local/bin/pkgx +${PKGX_SFTPGO_PROJECT}^${PKGX_SFTPGO_VERSION} sftpgo-wrapper ${HOME}" ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=8192 KillMode=mixed diff --git a/projects/sftpgo.com/wrapper.bash b/projects/sftpgo.com/wrapper.bash new file mode 100644 index 0000000000..69005fbbf4 --- /dev/null +++ b/projects/sftpgo.com/wrapper.bash @@ -0,0 +1,16 @@ +#!/usr/bin/env -S pkgx +bash^5 bash + +set -x +set -u + +function main { + declare -r app_homedir="${1}" + + source "${app_homedir}/app/sftpgo/conf/sftpgo.env" + + pkgx +${PKGX_SFTPGO_PROJECT}^${PKGX_SFTPGO_VERSION} \ + sftpgo serve + +} + +main ${@} From 4fee3bbfa989736713e13a58b7b90dfa3015ce99 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Fri, 6 Jun 2025 11:47:10 +0200 Subject: [PATCH 2/7] wip: standardize the way to configure services (systemd, launchd...) --- ...com.sftpgo.plist => com.sftpgo.plist.gtpl} | 10 ++-- projects/sftpgo.com/package.yml | 6 +- projects/sftpgo.com/setup.bash | 55 ++++++++++--------- projects/sftpgo.com/sftpgo.env | 12 ---- projects/sftpgo.com/sftpgo.env.gtpl | 4 ++ .../{sftpgo.service => sftpgo.service.gtpl} | 10 +++- 6 files changed, 48 insertions(+), 49 deletions(-) rename projects/sftpgo.com/{com.sftpgo.plist => com.sftpgo.plist.gtpl} (57%) delete mode 100644 projects/sftpgo.com/sftpgo.env create mode 100644 projects/sftpgo.com/sftpgo.env.gtpl rename projects/sftpgo.com/{sftpgo.service => sftpgo.service.gtpl} (67%) diff --git a/projects/sftpgo.com/com.sftpgo.plist b/projects/sftpgo.com/com.sftpgo.plist.gtpl similarity index 57% rename from projects/sftpgo.com/com.sftpgo.plist rename to projects/sftpgo.com/com.sftpgo.plist.gtpl index 9c74140256..d7da2238b0 100644 --- a/projects/sftpgo.com/com.sftpgo.plist +++ b/projects/sftpgo.com/com.sftpgo.plist.gtpl @@ -3,15 +3,15 @@ Label - com.github.drakkan.sftpgo + com.sftpgo.com UserName _sftpgo - WorkingDirectory - /Users/_sftpgo/app/sftpgo/ ProgramArguments - /usr/local/bin/pkgx +sftpgo.com^${SFTPGO_VERSION} sftpgo-wrapper ${HOME} - serve + /usr/local/bin/pkgx + +{{ getenv "package_project" "SETUP_ERROR" }}^{{ getenv "package_version" "SETUP_ERROR" }} + sftpgo-wrapper + {{ getenv "app_homedir" "SETUP_ERROR" }} KeepAlive diff --git a/projects/sftpgo.com/package.yml b/projects/sftpgo.com/package.yml index ce852fa914..9e32a47561 100644 --- a/projects/sftpgo.com/package.yml +++ b/projects/sftpgo.com/package.yml @@ -27,9 +27,9 @@ build: SFTPGO_WRAPPER_SCRIPT: wrapper.bash SFTPGO_README_FILE: README.md SFTPGO_CONFIG_FILE: sftpgo.json - SFTPGO_SERVICE_ENVIRONMENT_FILE: sftpgo.env - SFTPGO_SYSTEMD_SERVICE_FILE: sftpgo.service - SFTPGO_LAUNCHD_SERVICE_FILE: com.sftpgo.plist + SFTPGO_SERVICE_ENVIRONMENT_FILE: sftpgo.env.gtpl + SFTPGO_SYSTEMD_SERVICE_FILE: sftpgo.service.gtpl + SFTPGO_LAUNCHD_SERVICE_FILE: com.sftpgo.plist.gtpl script: # fails to find sqlite3.Error - run: TAGS="-tags nosqlite" diff --git a/projects/sftpgo.com/setup.bash b/projects/sftpgo.com/setup.bash index f79c867a5f..2e1baac1a2 100644 --- a/projects/sftpgo.com/setup.bash +++ b/projects/sftpgo.com/setup.bash @@ -1,21 +1,24 @@ -#!/usr/bin/env -S pkgx +gnu.org/coreutils +bash^5 bash +#!/usr/bin/env -S pkgx +gnu.org/coreutils +gomplate.ca +bash^5 bash function install_files { - declare -r package_bin_path="$( sudo -u _sftpgo pkgx +sftpgo.com| cut -d= -f2 | cut -d$ -f1 )" +# declare -r package_bin_path="$( +# sudo -u _sftpgo pkgx +${package_project}^${package_version} \ +# | cut -d= -f2 \ +# | cut -d$ -f1 \ +# | tr -d \" +# )" declare -r package_path="$( dirname "${package_bin_path}" )" declare -r package_conf_path="${package_path}/conf" - command install -v -D -b \ - "${package_conf_path}/${app_environment_file}" \ - "${app_conf_path}/${app_environment_file}" - sed -i "s/^PKGX_SFTPGO_VERSION=.*$/PKGX_SFTPGO_VERSION=${package_version}/" \ - "${app_conf_path}/${app_environment_file}" command install -v -D -b \ "${package_conf_path}/${app_conf_file}" \ "${app_conf_path}/${app_conf_file}" - command install -v -D \ - "${package_conf_path}/${service_file}" \ - "${services_path}/${service_file}" + command gomplate --verbose \ + --file "${package_conf_path}/${app_environment_file}.gtpl" \ + --out "${app_conf_path}/${app_environment_file}" + command gomplate --verbose \ + --file "${package_conf_path}/${service_file}.gtpl" \ + --out "${services_path}/${service_file}" for subdir in templates openapi static; do ln -v -s "${package_conf_path}/${subdir}" \ @@ -24,17 +27,16 @@ function install_files { } function setup_on_linux { - declare -r app_homedir="/home/${app_username}" - declare -r app_conf_path="${app_homedir}/app/sftpgo/conf" - declare -r service_file='sftpgo.service' - declare -r services_path='/etc/systemd/system' + declare -rx app_homedir="/home/${app_username}" + declare -rx app_conf_path="${app_homedir}/app/sftpgo/conf" + declare -r service_file='sftpgo.service' + declare -r services_path='/etc/systemd/system' if [[ -d /run/systemd/system ]]; then useradd -m \ -d "${app_homedir}" \ "${app_username}" - sudo -u _sftpgo pkgx +sftpgo.com^${package_version} install_files else echo 'Only systemd supported yet on Linux' @@ -42,10 +44,10 @@ function setup_on_linux { } function setup_on_darwin { - declare -r app_homedir="/Users/${app_username}" - declare -r app_conf_path="${app_homedir}/app/sftpgo/conf" - declare -r service_file='com.sftpgo.plist' - declare -r services_path='/Library/LaunchDaemons' + declare -rx app_homedir="/Users/${app_username}" + declare -rx app_conf_path="${app_homedir}/app/sftpgo/conf" + declare -r service_file='com.sftpgo.plist' + declare -r services_path='/Library/LaunchDaemons' sysadminctl -addUser \ -home "${app_homedir}" \ @@ -55,14 +57,15 @@ function setup_on_darwin { } function main { - declare -r script_file_path="$( realpath "${BASH_SOURCE[0]}" )" - declare -r package_bin_path="$( dirname "${script_file_path}" )" - declare -r package_path="$( dirname "${package_bin_path}" )" - declare -r package_version="${package_path#*/v}" + declare -r script_file_path="$( realpath "${BASH_SOURCE[0]}" )" + declare -r package_bin_path="$( dirname "${script_file_path}" )" + declare -r package_path="$( dirname "${package_bin_path}" )" + declare -rx package_project='sftpgo.com' + declare -rx package_version="${package_path#*/v}" - declare -r app_username="_sftpgo" - declare -r app_environment_file='sftpgo.env' - declare -r app_conf_file='sftpgo.json' + declare -r app_username="_sftpgo" + declare -r app_environment_file='sftpgo.env' + declare -r app_conf_file='sftpgo.json' printf 'Package directory %s\n' ${package_path} diff --git a/projects/sftpgo.com/sftpgo.env b/projects/sftpgo.com/sftpgo.env deleted file mode 100644 index 459cd392f9..0000000000 --- a/projects/sftpgo.com/sftpgo.env +++ /dev/null @@ -1,12 +0,0 @@ -set -a -PKGX_SFTPGO_PROJECT='sftpgo.com' -PKGX_SFTPGO_VERSION=##SETUP## - -SFTPGO_CONFIG_DIR='/home/_sftpgo/app/sftpgo/conf' -SFTPGO_HTTPD__TEMPLATES_PATH='/home/_sftpgo/app/sftpgo/data/templates' -SFTPGO_HTTPD__STATIC_FILES_PATH='/home/_sftpgo/app/sftpgo/data/static' -SFTPGO_HTTPD__OPENAPI_PATH='/home/_sftpgo/app/sftpgo/data/openapi' -SFTPGO_HTTPD__BACKUPS_PATH='/home/_sftpgo/app/sftpgo/data/backups' -SFTPGO_DATA_PROVIDER__CREDENTIALS_PATH='/home/_sftpgo/app/sftpgo/data/credentials' - -set +a diff --git a/projects/sftpgo.com/sftpgo.env.gtpl b/projects/sftpgo.com/sftpgo.env.gtpl new file mode 100644 index 0000000000..2d11b15c7c --- /dev/null +++ b/projects/sftpgo.com/sftpgo.env.gtpl @@ -0,0 +1,4 @@ +PKGX_SFTPGO_PROJECT='{{ getenv "package_project" "SETUP_ERROR" }}' +PKGX_SFTPGO_VERSION='{{ getenv "package_version" "SETUP_ERROR" }}' + +SFTPGO_CONFIG_DIR='{{ getenv "app_conf_path" "SETUP_ERROR" }}' diff --git a/projects/sftpgo.com/sftpgo.service b/projects/sftpgo.com/sftpgo.service.gtpl similarity index 67% rename from projects/sftpgo.com/sftpgo.service rename to projects/sftpgo.com/sftpgo.service.gtpl index caa799b5c7..63904f4e44 100644 --- a/projects/sftpgo.com/sftpgo.service +++ b/projects/sftpgo.com/sftpgo.service.gtpl @@ -6,9 +6,13 @@ After=network.target Type=simple User=_sftpgo Group=_sftpgo -Environment="PKGX_SFTPGO_PROJECT=sftpgo.com" -Environment="PKGX_SFTPGO_VERSION=2.6.6" -ExecStart=/bin/bash -c "exec /usr/local/bin/pkgx +${PKGX_SFTPGO_PROJECT}^${PKGX_SFTPGO_VERSION} sftpgo-wrapper ${HOME}" +ExecStart=/usr/local/bin/pkgx +{{ + getenv "package_project" "SETUP_ERROR" +}}^{{ + getenv "package_version" "SETUP_ERROR" +}} sftpgo-wrapper {{ + getenv "app_homedir" "SETUP_ERROR" +}} ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=8192 KillMode=mixed From e8fdcc12d8dbe59dd9deea53c5b97a4782a608d5 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Fri, 6 Jun 2025 14:16:50 +0200 Subject: [PATCH 3/7] wip: standardize the way to configure services (systemd, launchd...); cleanup --- projects/sftpgo.com/setup.bash | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/projects/sftpgo.com/setup.bash b/projects/sftpgo.com/setup.bash index 2e1baac1a2..46e60b65bb 100644 --- a/projects/sftpgo.com/setup.bash +++ b/projects/sftpgo.com/setup.bash @@ -1,15 +1,6 @@ #!/usr/bin/env -S pkgx +gnu.org/coreutils +gomplate.ca +bash^5 bash function install_files { -# declare -r package_bin_path="$( -# sudo -u _sftpgo pkgx +${package_project}^${package_version} \ -# | cut -d= -f2 \ -# | cut -d$ -f1 \ -# | tr -d \" -# )" - declare -r package_path="$( dirname "${package_bin_path}" )" - declare -r package_conf_path="${package_path}/conf" - command install -v -D -b \ "${package_conf_path}/${app_conf_file}" \ "${app_conf_path}/${app_conf_file}" @@ -24,6 +15,8 @@ function install_files { ln -v -s "${package_conf_path}/${subdir}" \ "${app_conf_path}" done + chown -R "${app_username}:${app_username}" \ + "${app_homedir}" } function setup_on_linux { @@ -57,12 +50,21 @@ function setup_on_darwin { } function main { - declare -r script_file_path="$( realpath "${BASH_SOURCE[0]}" )" - declare -r package_bin_path="$( dirname "${script_file_path}" )" - declare -r package_path="$( dirname "${package_bin_path}" )" - declare -rx package_project='sftpgo.com' - declare -rx package_version="${package_path#*/v}" + declare -r setup_script_file_path="$( realpath "${BASH_SOURCE[0]}" )" + declare -r setup_script_dir_path="$( dirname "${setup_script_file_path}" )" + declare -r setup_script_pkgx_path="$( dirname "${setup_script_dir_path}" )" + declare -rx package_version="${setup_script_pkgx_path#*/v}" + declare -r package_project_path="$( dirname "${setup_script_pkgx_path}" )" + declare -rx package_project="$( basename "${package_project_path}" )" + declare -r package_bin_path="$( + sudo -u _sftpgo pkgx +${package_project}^${package_version} \ + | cut -d= -f2 \ + | cut -d$ -f1 \ + | tr -d \" + )" + declare -r package_path="$( dirname "${package_bin_path}" )" + declare -r package_conf_path="${package_path}/conf" declare -r app_username="_sftpgo" declare -r app_environment_file='sftpgo.env' declare -r app_conf_file='sftpgo.json' From 0f4d9467fad003d8d409f5e0593f87a880d77410 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Fri, 6 Jun 2025 14:37:49 +0200 Subject: [PATCH 4/7] simplify+cleanup --- projects/sftpgo.com/com.sftpgo.plist.gtpl | 6 ++++-- projects/sftpgo.com/package.yml | 3 --- projects/sftpgo.com/sftpgo.service.gtpl | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/projects/sftpgo.com/com.sftpgo.plist.gtpl b/projects/sftpgo.com/com.sftpgo.plist.gtpl index d7da2238b0..aa0db0f338 100644 --- a/projects/sftpgo.com/com.sftpgo.plist.gtpl +++ b/projects/sftpgo.com/com.sftpgo.plist.gtpl @@ -10,8 +10,10 @@ /usr/local/bin/pkgx +{{ getenv "package_project" "SETUP_ERROR" }}^{{ getenv "package_version" "SETUP_ERROR" }} - sftpgo-wrapper - {{ getenv "app_homedir" "SETUP_ERROR" }} + sftpgo + serve + --config-dir + {{ getenv "app_conf_path" "SETUP_ERROR" }} KeepAlive diff --git a/projects/sftpgo.com/package.yml b/projects/sftpgo.com/package.yml index 9e32a47561..d520473637 100644 --- a/projects/sftpgo.com/package.yml +++ b/projects/sftpgo.com/package.yml @@ -24,7 +24,6 @@ build: GO_LDFLAGS: - -buildmode=pie SFTPGO_SETUP_SCRIPT: setup.bash - SFTPGO_WRAPPER_SCRIPT: wrapper.bash SFTPGO_README_FILE: README.md SFTPGO_CONFIG_FILE: sftpgo.json SFTPGO_SERVICE_ENVIRONMENT_FILE: sftpgo.env.gtpl @@ -36,7 +35,6 @@ build: if: 2.6.0 - go build -v $TAGS -trimpath -ldflags="${GO_LDFLAGS}" -o {{prefix}}/bin/sftpgo - install -v -D props/${SFTPGO_SETUP_SCRIPT} {{prefix}}/bin/sftpgo-setup - - install -v -D props/${SFTPGO_WRAPPER_SCRIPT} {{prefix}}/bin/sftpgo-wrapper - install -v -D props/${SFTPGO_README_FILE} {{prefix}}/doc/${SFTPGO_README_FILE} - install -v -D ${SFTPGO_CONFIG_FILE} {{prefix}}/conf/${SFTPGO_CONFIG_FILE} - install -v -D props/${SFTPGO_SERVICE_ENVIRONMENT_FILE} {{prefix}}/conf/${SFTPGO_SERVICE_ENVIRONMENT_FILE} @@ -49,6 +47,5 @@ build: provides: - bin/sftpgo - bin/sftpgo-setup - - bin/sftpgo-wrapper test: test "$(sftpgo --version | cut -d' ' -f2 | cut -d'-' -f1)" = {{version}} diff --git a/projects/sftpgo.com/sftpgo.service.gtpl b/projects/sftpgo.com/sftpgo.service.gtpl index 63904f4e44..1fddf4e039 100644 --- a/projects/sftpgo.com/sftpgo.service.gtpl +++ b/projects/sftpgo.com/sftpgo.service.gtpl @@ -10,8 +10,8 @@ ExecStart=/usr/local/bin/pkgx +{{ getenv "package_project" "SETUP_ERROR" }}^{{ getenv "package_version" "SETUP_ERROR" -}} sftpgo-wrapper {{ - getenv "app_homedir" "SETUP_ERROR" +}} sftpgo serve --config-dir {{ + getenv "app_conf_path" "SETUP_ERROR" }} ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=8192 From a0272c98387f5d38feead6663f27ff45c09bcbac Mon Sep 17 00:00:00 2001 From: tannevaled Date: Fri, 6 Jun 2025 14:43:14 +0200 Subject: [PATCH 5/7] remove wip wrapper --- projects/sftpgo.com/wrapper.bash | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 projects/sftpgo.com/wrapper.bash diff --git a/projects/sftpgo.com/wrapper.bash b/projects/sftpgo.com/wrapper.bash deleted file mode 100644 index 69005fbbf4..0000000000 --- a/projects/sftpgo.com/wrapper.bash +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env -S pkgx +bash^5 bash - -set -x -set -u - -function main { - declare -r app_homedir="${1}" - - source "${app_homedir}/app/sftpgo/conf/sftpgo.env" - - pkgx +${PKGX_SFTPGO_PROJECT}^${PKGX_SFTPGO_VERSION} \ - sftpgo serve - -} - -main ${@} From a57bb39d58308f09dd0beb3789dbafaaf3651eb4 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Fri, 6 Jun 2025 14:44:43 +0200 Subject: [PATCH 6/7] typo --- projects/sftpgo.com/com.sftpgo.plist.gtpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/sftpgo.com/com.sftpgo.plist.gtpl b/projects/sftpgo.com/com.sftpgo.plist.gtpl index aa0db0f338..3b02349172 100644 --- a/projects/sftpgo.com/com.sftpgo.plist.gtpl +++ b/projects/sftpgo.com/com.sftpgo.plist.gtpl @@ -12,7 +12,7 @@ +{{ getenv "package_project" "SETUP_ERROR" }}^{{ getenv "package_version" "SETUP_ERROR" }} sftpgo serve - --config-dir + --config-dir {{ getenv "app_conf_path" "SETUP_ERROR" }} KeepAlive From a5118f8f60b240480fdd72325b500b5bc789f454 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Fri, 6 Jun 2025 14:48:41 +0200 Subject: [PATCH 7/7] do not use environment file anymore --- projects/sftpgo.com/package.yml | 4 ++-- projects/sftpgo.com/setup.bash | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/projects/sftpgo.com/package.yml b/projects/sftpgo.com/package.yml index d520473637..9336455746 100644 --- a/projects/sftpgo.com/package.yml +++ b/projects/sftpgo.com/package.yml @@ -26,7 +26,7 @@ build: SFTPGO_SETUP_SCRIPT: setup.bash SFTPGO_README_FILE: README.md SFTPGO_CONFIG_FILE: sftpgo.json - SFTPGO_SERVICE_ENVIRONMENT_FILE: sftpgo.env.gtpl +# SFTPGO_SERVICE_ENVIRONMENT_FILE: sftpgo.env.gtpl SFTPGO_SYSTEMD_SERVICE_FILE: sftpgo.service.gtpl SFTPGO_LAUNCHD_SERVICE_FILE: com.sftpgo.plist.gtpl script: @@ -37,7 +37,7 @@ build: - install -v -D props/${SFTPGO_SETUP_SCRIPT} {{prefix}}/bin/sftpgo-setup - install -v -D props/${SFTPGO_README_FILE} {{prefix}}/doc/${SFTPGO_README_FILE} - install -v -D ${SFTPGO_CONFIG_FILE} {{prefix}}/conf/${SFTPGO_CONFIG_FILE} - - install -v -D props/${SFTPGO_SERVICE_ENVIRONMENT_FILE} {{prefix}}/conf/${SFTPGO_SERVICE_ENVIRONMENT_FILE} +# - install -v -D props/${SFTPGO_SERVICE_ENVIRONMENT_FILE} {{prefix}}/conf/${SFTPGO_SERVICE_ENVIRONMENT_FILE} - install -v -D props/${SFTPGO_SYSTEMD_SERVICE_FILE} {{prefix}}/conf/${SFTPGO_SYSTEMD_SERVICE_FILE} - install -v -D props/${SFTPGO_LAUNCHD_SERVICE_FILE} {{prefix}}/conf/${SFTPGO_LAUNCHD_SERVICE_FILE} - find templates -type f -exec install -v -D "{}" "{{prefix}}/conf/{}" \; diff --git a/projects/sftpgo.com/setup.bash b/projects/sftpgo.com/setup.bash index 46e60b65bb..907f37ae2c 100644 --- a/projects/sftpgo.com/setup.bash +++ b/projects/sftpgo.com/setup.bash @@ -4,9 +4,9 @@ function install_files { command install -v -D -b \ "${package_conf_path}/${app_conf_file}" \ "${app_conf_path}/${app_conf_file}" - command gomplate --verbose \ - --file "${package_conf_path}/${app_environment_file}.gtpl" \ - --out "${app_conf_path}/${app_environment_file}" +# command gomplate --verbose \ +# --file "${package_conf_path}/${app_environment_file}.gtpl" \ +# --out "${app_conf_path}/${app_environment_file}" command gomplate --verbose \ --file "${package_conf_path}/${service_file}.gtpl" \ --out "${services_path}/${service_file}" @@ -66,7 +66,7 @@ function main { declare -r package_path="$( dirname "${package_bin_path}" )" declare -r package_conf_path="${package_path}/conf" declare -r app_username="_sftpgo" - declare -r app_environment_file='sftpgo.env' +# declare -r app_environment_file='sftpgo.env' declare -r app_conf_file='sftpgo.json' printf 'Package directory %s\n' ${package_path}