From 3e10dc99b46f0430f468e9cfca3f70bf20bc75c5 Mon Sep 17 00:00:00 2001 From: librelad Date: Tue, 26 May 2026 00:00:55 +0100 Subject: [PATCH] refactor(headscale): flatten + move headscale into its app folder MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move the whole central scripts/headscale/ tree into containers/headscale/, the last app-specific dir living centrally: - 11 sourced function files (incl. the former local/ remote/ subdirs) flattened into containers/headscale/scripts/ — flat because the container scan is maxdepth 3, so one subfolder level is the limit; basenames already encode the local/remote distinction. - tailscale.sh is a CONTAINER PAYLOAD (ends in a bare `install_tailscale` call, runs apt/curl) — it must never be sourced into the manager, so it goes to containers/headscale/resources/ (pruned by the scan), NOT scripts/. Verified install_tailscale does not leak into the runtime after sourcing. - Fix tailscaleInstallToContainer to copy the payload from its new resources/ path (it previously referenced ${install_scripts_dir}tailscale.sh, which never matched the file's actual location) and drop the dead commented docker-cp line. - Remove the now-moot headscale special-case from generate_arrays.sh; regenerate (files_headscale.sh drops — headscale is fully container-scanned now). All 11 functions source + define cleanly; callers resolve by name regardless of location. Co-Authored-By: Claude Opus 4.7 Signed-off-by: librelad --- .../headscale/resources}/tailscale.sh | 0 .../scripts}/headscale_check_remote.sh | 0 .../headscale/scripts}/headscale_commands.sh | 0 .../scripts}/headscale_edit_config.sh | 0 .../scripts}/headscale_generate_auth.sh | 0 .../scripts}/headscale_get_hostname.sh | 0 .../headscale/scripts}/headscale_setup.sh | 0 .../scripts}/headscale_setup_local.sh | 0 .../scripts}/headscale_setup_localhost.sh | 0 .../scripts}/headscale_setup_remote.sh | 0 .../headscale/scripts}/headscale_user.sh | 0 .../headscale/scripts}/tailscale_install.sh | 4 +--- .../source/files/arrays/files_headscale.sh | 19 ------------------- scripts/source/files/arrays/files_source.sh | 1 - scripts/source/files/generate_arrays.sh | 9 --------- 15 files changed, 1 insertion(+), 32 deletions(-) rename {scripts/headscale/tailscale => containers/headscale/resources}/tailscale.sh (100%) rename {scripts/headscale/remote => containers/headscale/scripts}/headscale_check_remote.sh (100%) rename {scripts/headscale => containers/headscale/scripts}/headscale_commands.sh (100%) rename {scripts/headscale => containers/headscale/scripts}/headscale_edit_config.sh (100%) rename {scripts/headscale/local => containers/headscale/scripts}/headscale_generate_auth.sh (100%) rename {scripts/headscale/local => containers/headscale/scripts}/headscale_get_hostname.sh (100%) rename {scripts/headscale => containers/headscale/scripts}/headscale_setup.sh (100%) rename {scripts/headscale/local => containers/headscale/scripts}/headscale_setup_local.sh (100%) rename {scripts/headscale/local => containers/headscale/scripts}/headscale_setup_localhost.sh (100%) rename {scripts/headscale/remote => containers/headscale/scripts}/headscale_setup_remote.sh (100%) rename {scripts/headscale => containers/headscale/scripts}/headscale_user.sh (100%) rename {scripts/headscale/tailscale => containers/headscale/scripts}/tailscale_install.sh (56%) delete mode 100755 scripts/source/files/arrays/files_headscale.sh diff --git a/scripts/headscale/tailscale/tailscale.sh b/containers/headscale/resources/tailscale.sh similarity index 100% rename from scripts/headscale/tailscale/tailscale.sh rename to containers/headscale/resources/tailscale.sh diff --git a/scripts/headscale/remote/headscale_check_remote.sh b/containers/headscale/scripts/headscale_check_remote.sh similarity index 100% rename from scripts/headscale/remote/headscale_check_remote.sh rename to containers/headscale/scripts/headscale_check_remote.sh diff --git a/scripts/headscale/headscale_commands.sh b/containers/headscale/scripts/headscale_commands.sh similarity index 100% rename from scripts/headscale/headscale_commands.sh rename to containers/headscale/scripts/headscale_commands.sh diff --git a/scripts/headscale/headscale_edit_config.sh b/containers/headscale/scripts/headscale_edit_config.sh similarity index 100% rename from scripts/headscale/headscale_edit_config.sh rename to containers/headscale/scripts/headscale_edit_config.sh diff --git a/scripts/headscale/local/headscale_generate_auth.sh b/containers/headscale/scripts/headscale_generate_auth.sh similarity index 100% rename from scripts/headscale/local/headscale_generate_auth.sh rename to containers/headscale/scripts/headscale_generate_auth.sh diff --git a/scripts/headscale/local/headscale_get_hostname.sh b/containers/headscale/scripts/headscale_get_hostname.sh similarity index 100% rename from scripts/headscale/local/headscale_get_hostname.sh rename to containers/headscale/scripts/headscale_get_hostname.sh diff --git a/scripts/headscale/headscale_setup.sh b/containers/headscale/scripts/headscale_setup.sh similarity index 100% rename from scripts/headscale/headscale_setup.sh rename to containers/headscale/scripts/headscale_setup.sh diff --git a/scripts/headscale/local/headscale_setup_local.sh b/containers/headscale/scripts/headscale_setup_local.sh similarity index 100% rename from scripts/headscale/local/headscale_setup_local.sh rename to containers/headscale/scripts/headscale_setup_local.sh diff --git a/scripts/headscale/local/headscale_setup_localhost.sh b/containers/headscale/scripts/headscale_setup_localhost.sh similarity index 100% rename from scripts/headscale/local/headscale_setup_localhost.sh rename to containers/headscale/scripts/headscale_setup_localhost.sh diff --git a/scripts/headscale/remote/headscale_setup_remote.sh b/containers/headscale/scripts/headscale_setup_remote.sh similarity index 100% rename from scripts/headscale/remote/headscale_setup_remote.sh rename to containers/headscale/scripts/headscale_setup_remote.sh diff --git a/scripts/headscale/headscale_user.sh b/containers/headscale/scripts/headscale_user.sh similarity index 100% rename from scripts/headscale/headscale_user.sh rename to containers/headscale/scripts/headscale_user.sh diff --git a/scripts/headscale/tailscale/tailscale_install.sh b/containers/headscale/scripts/tailscale_install.sh similarity index 56% rename from scripts/headscale/tailscale/tailscale_install.sh rename to containers/headscale/scripts/tailscale_install.sh index 06c39e8..7d2c0fd 100755 --- a/scripts/headscale/tailscale/tailscale_install.sh +++ b/containers/headscale/scripts/tailscale_install.sh @@ -8,13 +8,11 @@ tailscaleInstallToContainer() local result=$(createFolders "loud" $docker_install_user $containers_dir$app_name/tailscale) checkSuccess "Creating Tailscale folder" - copyFile "loud" "${install_scripts_dir}tailscale.sh" "$containers_dir$app_name/tailscale/tailscale.sh" $docker_install_user | runInstallWrite -a "$logs_dir/$docker_log_file" 2>&1 + copyFile "loud" "${install_containers_dir}headscale/resources/tailscale.sh" "$containers_dir$app_name/tailscale/tailscale.sh" $docker_install_user | runInstallWrite -a "$logs_dir/$docker_log_file" 2>&1 if [[ "$type" != "install" ]]; then dockerComposeRestart $app_name; fi - #dockerCommandRun "docker cp ${install_scripts_dir}tailscale.sh $app_name:/usr/local/bin/tailscale.sh" - #checkSuccess "Installing Tailscale installer script into the $app_name container" dockerCommandRun "docker exec -it $app_name /usr/local/bin/tailscale.sh" checkSuccess "Executing Tailscale installer script in the $app_name container" diff --git a/scripts/source/files/arrays/files_headscale.sh b/scripts/source/files/arrays/files_headscale.sh deleted file mode 100755 index 0b44a2b..0000000 --- a/scripts/source/files/arrays/files_headscale.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -# This file is auto-generated by generate_arrays.sh -# Do not edit manually - run './scripts/source/files/generate_arrays.sh run' to regenerate - -headscale_scripts=( - "headscale/headscale_commands.sh" - "headscale/headscale_edit_config.sh" - "headscale/headscale_setup.sh" - "headscale/headscale_user.sh" - "headscale/local/headscale_generate_auth.sh" - "headscale/local/headscale_get_hostname.sh" - "headscale/local/headscale_setup_localhost.sh" - "headscale/local/headscale_setup_local.sh" - "headscale/remote/headscale_check_remote.sh" - "headscale/remote/headscale_setup_remote.sh" - "headscale/tailscale/tailscale_install.sh" - -) diff --git a/scripts/source/files/arrays/files_source.sh b/scripts/source/files/arrays/files_source.sh index 3af26c4..97734ee 100755 --- a/scripts/source/files/arrays/files_source.sh +++ b/scripts/source/files/arrays/files_source.sh @@ -14,7 +14,6 @@ source_scripts=( "source/files/arrays/files_database.sh" "source/files/arrays/files_docker.sh" "source/files/arrays/files_function.sh" - "source/files/arrays/files_headscale.sh" "source/files/arrays/files_install.sh" "source/files/arrays/files_logs.sh" "source/files/arrays/files_menu.sh" diff --git a/scripts/source/files/generate_arrays.sh b/scripts/source/files/generate_arrays.sh index 9f05125..7143d57 100755 --- a/scripts/source/files/generate_arrays.sh +++ b/scripts/source/files/generate_arrays.sh @@ -111,15 +111,6 @@ EOF esac fi - # Skip specific files for headscale folder - if [ "$folder_name" = "headscale" ]; then - case "$rel_path" in - "headscale/tailscale/tailscale.sh") - continue - ;; - esac - fi - # Escape quotes and add to array echo " \"$rel_path\"" >> "$array_file" done