From eeeb4edc24e3c04707a518e49542f10dffac183f Mon Sep 17 00:00:00 2001 From: Josh Date: Tue, 26 Nov 2024 08:40:09 -0500 Subject: [PATCH 1/3] fix(hooks): Consistent logging + skip when empty too - Use "Searching for scripts [...] located in [...]" consistently (i.e. for each hook_folder_path instead of only for some / under some conditions) - Skip early if a given hook folder is empty too (not just nonexistent) - Add feature name (hooks) to all messaging for clarity Signed-off-by: Josh --- docker-entrypoint.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 8e178f2e..5c880189 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -24,30 +24,30 @@ run_path() { local hook_folder_path="/docker-entrypoint-hooks.d/$1" local return_code=0 - if ! [ -d "${hook_folder_path}" ]; then - echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist" + echo "=> Searching for hook scripts (*.sh) to run, located in the folder: ${hook_folder_path}" + + if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then + echo "=> Skipping the hook folder \"${hook_folder_path}\", because it doesn't exist or is empty" return 0 fi - echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}" - ( find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do if ! [ -x "${script_file_path}" ]; then - echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag" + echo "==> The hook script \"${script_file_path}\" was skipped, because it didn't have the executable flag" continue fi - echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\"" + echo "==> Running the hook script (cwd: $(pwd)): \"${script_file_path}\"" run_as "${script_file_path}" || return_code="$?" if [ "${return_code}" -ne "0" ]; then - echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}" + echo "==> Failed at executing hook script \"${script_file_path}\". Exit code: ${return_code}" exit 1 fi - echo "==> Finished the script: \"${script_file_path}\"" + echo "==> Finished the hook script: \"${script_file_path}\"" done ) } From f360440588971a52aa62ff38a4b01f45ae5f4cfa Mon Sep 17 00:00:00 2001 From: Josh Date: Tue, 26 Nov 2024 12:00:46 -0500 Subject: [PATCH 2/3] fix(hooks): Clear state delineation / consistent output Signed-off-by: Josh --- docker-entrypoint.sh | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 5c880189..db6044a8 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -23,32 +23,39 @@ run_as() { run_path() { local hook_folder_path="/docker-entrypoint-hooks.d/$1" local return_code=0 + local found=0 - echo "=> Searching for hook scripts (*.sh) to run, located in the folder: ${hook_folder_path}" + echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\"" if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then - echo "=> Skipping the hook folder \"${hook_folder_path}\", because it doesn't exist or is empty" + echo "==> Skipped: the \"$1\" folder is empty (or does not exist)" return 0 fi - ( - find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do + find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | ( + while read -r script_file_path; do if ! [ -x "${script_file_path}" ]; then - echo "==> The hook script \"${script_file_path}\" was skipped, because it didn't have the executable flag" + echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag" + found=$((found-1)) continue fi - echo "==> Running the hook script (cwd: $(pwd)): \"${script_file_path}\"" - + echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\"" + found=$((found+1)) run_as "${script_file_path}" || return_code="$?" if [ "${return_code}" -ne "0" ]; then - echo "==> Failed at executing hook script \"${script_file_path}\". Exit code: ${return_code}" + echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}" exit 1 fi - echo "==> Finished the hook script: \"${script_file_path}\"" + echo "==> Finished executing the script: \"${script_file_path}\"" done + if [ "$found" -lt "1" ]; then + echo "==> Skipped: the \"$1\" folder does not contain any valid scripts" + else + echo "=> Completed executing scripts in the \"$1\" folder" + fi ) } From 2f4de23ea11705a977984c273082efa2d4dcf743 Mon Sep 17 00:00:00 2001 From: Josh Date: Sat, 14 Dec 2024 14:24:34 -0500 Subject: [PATCH 3/3] docs(README): Basic status badges Signed-off-by: Josh --- README.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/README.md b/README.md index b3d5e7df..152489b2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,11 @@ +![GitHub last commit](https://img.shields.io/github/last-commit/nextcloud/docker) +[![GitHub Release](https://img.shields.io/github/v/release/nextcloud/docker?link=https%3A%2F%2Fgithub.com%2Fnextcloud%2Fdocker%2Freleases%2Flatest&label=latest%20Image)](https://github.com/nextcloud/docker/releases/) +[![Docker Image Version](https://img.shields.io/docker/v/library/nextcloud?sort=semver&logo=nextcloud&label=Nextcloud)](https://nextcloud.com/changelog/) +![GitHub commits since latest release](https://img.shields.io/github/commits-since/nextcloud/docker/latest) +![GitHub commit activity](https://img.shields.io/github/commit-activity/m/nextcloud/docker) +![GitHub contributors](https://img.shields.io/github/contributors/nextcloud/docker?label=contributors%20-%20Thank%20you!) +![Docker Pulls](https://img.shields.io/docker/pulls/library/nextcloud) + # What is Nextcloud? A safe home for all your data. Access & share your files, calendars, contacts, mail & more from any device, on your terms. @@ -19,6 +27,9 @@ The second option is a `fpm` container. It is based on the [php-fpm](https://hub Most Nextcloud Server administrative matters are covered in the official [Nextcloud Admin Manual](https://docs.nextcloud.com/server/latest/admin_manual/) or [other official Nextcloud documentation](https://docs.nextcloud.com) (which are all routinely updated). +[![Discourse Users](https://img.shields.io/discourse/users?server=https%3A%2F%2Fhelp.nextcloud.com&label=Community%20Forum&color=blue&link=https%3A%2F%2Fhelp.nextcloud.com%2F)](https://help.nextcloud.com/) +[![Discourse Posts](https://img.shields.io/discourse/posts?server=https%3A%2F%2Fhelp.nextcloud.com&label=Community%20Forum&color=blue&link=https%3A%2F%2Fhelp.nextcloud.com%2F)](https://help.nextcloud.com/) + **If you have any problems or usage questions while using the image, please ask for assistance on the [Nextcloud Community Help Forum](https://help.nextcloud.com)** rather than reporting them as "bugs" (unless they are bugs of course). This helps the maintainers (who are volunteers) remain focused on making the image better (rather than responding solely to one-on-one support issues). (Tip: Some of the maintainers are also regular responders to help requests on the [community help forum](https://help.nextcloud.com/).) @@ -732,8 +743,16 @@ If there is a relevant existing open issue, you can either add to the discussion If you believe you've found a new bug, please create a new Issue so that others can try to reproduce it and remediation can be tracked. +![GitHub Issues or Pull Requests](https://img.shields.io/github/issues/nextcloud/docker?label=Open%20Issues) +![GitHub Issues or Pull Requests by label](https://img.shields.io/github/issues/nextcloud/docker/bug?style=flat&label=Bug%20Reports&color=red) +![GitHub Issues or Pull Requests by label](https://img.shields.io/github/issues/nextcloud/docker/enhancement?style=flat&label=Enhancement%20Ideas&color=green) +![GitHub Issues or Pull Requests by label](https://img.shields.io/github/issues/nextcloud/docker/good%20first%20issue?style=flat&label=Good%20First%20Issues) + **If you have any problems or usage questions while using the image, please ask for assistance on the [Nextcloud Community Help Forum](https://help.nextcloud.com)** rather than reporting them as "bugs" (unless they really are bugs of course). This helps the maintainers (who are volunteers) remain focused on making the image better (rather than responding solely to one-on-one support issues). (Tip: Some of the maintainers are also regular responders to help requests on the [Nextcloud Community Help Forum](https://help.nextcloud.com).) +[![Discourse Users](https://img.shields.io/discourse/users?server=https%3A%2F%2Fhelp.nextcloud.com&label=Community%20Forum&color=blue&link=https%3A%2F%2Fhelp.nextcloud.com%2F)](https://help.nextcloud.com/) +[![Discourse Posts](https://img.shields.io/discourse/posts?server=https%3A%2F%2Fhelp.nextcloud.com&label=Community%20Forum&color=blue&link=https%3A%2F%2Fhelp.nextcloud.com%2F)](https://help.nextcloud.com/) + Most Nextcloud Server matters are covered in the official [Nextcloud Admin Manual](https://docs.nextcloud.com/server/latest/admin_manual/) or the [other official Nextcloud documentation](https://docs.nextcloud.com) (which are routinely updated).