refactor(nvm): Move wrapper scripts to image_support_files directory

Improved code organization and maintainability:
- Created image_support_files/ directory for Docker helper scripts
- Moved bash-with-nvm and docker-entrypoint.sh to support directory
- Added comprehensive README.md documenting each script's purpose
- Updated Dockerfile to COPY from organized directory structure

Benefits:
- Cleaner repository structure
- Scripts are now version-controlled files (not echo chains)
- Easier to read, modify, and maintain
- Self-documented with in-directory README

No functional changes - all nvm functionality remains identical.
This commit is contained in:
2025-10-26 10:38:59 +00:00
parent 3aea4a70ee
commit bb8d623c95
4 changed files with 117 additions and 21 deletions

View File

@@ -93,31 +93,14 @@ RUN printf '%s\n%s\n%s\n\n%s\n' \
'[ -s "$NVM_DIR/bash_completion" ] && . "$NVM_DIR/bash_completion"' \
"$(cat /etc/bash.bashrc)" > /etc/bash.bashrc
# Create a shell wrapper that sources nvm before executing commands
RUN echo '#!/bin/bash' > /usr/local/bin/bash-with-nvm \
&& echo 'set -e' >> /usr/local/bin/bash-with-nvm \
&& echo 'export NVM_DIR="/usr/local/nvm"' >> /usr/local/bin/bash-with-nvm \
&& echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> /usr/local/bin/bash-with-nvm \
&& echo 'eval "$@"' >> /usr/local/bin/bash-with-nvm \
&& chmod +x /usr/local/bin/bash-with-nvm
# Copy nvm wrapper scripts from support directory
COPY image_support_files/bash-with-nvm /usr/local/bin/bash-with-nvm
COPY image_support_files/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
RUN chmod +x /usr/local/bin/bash-with-nvm /usr/local/bin/docker-entrypoint.sh
# Use wrapper for RUN commands to enable nvm
SHELL ["/usr/local/bin/bash-with-nvm"]
# Create entrypoint wrapper for runtime nvm support (CI/CD workflows)
RUN echo '#!/bin/bash' > /usr/local/bin/docker-entrypoint.sh \
&& echo 'set -e' >> /usr/local/bin/docker-entrypoint.sh \
&& echo 'export NVM_DIR="/usr/local/nvm"' >> /usr/local/bin/docker-entrypoint.sh \
&& echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> /usr/local/bin/docker-entrypoint.sh \
&& echo '# If command is bash, source nvm in it' >> /usr/local/bin/docker-entrypoint.sh \
&& echo 'if [ "$1" = "bash" ] && [ "$2" = "-c" ]; then' >> /usr/local/bin/docker-entrypoint.sh \
&& echo ' shift 2' >> /usr/local/bin/docker-entrypoint.sh \
&& echo ' exec bash -c "source /etc/bash.bashrc && $*"' >> /usr/local/bin/docker-entrypoint.sh \
&& echo 'else' >> /usr/local/bin/docker-entrypoint.sh \
&& echo ' exec "$@"' >> /usr/local/bin/docker-entrypoint.sh \
&& echo 'fi' >> /usr/local/bin/docker-entrypoint.sh \
&& chmod +x /usr/local/bin/docker-entrypoint.sh
# Enable nvm for runtime bash commands (CI/CD workflows)
ENV BASH_ENV=/etc/bash.bashrc