🔧 Update configuration files 🔧

Dockerfile
Dockerfile.18.04
Dockerfile.20.04
Dockerfile.22.04
Dockerfile.24.04
Dockerfile.24.10
Dockerfile.26.04
dockerfs/root/docker/setup/00-init.sh
dockerfs/root/docker/setup/01-system.sh
dockerfs/root/docker/setup/02-packages.sh
dockerfs/root/docker/setup/03-files.sh
dockerfs/root/docker/setup/04-users.sh
dockerfs/root/docker/setup/05-custom.sh
dockerfs/root/docker/setup/06-post.sh
dockerfs/root/docker/setup/07-cleanup.sh
dockerfs/usr/local/bin/entrypoint.sh
dockerfs/usr/local/bin/pkmgr
dockerfs/usr/local/etc/docker/functions/entrypoint.sh
dockerfs/usr/local/share/template-files/config/env/default.sample
dockerfs/usr/local/share/template-files/config/env/examples/00-directory.sh
dockerfs/usr/local/share/template-files/config/env/examples/addresses.sh
dockerfs/usr/local/share/template-files/config/env/examples/certbot.sh
dockerfs/usr/local/share/template-files/config/env/examples/couchdb.sh
dockerfs/usr/local/share/template-files/config/env/examples/dockerd.sh
dockerfs/usr/local/share/template-files/config/env/examples/global.sh
dockerfs/usr/local/share/template-files/config/env/examples/healthcheck.sh
dockerfs/usr/local/share/template-files/config/env/examples/mariadb.sh
dockerfs/usr/local/share/template-files/config/env/examples/mongodb.sh
dockerfs/usr/local/share/template-files/config/env/examples/networking.sh
dockerfs/usr/local/share/template-files/config/env/examples/other.sh
dockerfs/usr/local/share/template-files/config/env/examples/php.sh
dockerfs/usr/local/share/template-files/config/env/examples/postgres.sh
dockerfs/usr/local/share/template-files/config/env/examples/redis.sh
dockerfs/usr/local/share/template-files/config/env/examples/services.sh
dockerfs/usr/local/share/template-files/config/env/examples/ssl.sh
dockerfs/usr/local/share/template-files/config/env/examples/supabase.sh
dockerfs/usr/local/share/template-files/config/env/examples/webservers.sh
dockerfs/usr/local/share/template-files/config/env/examples/zz-entrypoint.sh
dockerfs/usr/local/share/template-files/config/.gitkeep
dockerfs/usr/local/share/template-files/data/.gitkeep
dockerfs/usr/local/share/template-files/defaults/.gitkeep
.env.scripts.26.04
README.md
rootfs/usr/local/bin/copy
rootfs/usr/local/bin/symlink
This commit is contained in:
2026-05-05 14:31:29 -04:00
parent 66072331d9
commit 86b5f5a4e6
45 changed files with 534 additions and 21 deletions
+60
View File
@@ -0,0 +1,60 @@
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
##@Version : 202509161230-git
# @@Author : CasjaysDev
# @@Contact : CasjaysDev <docker-admin@casjaysdev.pro>
# @@License : MIT
# @@Copyright : Copyright 2025 CasjaysDev
# @@Created : Tue Sep 16 12:30:34 PM EDT 2025
# @@File : .env.scripts.26.04
# @@Description : Variables for gen-dockerfile and buildx scripts
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# entrypoint Settings
DOCKER_ENTYPOINT_PORTS_WEB="${DOCKER_ENTYPOINT_PORTS_WEB}"
DOCKER_ENTYPOINT_PORTS_SRV="${DOCKER_ENTYPOINT_PORTS_SRV}"
DOCKER_ENTYPOINT_HEALTH_APPS="$DOCKER_ENTYPOINT_HEALTH_APPS"
DOCKER_ENTYPOINT_HEALTH_ENDPOINTS="$DOCKER_ENTYPOINT_HEALTH_ENDPOINTS"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Dockerfile info
ENV_DOCKERFILE="Dockerfile.26.04"
ENV_IMAGE_NAME="ubuntu"
ENV_USE_TEMPLATE="ubuntu"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Maintainer info
ENV_ORG_NAME="casjaysdev"
ENV_VENDOR="CasjaysDev"
ENV_AUTHOR="CasjaysDev"
ENV_MAINTAINER="CasjaysDev <docker-admin@casjaysdev.pro>"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# REPO info
ENV_GIT_REPO_URL="https://github.com/casjaysdev/ubuntu"
ENV_REGISTRY_URL="docker.io"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Push image info
ENV_IMAGE_PUSH="casjaysdev/ubuntu"
ENV_IMAGE_TAG="26.04"
ENV_ADD_TAGS="resolute"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ENV_ADD_IMAGE_PUSH=""
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Pull image info
ENV_PULL_URL="ubuntu"
ENV_DISTRO_TAG="${IMAGE_VERSION}"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Env
SERVICE_PORT=""
EXPOSE_PORTS=""
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Versions
PHP_VERSION="system"
NODE_VERSION="system"
NODE_MANAGER="system"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Default directories
WWW_ROOT_DIR="/usr/local/share/httpd/default"
DEFAULT_FILE_DIR="/usr/local/share/template-files"
DEFAULT_DATA_DIR="/usr/local/share/template-files/data"
DEFAULT_CONF_DIR="/usr/local/share/template-files/config"
DEFAULT_TEMPLATE_DIR="/usr/local/share/template-files/defaults"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ENV_PACKAGES="bash-completion git curl wget sudo unzip tini xz-utils iproute2 pinentry-curses bsd-mailx procps net-tools bsd-mailx postfix python3-pip certbot ca-certificates jq "
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+13 -2
View File
@@ -73,7 +73,7 @@ ENV DEBIAN_FRONTEND="${DEBIAN_FRONTEND}"
USER ${USER} USER ${USER}
WORKDIR /root WORKDIR /root
COPY ./dockerfs/usr/local/bin/. /usr/local/bin/ COPY ./rootfs/usr/local/bin/. /usr/local/bin/
RUN set -e; \ RUN set -e; \
echo "Updating the system and ensuring bash is installed"; \ echo "Updating the system and ensuring bash is installed"; \
@@ -83,6 +83,17 @@ RUN set -e; \
echo "Setting up prerequisites"; \ echo "Setting up prerequisites"; \
echo "$LANG UTF-8" >"/etc/locale.gen"; \ echo "$LANG UTF-8" >"/etc/locale.gen"; \
echo 'export DEBIAN_FRONTEND="'${DEBIAN_FRONTEND}'"' >"/etc/profile.d/apt.sh" && chmod 755 "/etc/profile.d/apt.sh"; \ echo 'export DEBIAN_FRONTEND="'${DEBIAN_FRONTEND}'"' >"/etc/profile.d/apt.sh" && chmod 755 "/etc/profile.d/apt.sh"; \
codename="$(. /etc/os-release && echo "${VERSION_CODENAME:-${UBUNTU_CODENAME:-}}")"; \
arch="$(dpkg --print-architecture)"; \
case "$arch" in amd64|i386) ubuntu_mirror="http://archive.ubuntu.com/ubuntu"; ubuntu_security="http://security.ubuntu.com/ubuntu" ;; *) ubuntu_mirror="http://ports.ubuntu.com/ubuntu-ports"; ubuntu_security="$ubuntu_mirror" ;; esac; \
if [ -n "$codename" ]; then \
printf '%s\n' \
"deb ${ubuntu_mirror} ${codename} main restricted universe multiverse" \
"deb ${ubuntu_mirror} ${codename}-updates main restricted universe multiverse" \
"deb ${ubuntu_mirror} ${codename}-backports main restricted universe multiverse" \
"deb ${ubuntu_security} ${codename}-security main restricted universe multiverse" > /etc/apt/sources.list; \
rm -f /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources 2>/dev/null || true; \
fi; \
apt-get update && apt-get upgrade -yy && apt-get install -yy bash locales apt-utils; \ apt-get update && apt-get upgrade -yy && apt-get install -yy bash locales apt-utils; \
update-alternatives --install /bin/sh sh /bin/bash 1; \ update-alternatives --install /bin/sh sh /bin/bash 1; \
update-alternatives --install /usr/bin/sh sh /bin/bash 1; \ update-alternatives --install /usr/bin/sh sh /bin/bash 1; \
@@ -119,7 +130,7 @@ RUN echo "Initializing packages before copying files to image"; \
if [ -f "/root/docker/setup/02-packages.sh" ];then echo "Running the packages script";/root/docker/setup/02-packages.sh||{ echo "Failed to execute /root/docker/setup/02-packages.sh" >&2 && exit 10; };echo "Done running the packages script";fi; \ if [ -f "/root/docker/setup/02-packages.sh" ];then echo "Running the packages script";/root/docker/setup/02-packages.sh||{ echo "Failed to execute /root/docker/setup/02-packages.sh" >&2 && exit 10; };echo "Done running the packages script";fi; \
echo "" echo ""
COPY ./dockerfs/. / COPY ./rootfs/. /
COPY ./Dockerfile /root/docker/Dockerfile COPY ./Dockerfile /root/docker/Dockerfile
RUN echo "Updating system files "; \ RUN echo "Updating system files "; \
+4 -3
View File
@@ -73,7 +73,7 @@ ENV DEBIAN_FRONTEND="${DEBIAN_FRONTEND}"
USER ${USER} USER ${USER}
WORKDIR /root WORKDIR /root
COPY ./dockerfs/usr/local/bin/. /usr/local/bin/ COPY ./rootfs/usr/local/bin/. /usr/local/bin/
RUN set -e; \ RUN set -e; \
echo "Updating the system and ensuring bash is installed"; \ echo "Updating the system and ensuring bash is installed"; \
@@ -84,12 +84,13 @@ RUN set -e; \
echo "$LANG UTF-8" >"/etc/locale.gen"; \ echo "$LANG UTF-8" >"/etc/locale.gen"; \
echo 'export DEBIAN_FRONTEND="'${DEBIAN_FRONTEND}'"' >"/etc/profile.d/apt.sh" && chmod 755 "/etc/profile.d/apt.sh"; \ echo 'export DEBIAN_FRONTEND="'${DEBIAN_FRONTEND}'"' >"/etc/profile.d/apt.sh" && chmod 755 "/etc/profile.d/apt.sh"; \
arch="$(dpkg --print-architecture)"; \ arch="$(dpkg --print-architecture)"; \
case "$arch" in amd64|i386) ubuntu_mirror="http://archive.ubuntu.com/ubuntu"; ubuntu_security="http://security.ubuntu.com/ubuntu" ;; *) ubuntu_mirror="http://ports.ubuntu.com/ubuntu-ports"; ubuntu_security="$ubuntu_mirror" ;; esac; \ case "$arch" in amd64|i386) ubuntu_mirror="http://old-releases.ubuntu.com/ubuntu"; ubuntu_security="$ubuntu_mirror" ;; *) ubuntu_mirror="http://old-releases.ports.ubuntu.com/ubuntu-ports"; ubuntu_security="$ubuntu_mirror" ;; esac; \
printf '%s\n' \ printf '%s\n' \
"deb ${ubuntu_mirror} bionic main restricted universe multiverse" \ "deb ${ubuntu_mirror} bionic main restricted universe multiverse" \
"deb ${ubuntu_mirror} bionic-updates main restricted universe multiverse" \ "deb ${ubuntu_mirror} bionic-updates main restricted universe multiverse" \
"deb ${ubuntu_mirror} bionic-backports main restricted universe multiverse" \ "deb ${ubuntu_mirror} bionic-backports main restricted universe multiverse" \
"deb ${ubuntu_security} bionic-security main restricted universe multiverse" > /etc/apt/sources.list; \ "deb ${ubuntu_security} bionic-security main restricted universe multiverse" > /etc/apt/sources.list; \
rm -f /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources 2>/dev/null || true; \
apt-get update && apt-get upgrade -yy && apt-get install -yy bash locales apt-utils; \ apt-get update && apt-get upgrade -yy && apt-get install -yy bash locales apt-utils; \
update-alternatives --install /bin/sh sh /bin/bash 1; \ update-alternatives --install /bin/sh sh /bin/bash 1; \
update-alternatives --install /usr/bin/sh sh /bin/bash 1; \ update-alternatives --install /usr/bin/sh sh /bin/bash 1; \
@@ -126,7 +127,7 @@ RUN echo "Initializing packages before copying files to image"; \
if [ -f "/root/docker/setup/02-packages.sh" ];then echo "Running the packages script";/root/docker/setup/02-packages.sh||{ echo "Failed to execute /root/docker/setup/02-packages.sh" >&2 && exit 10; };echo "Done running the packages script";fi; \ if [ -f "/root/docker/setup/02-packages.sh" ];then echo "Running the packages script";/root/docker/setup/02-packages.sh||{ echo "Failed to execute /root/docker/setup/02-packages.sh" >&2 && exit 10; };echo "Done running the packages script";fi; \
echo "" echo ""
COPY ./dockerfs/. / COPY ./rootfs/. /
COPY ./Dockerfile.18.04 /root/docker/Dockerfile COPY ./Dockerfile.18.04 /root/docker/Dockerfile
RUN echo "Updating system files "; \ RUN echo "Updating system files "; \
+10 -2
View File
@@ -73,7 +73,7 @@ ENV DEBIAN_FRONTEND="${DEBIAN_FRONTEND}"
USER ${USER} USER ${USER}
WORKDIR /root WORKDIR /root
COPY ./dockerfs/usr/local/bin/. /usr/local/bin/ COPY ./rootfs/usr/local/bin/. /usr/local/bin/
RUN set -e; \ RUN set -e; \
echo "Updating the system and ensuring bash is installed"; \ echo "Updating the system and ensuring bash is installed"; \
@@ -83,6 +83,14 @@ RUN set -e; \
echo "Setting up prerequisites"; \ echo "Setting up prerequisites"; \
echo "$LANG UTF-8" >"/etc/locale.gen"; \ echo "$LANG UTF-8" >"/etc/locale.gen"; \
echo 'export DEBIAN_FRONTEND="'${DEBIAN_FRONTEND}'"' >"/etc/profile.d/apt.sh" && chmod 755 "/etc/profile.d/apt.sh"; \ echo 'export DEBIAN_FRONTEND="'${DEBIAN_FRONTEND}'"' >"/etc/profile.d/apt.sh" && chmod 755 "/etc/profile.d/apt.sh"; \
arch="$(dpkg --print-architecture)"; \
case "$arch" in amd64|i386) ubuntu_mirror="http://old-releases.ubuntu.com/ubuntu"; ubuntu_security="$ubuntu_mirror" ;; *) ubuntu_mirror="http://old-releases.ports.ubuntu.com/ubuntu-ports"; ubuntu_security="$ubuntu_mirror" ;; esac; \
printf '%s\n' \
"deb ${ubuntu_mirror} focal main restricted universe multiverse" \
"deb ${ubuntu_mirror} focal-updates main restricted universe multiverse" \
"deb ${ubuntu_mirror} focal-backports main restricted universe multiverse" \
"deb ${ubuntu_security} focal-security main restricted universe multiverse" > /etc/apt/sources.list; \
rm -f /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources 2>/dev/null || true; \
apt-get update && apt-get upgrade -yy && apt-get install -yy bash locales apt-utils; \ apt-get update && apt-get upgrade -yy && apt-get install -yy bash locales apt-utils; \
update-alternatives --install /bin/sh sh /bin/bash 1; \ update-alternatives --install /bin/sh sh /bin/bash 1; \
update-alternatives --install /usr/bin/sh sh /bin/bash 1; \ update-alternatives --install /usr/bin/sh sh /bin/bash 1; \
@@ -119,7 +127,7 @@ RUN echo "Initializing packages before copying files to image"; \
if [ -f "/root/docker/setup/02-packages.sh" ];then echo "Running the packages script";/root/docker/setup/02-packages.sh||{ echo "Failed to execute /root/docker/setup/02-packages.sh" >&2 && exit 10; };echo "Done running the packages script";fi; \ if [ -f "/root/docker/setup/02-packages.sh" ];then echo "Running the packages script";/root/docker/setup/02-packages.sh||{ echo "Failed to execute /root/docker/setup/02-packages.sh" >&2 && exit 10; };echo "Done running the packages script";fi; \
echo "" echo ""
COPY ./dockerfs/. / COPY ./rootfs/. /
COPY ./Dockerfile.20.04 /root/docker/Dockerfile COPY ./Dockerfile.20.04 /root/docker/Dockerfile
RUN echo "Updating system files "; \ RUN echo "Updating system files "; \
+10 -2
View File
@@ -73,7 +73,7 @@ ENV DEBIAN_FRONTEND="${DEBIAN_FRONTEND}"
USER ${USER} USER ${USER}
WORKDIR /root WORKDIR /root
COPY ./dockerfs/usr/local/bin/. /usr/local/bin/ COPY ./rootfs/usr/local/bin/. /usr/local/bin/
RUN set -e; \ RUN set -e; \
echo "Updating the system and ensuring bash is installed"; \ echo "Updating the system and ensuring bash is installed"; \
@@ -83,6 +83,14 @@ RUN set -e; \
echo "Setting up prerequisites"; \ echo "Setting up prerequisites"; \
echo "$LANG UTF-8" >"/etc/locale.gen"; \ echo "$LANG UTF-8" >"/etc/locale.gen"; \
echo 'export DEBIAN_FRONTEND="'${DEBIAN_FRONTEND}'"' >"/etc/profile.d/apt.sh" && chmod 755 "/etc/profile.d/apt.sh"; \ echo 'export DEBIAN_FRONTEND="'${DEBIAN_FRONTEND}'"' >"/etc/profile.d/apt.sh" && chmod 755 "/etc/profile.d/apt.sh"; \
arch="$(dpkg --print-architecture)"; \
case "$arch" in amd64|i386) ubuntu_mirror="http://archive.ubuntu.com/ubuntu"; ubuntu_security="http://security.ubuntu.com/ubuntu" ;; *) ubuntu_mirror="http://ports.ubuntu.com/ubuntu-ports"; ubuntu_security="$ubuntu_mirror" ;; esac; \
printf '%s\n' \
"deb ${ubuntu_mirror} jammy main restricted universe multiverse" \
"deb ${ubuntu_mirror} jammy-updates main restricted universe multiverse" \
"deb ${ubuntu_mirror} jammy-backports main restricted universe multiverse" \
"deb ${ubuntu_security} jammy-security main restricted universe multiverse" > /etc/apt/sources.list; \
rm -f /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources 2>/dev/null || true; \
apt-get update && apt-get upgrade -yy && apt-get install -yy bash locales apt-utils; \ apt-get update && apt-get upgrade -yy && apt-get install -yy bash locales apt-utils; \
update-alternatives --install /bin/sh sh /bin/bash 1; \ update-alternatives --install /bin/sh sh /bin/bash 1; \
update-alternatives --install /usr/bin/sh sh /bin/bash 1; \ update-alternatives --install /usr/bin/sh sh /bin/bash 1; \
@@ -119,7 +127,7 @@ RUN echo "Initializing packages before copying files to image"; \
if [ -f "/root/docker/setup/02-packages.sh" ];then echo "Running the packages script";/root/docker/setup/02-packages.sh||{ echo "Failed to execute /root/docker/setup/02-packages.sh" >&2 && exit 10; };echo "Done running the packages script";fi; \ if [ -f "/root/docker/setup/02-packages.sh" ];then echo "Running the packages script";/root/docker/setup/02-packages.sh||{ echo "Failed to execute /root/docker/setup/02-packages.sh" >&2 && exit 10; };echo "Done running the packages script";fi; \
echo "" echo ""
COPY ./dockerfs/. / COPY ./rootfs/. /
COPY ./Dockerfile.22.04 /root/docker/Dockerfile COPY ./Dockerfile.22.04 /root/docker/Dockerfile
RUN echo "Updating system files "; \ RUN echo "Updating system files "; \
+10 -2
View File
@@ -73,7 +73,7 @@ ENV DEBIAN_FRONTEND="${DEBIAN_FRONTEND}"
USER ${USER} USER ${USER}
WORKDIR /root WORKDIR /root
COPY ./dockerfs/usr/local/bin/. /usr/local/bin/ COPY ./rootfs/usr/local/bin/. /usr/local/bin/
RUN set -e; \ RUN set -e; \
echo "Updating the system and ensuring bash is installed"; \ echo "Updating the system and ensuring bash is installed"; \
@@ -83,6 +83,14 @@ RUN set -e; \
echo "Setting up prerequisites"; \ echo "Setting up prerequisites"; \
echo "$LANG UTF-8" >"/etc/locale.gen"; \ echo "$LANG UTF-8" >"/etc/locale.gen"; \
echo 'export DEBIAN_FRONTEND="'${DEBIAN_FRONTEND}'"' >"/etc/profile.d/apt.sh" && chmod 755 "/etc/profile.d/apt.sh"; \ echo 'export DEBIAN_FRONTEND="'${DEBIAN_FRONTEND}'"' >"/etc/profile.d/apt.sh" && chmod 755 "/etc/profile.d/apt.sh"; \
arch="$(dpkg --print-architecture)"; \
case "$arch" in amd64|i386) ubuntu_mirror="http://archive.ubuntu.com/ubuntu"; ubuntu_security="http://security.ubuntu.com/ubuntu" ;; *) ubuntu_mirror="http://ports.ubuntu.com/ubuntu-ports"; ubuntu_security="$ubuntu_mirror" ;; esac; \
printf '%s\n' \
"deb ${ubuntu_mirror} noble main restricted universe multiverse" \
"deb ${ubuntu_mirror} noble-updates main restricted universe multiverse" \
"deb ${ubuntu_mirror} noble-backports main restricted universe multiverse" \
"deb ${ubuntu_security} noble-security main restricted universe multiverse" > /etc/apt/sources.list; \
rm -f /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources 2>/dev/null || true; \
apt-get update && apt-get upgrade -yy && apt-get install -yy bash locales apt-utils; \ apt-get update && apt-get upgrade -yy && apt-get install -yy bash locales apt-utils; \
update-alternatives --install /bin/sh sh /bin/bash 1; \ update-alternatives --install /bin/sh sh /bin/bash 1; \
update-alternatives --install /usr/bin/sh sh /bin/bash 1; \ update-alternatives --install /usr/bin/sh sh /bin/bash 1; \
@@ -119,7 +127,7 @@ RUN echo "Initializing packages before copying files to image"; \
if [ -f "/root/docker/setup/02-packages.sh" ];then echo "Running the packages script";/root/docker/setup/02-packages.sh||{ echo "Failed to execute /root/docker/setup/02-packages.sh" >&2 && exit 10; };echo "Done running the packages script";fi; \ if [ -f "/root/docker/setup/02-packages.sh" ];then echo "Running the packages script";/root/docker/setup/02-packages.sh||{ echo "Failed to execute /root/docker/setup/02-packages.sh" >&2 && exit 10; };echo "Done running the packages script";fi; \
echo "" echo ""
COPY ./dockerfs/. / COPY ./rootfs/. /
COPY ./Dockerfile.24.04 /root/docker/Dockerfile COPY ./Dockerfile.24.04 /root/docker/Dockerfile
RUN echo "Updating system files "; \ RUN echo "Updating system files "; \
+10 -9
View File
@@ -73,19 +73,20 @@ ENV DEBIAN_FRONTEND="${DEBIAN_FRONTEND}"
USER ${USER} USER ${USER}
WORKDIR /root WORKDIR /root
COPY ./dockerfs/usr/local/bin/. /usr/local/bin/ COPY ./rootfs/usr/local/bin/. /usr/local/bin/
RUN set -e; \ RUN set -e; \
echo "Setting up prerequisites"; \ echo "Setting up prerequisites"; \
echo "$LANG UTF-8" >"/etc/locale.gen"; \ echo "$LANG UTF-8" >"/etc/locale.gen"; \
echo 'export DEBIAN_FRONTEND="'${DEBIAN_FRONTEND}'"' >"/etc/profile.d/apt.sh" && chmod 755 "/etc/profile.d/apt.sh"; \ echo 'export DEBIAN_FRONTEND="'${DEBIAN_FRONTEND}'"' >"/etc/profile.d/apt.sh" && chmod 755 "/etc/profile.d/apt.sh"; \
sed -i 's|http://archive.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g' /etc/apt/sources.list || true; \ arch="$(dpkg --print-architecture)"; \
sed -i 's|http://security.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g' /etc/apt/sources.list || true; \ case "$arch" in amd64|i386) ubuntu_mirror="http://old-releases.ubuntu.com/ubuntu"; ubuntu_security="$ubuntu_mirror" ;; *) ubuntu_mirror="http://old-releases.ports.ubuntu.com/ubuntu-ports"; ubuntu_security="$ubuntu_mirror" ;; esac; \
sed -i 's|http://ports.ubuntu.com/ubuntu-ports|http://old-releases.ubuntu.com/ubuntu|g' /etc/apt/sources.list || true; \ printf '%s\n' \
sed -i 's|http://archive.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g' /etc/apt/sources.list.d/*.sources 2>/dev/null || true; \ "deb ${ubuntu_mirror} oracular main restricted universe multiverse" \
sed -i 's|http://security.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g' /etc/apt/sources.list.d/*.sources 2>/dev/null || true; \ "deb ${ubuntu_mirror} oracular-updates main restricted universe multiverse" \
sed -i 's|http://ports.ubuntu.com/ubuntu-ports|http://old-releases.ubuntu.com/ubuntu|g' /etc/apt/sources.list.d/*.sources 2>/dev/null || true; \ "deb ${ubuntu_mirror} oracular-backports main restricted universe multiverse" \
pkmgr update && pkmgr install bash; \ "deb ${ubuntu_security} oracular-security main restricted universe multiverse" > /etc/apt/sources.list; \
rm -f /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources 2>/dev/null || true; \
apt-get update && apt-get upgrade -yy && apt-get install -yy bash locales apt-utils; \ apt-get update && apt-get upgrade -yy && apt-get install -yy bash locales apt-utils; \
update-alternatives --install /bin/sh sh /bin/bash 1; \ update-alternatives --install /bin/sh sh /bin/bash 1; \
update-alternatives --install /usr/bin/sh sh /bin/bash 1; \ update-alternatives --install /usr/bin/sh sh /bin/bash 1; \
@@ -122,7 +123,7 @@ RUN echo "Initializing packages before copying files to image"; \
if [ -f "/root/docker/setup/02-packages.sh" ];then echo "Running the packages script";/root/docker/setup/02-packages.sh||{ echo "Failed to execute /root/docker/setup/02-packages.sh" >&2 && exit 10; };echo "Done running the packages script";fi; \ if [ -f "/root/docker/setup/02-packages.sh" ];then echo "Running the packages script";/root/docker/setup/02-packages.sh||{ echo "Failed to execute /root/docker/setup/02-packages.sh" >&2 && exit 10; };echo "Done running the packages script";fi; \
echo "" echo ""
COPY ./dockerfs/. / COPY ./rootfs/. /
COPY ./Dockerfile.24.10 /root/docker/Dockerfile COPY ./Dockerfile.24.10 /root/docker/Dockerfile
RUN echo "Updating system files "; \ RUN echo "Updating system files "; \
+277
View File
@@ -0,0 +1,277 @@
# Docker image for ubuntu using the ubuntu template
ARG IMAGE_NAME="ubuntu"
ARG PHP_SERVER="ubuntu"
ARG BUILD_DATE="202509161230"
ARG LANGUAGE="en_US.UTF-8"
ARG TIMEZONE="America/New_York"
ARG WWW_ROOT_DIR="/usr/local/share/httpd/default"
ARG DEFAULT_FILE_DIR="/usr/local/share/template-files"
ARG DEFAULT_DATA_DIR="/usr/local/share/template-files/data"
ARG DEFAULT_CONF_DIR="/usr/local/share/template-files/config"
ARG DEFAULT_TEMPLATE_DIR="/usr/local/share/template-files/defaults"
ARG PATH="/usr/local/etc/docker/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
ARG USER="root"
ARG SHELL_OPTS="set -e -o pipefail"
ARG DEBIAN_FRONTEND=noninteractive
ARG SERVICE_PORT=""
ARG EXPOSE_PORTS=""
ARG PHP_VERSION="system"
ARG NODE_VERSION="system"
ARG NODE_MANAGER="system"
ARG IMAGE_REPO="casjaysdev/ubuntu"
ARG IMAGE_VERSION="26.04"
ARG CONTAINER_VERSION="resolute"
ARG PULL_URL="ubuntu"
ARG DISTRO_VERSION="${IMAGE_VERSION}"
ARG BUILD_VERSION="${BUILD_DATE}"
FROM tianon/gosu:latest AS gosu
FROM ${PULL_URL}:${DISTRO_VERSION} AS build
ARG TZ
ARG PATH
ARG USER
ARG LICENSE
ARG TIMEZONE
ARG LANGUAGE
ARG IMAGE_NAME
ARG BUILD_DATE
ARG SERVICE_PORT
ARG EXPOSE_PORTS
ARG BUILD_VERSION
ARG IMAGE_VERSION
ARG WWW_ROOT_DIR
ARG DEFAULT_FILE_DIR
ARG DEFAULT_DATA_DIR
ARG DEFAULT_CONF_DIR
ARG DEFAULT_TEMPLATE_DIR
ARG DISTRO_VERSION
ARG NODE_VERSION
ARG NODE_MANAGER
ARG PHP_VERSION
ARG PHP_SERVER
ARG SHELL_OPTS
ARG DEBIAN_FRONTEND
ARG PACK_LIST="bash-completion git curl wget sudo unzip tini xz-utils iproute2 pinentry-curses bsd-mailx procps net-tools bsd-mailx postfix python3-pip certbot ca-certificates jq "
ENV ENV=~/.profile
ENV SHELL="/bin/sh"
ENV PATH="${PATH}"
ENV TZ="${TIMEZONE}"
ENV TIMEZONE="${TZ}"
ENV LANG="${LANGUAGE}"
ENV LC_ALL="${LANGUAGE}"
ENV TERM="xterm-256color"
ENV HOSTNAME="casjaysdevdocker-ubuntu"
ENV DEBIAN_FRONTEND="${DEBIAN_FRONTEND}"
USER ${USER}
WORKDIR /root
COPY ./rootfs/usr/local/bin/. /usr/local/bin/
RUN set -e; \
echo "Updating the system and ensuring bash is installed"; \
pkmgr update;pkmgr install bash
RUN set -e; \
echo "Setting up prerequisites"; \
echo "$LANG UTF-8" >"/etc/locale.gen"; \
echo 'export DEBIAN_FRONTEND="'${DEBIAN_FRONTEND}'"' >"/etc/profile.d/apt.sh" && chmod 755 "/etc/profile.d/apt.sh"; \
arch="$(dpkg --print-architecture)"; \
case "$arch" in amd64|i386) ubuntu_mirror="http://archive.ubuntu.com/ubuntu"; ubuntu_security="http://security.ubuntu.com/ubuntu" ;; *) ubuntu_mirror="http://ports.ubuntu.com/ubuntu-ports"; ubuntu_security="$ubuntu_mirror" ;; esac; \
printf '%s\n' \
"deb ${ubuntu_mirror} resolute main restricted universe multiverse" \
"deb ${ubuntu_mirror} resolute-updates main restricted universe multiverse" \
"deb ${ubuntu_mirror} resolute-backports main restricted universe multiverse" \
"deb ${ubuntu_security} resolute-security main restricted universe multiverse" > /etc/apt/sources.list; \
rm -f /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources 2>/dev/null || true; \
apt-get update && apt-get upgrade -yy && apt-get install -yy bash locales apt-utils; \
update-alternatives --install /bin/sh sh /bin/bash 1; \
update-alternatives --install /usr/bin/sh sh /bin/bash 1; \
locale-gen $LANG && update-locale LANG=$LANG
ENV SHELL="/bin/bash"
SHELL [ "/bin/bash", "-c" ]
COPY --from=gosu /usr/local/bin/gosu /usr/local/bin/gosu
RUN echo "Initializing the system"; \
$SHELL_OPTS; \
mkdir -p "${DEFAULT_DATA_DIR}" "${DEFAULT_CONF_DIR}" "${DEFAULT_TEMPLATE_DIR}" "/root/docker/setup" "/etc/profile.d"; \
if [ -f "/root/docker/setup/00-init.sh" ];then echo "Running the init script";/root/docker/setup/00-init.sh||{ echo "Failed to execute /root/docker/setup/00-init.sh" >&2 && exit 10; };echo "Done running the init script";fi; \
echo ""
RUN echo "Creating and editing system files "; \
$SHELL_OPTS; \
[ -f "/root/.profile" ] || touch "/root/.profile"; \
if [ -f "/root/docker/setup/01-system.sh" ];then echo "Running the system script";/root/docker/setup/01-system.sh||{ echo "Failed to execute /root/docker/setup/01-system.sh" >&2 && exit 10; };echo "Done running the system script";fi; \
echo ""
RUN echo "Running pre-package commands"; \
$SHELL_OPTS; \
echo ""
RUN echo "Setting up and installing packages"; \
$SHELL_OPTS; \
if [ -n "${PACK_LIST}" ];then echo "Installing packages: $PACK_LIST";echo "${PACK_LIST}" >/root/docker/setup/packages.txt;pkmgr install ${PACK_LIST};fi; \
echo ""
RUN echo "Initializing packages before copying files to image"; \
$SHELL_OPTS; \
if [ -f "/root/docker/setup/02-packages.sh" ];then echo "Running the packages script";/root/docker/setup/02-packages.sh||{ echo "Failed to execute /root/docker/setup/02-packages.sh" >&2 && exit 10; };echo "Done running the packages script";fi; \
echo ""
COPY ./rootfs/. /
COPY ./Dockerfile.26.04 /root/docker/Dockerfile
RUN echo "Updating system files "; \
$SHELL_OPTS; \
echo "$TIMEZONE" >"/etc/timezone"; \
touch "/etc/profile" "/root/.profile"; \
echo 'hosts: files dns' >"/etc/nsswitch.conf"; \
[ "$PHP_VERSION" = "system" ] && PHP_VERSION="php" || true; \
PHP_BIN="$(command -v ${PHP_VERSION} 2>/dev/null || true)"; \
PHP_FPM="$(ls /usr/*bin/php*fpm* 2>/dev/null || true)"; \
pip_bin="$(command -v python3 2>/dev/null || command -v python2 2>/dev/null || command -v python 2>/dev/null || true)"; \
py_version="$(command $pip_bin --version | sed 's|[pP]ython ||g' | awk -F '.' '{print $1$2}' | grep '[0-9]' || true)"; \
[ "$py_version" -gt "310" ] && pip_opts="--break-system-packages " || pip_opts=""; \
[ -f "/usr/share/zoneinfo/${TZ}" ] && ln -sf "/usr/share/zoneinfo/${TZ}" "/etc/localtime" || true; \
[ -n "$PHP_BIN" ] && [ -z "$(command -v php 2>/dev/null)" ] && ln -sf "$PHP_BIN" "/usr/bin/php" 2>/dev/null || true; \
[ -n "$PHP_FPM" ] && [ -z "$(command -v php-fpm 2>/dev/null)" ] && ln -sf "$PHP_FPM" "/usr/bin/php-fpm" 2>/dev/null || true; \
if [ -f "/etc/profile.d/color_prompt.sh.disabled" ]; then mv -f "/etc/profile.d/color_prompt.sh.disabled" "/etc/profile.d/color_prompt.sh";fi ; \
{ [ -f "/etc/bash/bashrc" ] && cp -Rf "/etc/bash/bashrc" "/root/.bashrc"; } || { [ -f "/etc/bashrc" ] && cp -Rf "/etc/bashrc" "/root/.bashrc"; } || { [ -f "/etc/bash.bashrc" ] && cp -Rf "/etc/bash.bashrc" "/root/.bashrc"; } || true; \
if [ -z "$(command -v "apt-get" 2>/dev/null)" ];then grep -sh -q 'alias quit' "/root/.bashrc" || printf '# Profile\n\n%s\n%s\n%s\n' '. /etc/profile' '. /root/.profile' "alias quit='exit 0 2>/dev/null'" >>"/root/.bashrc"; fi; \
if [ "$PHP_VERSION" != "system" ] && [ -e "/etc/php" ] && [ -d "/etc/${PHP_VERSION}" ];then rm -Rf "/etc/php";fi; \
if [ "$PHP_VERSION" != "system" ] && [ -n "${PHP_VERSION}" ] && [ -d "/etc/${PHP_VERSION}" ];then ln -sf "/etc/${PHP_VERSION}" "/etc/php";fi; \
if [ -f "/root/docker/setup/03-files.sh" ];then echo "Running the files script";/root/docker/setup/03-files.sh||{ echo "Failed to execute /root/docker/setup/03-files.sh" >&2 && exit 10; };echo "Done running the files script";fi; \
echo ""
RUN echo "Custom Settings"; \
$SHELL_OPTS; \
echo ""
RUN echo "Setting up users and scripts "; \
$SHELL_OPTS; \
if [ -f "/root/docker/setup/04-users.sh" ];then echo "Running the users script";/root/docker/setup/04-users.sh||{ echo "Failed to execute /root/docker/setup/04-users.sh" >&2 && exit 10; };echo "Done running the users script";fi; \
echo ""
RUN echo "Running the user init commands"; \
$SHELL_OPTS; \
echo ""
RUN echo "Setting OS Settings "; \
$SHELL_OPTS; \
echo ""
RUN echo "Custom Applications"; \
$SHELL_OPTS; \
echo ""
RUN echo "Running custom commands"; \
if [ -f "/root/docker/setup/05-custom.sh" ];then echo "Running the custom script";/root/docker/setup/05-custom.sh||{ echo "Failed to execute /root/docker/setup/05-custom.sh" && exit 10; };echo "Done running the custom script";fi; \
echo ""
RUN echo "Running final commands before cleanup"; \
$SHELL_OPTS; \
if [ -f "/root/docker/setup/06-post.sh" ];then echo "Running the post script";/root/docker/setup/06-post.sh||{ echo "Failed to execute /root/docker/setup/06-post.sh" >&2 && exit 10; };echo "Done running the post script";fi; \
echo ""
RUN echo "Deleting unneeded files"; \
$SHELL_OPTS; \
pkmgr clean; \
rm -Rf "/config" "/data" || true; \
rm -rf /etc/systemd/system/*.wants/* || true; \
rm -rf /lib/systemd/system/systemd-update-utmp* || true; \
rm -rf /lib/systemd/system/anaconda.target.wants/* || true; \
rm -rf /lib/systemd/system/local-fs.target.wants/* || true; \
rm -rf /lib/systemd/system/multi-user.target.wants/* || true; \
rm -rf /lib/systemd/system/sockets.target.wants/*udev* || true; \
rm -rf /lib/systemd/system/sockets.target.wants/*initctl* || true; \
rm -Rf /usr/share/doc/* /var/tmp/* /var/cache/*/* /root/.cache/* /usr/share/info/* /tmp/* || true; \
if [ -d "/lib/systemd/system/sysinit.target.wants" ];then cd "/lib/systemd/system/sysinit.target.wants" && rm -f $(ls | grep -v systemd-tmpfiles-setup);fi; \
if [ -f "/root/docker/setup/07-cleanup.sh" ];then echo "Running the cleanup script";/root/docker/setup/07-cleanup.sh||{ echo "Failed to execute /root/docker/setup/07-cleanup.sh" >&2 && exit 10; };echo "Done running the cleanup script";fi; \
echo ""
RUN echo "Init done"
FROM scratch
ARG TZ
ARG PATH
ARG USER
ARG TIMEZONE
ARG LANGUAGE
ARG IMAGE_NAME
ARG BUILD_DATE
ARG SERVICE_PORT
ARG EXPOSE_PORTS
ARG BUILD_VERSION
ARG IMAGE_VERSION
ARG WWW_ROOT_DIR
ARG DEFAULT_FILE_DIR
ARG DEFAULT_DATA_DIR
ARG DEFAULT_CONF_DIR
ARG DEFAULT_TEMPLATE_DIR
ARG DISTRO_VERSION
ARG NODE_VERSION
ARG NODE_MANAGER
ARG PHP_VERSION
ARG PHP_SERVER
ARG LICENSE="WTFPL"
ARG ENV_PORTS="${EXPOSE_PORTS}"
USER ${USER}
WORKDIR /root
LABEL maintainer="CasjaysDev <docker-admin@casjaysdev.pro>"
LABEL org.opencontainers.image.vendor="CasjaysDev"
LABEL org.opencontainers.image.authors="CasjaysDev"
LABEL org.opencontainers.image.description="Containerized version of ${IMAGE_NAME}"
LABEL org.opencontainers.image.title="${IMAGE_NAME}"
LABEL org.opencontainers.image.base.name="${IMAGE_NAME}"
LABEL org.opencontainers.image.authors="${LICENSE}"
LABEL org.opencontainers.image.created="${BUILD_DATE}"
LABEL org.opencontainers.image.version="${BUILD_VERSION}"
LABEL org.opencontainers.image.schema-version="${BUILD_VERSION}"
LABEL org.opencontainers.image.url="docker.io"
LABEL org.opencontainers.image.source="docker.io"
LABEL org.opencontainers.image.vcs-type="Git"
LABEL org.opencontainers.image.revision="${BUILD_VERSION}"
LABEL org.opencontainers.image.source="https://github.com/dockersrc/ubuntu"
LABEL org.opencontainers.image.documentation="https://github.com/dockersrc/ubuntu"
LABEL com.github.containers.toolbox="false"
ENV ENV=~/.bashrc
ENV USER="${USER}"
ENV PATH="${PATH}"
ENV TZ="${TIMEZONE}"
ENV SHELL="/bin/bash"
ENV TIMEZONE="${TZ}"
ENV LANG="${LANGUAGE}"
ENV TERM="xterm-256color"
ENV PORT="${SERVICE_PORT}"
ENV ENV_PORTS="${ENV_PORTS}"
ENV CONTAINER_NAME="${IMAGE_NAME}"
ENV HOSTNAME="casjaysdev-${IMAGE_NAME}"
ENV PHP_SERVER="${PHP_SERVER}"
ENV NODE_VERSION="${NODE_VERSION}"
ENV NODE_MANAGER="${NODE_MANAGER}"
ENV PHP_VERSION="${PHP_VERSION}"
ENV DISTRO_VERSION="${IMAGE_VERSION}"
ENV WWW_ROOT_DIR="${WWW_ROOT_DIR}"
COPY --from=build /. /
VOLUME [ "/config","/data" ]
EXPOSE ${SERVICE_PORT} ${ENV_PORTS}
STOPSIGNAL SIGRTMIN+3
CMD [ "tail", "-f", "/dev/null" ]
ENTRYPOINT [ "tini", "-p", "SIGTERM","--", "/usr/local/bin/entrypoint.sh" ]
HEALTHCHECK --start-period=10m --interval=5m --timeout=15s CMD [ "/usr/local/bin/entrypoint.sh", "healthcheck" ]
+1 -1
View File
@@ -21,7 +21,7 @@ dockermgr update os ubuntu
```shell ```shell
mkdir -p "/var/lib/srv/root/docker/casjaysdev/ubuntu/latest" mkdir -p "/var/lib/srv/root/docker/casjaysdev/ubuntu/latest"
git clone "https://github.com/dockermgr/ubuntu" "$HOME/.local/share/CasjaysDev/dockermgr/ubuntu" git clone "https://github.com/dockermgr/ubuntu" "$HOME/.local/share/CasjaysDev/dockermgr/ubuntu"
cp -Rfva "$HOME/.local/share/CasjaysDev/dockermgr/ubuntu/dockerfs/." "/var/lib/srv/root/docker/casjaysdev/ubuntu/latest/" cp -Rfva "$HOME/.local/share/CasjaysDev/dockermgr/ubuntu/rootfs/." "/var/lib/srv/root/docker/casjaysdev/ubuntu/latest/"
docker run -d \ docker run -d \
--restart always \ --restart always \
--privileged \ --privileged \
+75
View File
@@ -0,0 +1,75 @@
#!/usr/bin/env sh
# shellcheck shell=sh
# - - - - - - - - - - - - - - - - - - - - - - - - -
##@Version : 202605051306-git
# @@Author : Jason Hempstead
# @@Contact : jason@casjaysdev.pro
# @@License : WTFPL
# @@ReadME : copy --help
# @@Copyright : Copyright: (c) 2026 Jason Hempstead, Casjays Developments
# @@Created : Tuesday, May 05, 2026 13:06 EDT
# @@File : copy
# @@Description : copies a file and shows progress
# @@Changelog : Refactored for self-contained operation
# @@TODO : Better documentation
# @@Other :
# @@Resource :
# @@Terminal App : no
# @@sudo/root : no
# @@Template : shell/sh
# - - - - - - - - - - - - - - - - - - - - - - - - -
# shellcheck disable=SC1001,SC1003,SC2001,SC2003,SC2016,SC2031,SC2090,SC2115,SC2120,SC2155,SC2199,SC2229,SC2317,SC2329
# - - - - - - - - - - - - - - - - - - - - - - - - -
APPNAME="$(basename -- "$0" 2>/dev/null)"
# - - - - - - - - - - - - - - - - - - - - - - - - -
# colorization
if [ -n "$NO_COLOR" ]; then
__printf_color() { printf '%b' "$1\n" | tr -d '\t' | sed '/^%b$/d;s,\x1B\[ 0-9;]*[a-zA-Z],,g'; }
else
__printf_color() { { [ -z "$2" ] || DEFAULT_COLOR=$2; } && printf "%b" "$(tput setaf "$DEFAULT_COLOR" 2>/dev/null)" "$1\n" "$(tput sgr0 2>/dev/null)"; }
fi
# - - - - - - - - - - - - - - - - - - - - - - - - -
__unlink() { [ -L "$1" ] && rm -f -- "$1" >/dev/null; }
# - - - - - - - - - - - - - - - - - - - - - - - - -
# custom functions
__copy() {
exitCode=0
if [ -d "$1" ]; then
__printf_color "Copying $1/* to $2/"
__unlink "$2"
mkdir -p "$2"
cp -Rf "$1"/. "$2"/
exitCode=$?
elif [ -f "$1" ]; then
__printf_color "Copying $1 to $2"
__unlink "$2"
cp -Rf "$1" "$2"
exitCode=$?
fi
return $exitCode
}
# - - - - - - - - - - - - - - - - - - - - - - - - -
# Define variables
DEFAULT_COLOR="254"
COPY_EXIT_STATUS=0
# - - - - - - - - - - - - - - - - - - - - - - - - -
# Main application
if [ $# -ne 2 ]; then
__printf_color "USAGE: $APPNAME to from" "1" >&2
COPY_EXIT_STATUS=1
elif [ ! -e "$1" ]; then
__printf_color "$1 does not exist" >&2
COPY_EXIT_STATUS=2
else
__printf_color "Copying $1 to $2" "4"
__copy "$1" "$2" >/dev/null
COPY_EXIT_STATUS=$?
fi
# - - - - - - - - - - - - - - - - - - - - - - - - -
# End application
# - - - - - - - - - - - - - - - - - - - - - - - - -
# lets exit with code
# - - - - - - - - - - - - - - - - - - - - - - - - -
exit $COPY_EXIT_STATUS
# - - - - - - - - - - - - - - - - - - - - - - - - -
# ex: ts=2 sw=2 et filetype=sh
+64
View File
@@ -0,0 +1,64 @@
#!/usr/bin/env sh
# shellcheck shell=sh
# - - - - - - - - - - - - - - - - - - - - - - - - -
##@Version : 202605051306-git
# @@Author : Jason Hempstead
# @@Contact : jason@casjaysdev.pro
# @@License : WTFPL
# @@ReadME : symlink --help
# @@Copyright : Copyright: (c) 2026 Jason Hempstead, Casjays Developments
# @@Created : Tuesday, May 05, 2026 13:06 EDT
# @@File : symlink
# @@Description :
# @@Changelog : New script
# @@TODO : Better documentation
# @@Other :
# @@Resource :
# @@Terminal App : no
# @@sudo/root : no
# @@Template : shell/sh
# - - - - - - - - - - - - - - - - - - - - - - - - -
# shellcheck disable=SC1001,SC1003,SC2001,SC2003,SC2016,SC2031,SC2090,SC2115,SC2120,SC2155,SC2199,SC2229,SC2317,SC2329
# - - - - - - - - - - - - - - - - - - - - - - - - -
APPNAME="$(basename -- "$0" 2>/dev/null)"
# - - - - - - - - - - - - - - - - - - - - - - - - -
# colorization
if [ -n "$NO_COLOR" ]; then
__printf_color() { printf '%b' "$1\n" | tr -d '\t' | sed '/^%b$/d;s,\x1B\[ 0-9;]*[a-zA-Z],,g'; }
else
__printf_color() { { [ -z "$2" ] || DEFAULT_COLOR=$2; } && printf "%b" "$(tput setaf "$DEFAULT_COLOR" 2>/dev/null)" "$1\n" "$(tput sgr0 2>/dev/null)"; }
fi
# - - - - - - - - - - - - - - - - - - - - - - - - -
__unlink() { [ -L "$1" ] && rm -f -- "$1" >/dev/null; }
# - - - - - - - - - - - - - - - - - - - - - - - - -
# custom functions
__ln_sf() {
__printf_color "symlinking $2 to $1" "4"
__unlink "$2"
ln -sf "$1" "$2"
return $?
}
# - - - - - - - - - - - - - - - - - - - - - - - - -
# Define variables
DEFAULT_COLOR="254"
SYMLINK_EXIT_STATUS=0
# - - - - - - - - - - - - - - - - - - - - - - - - -
# Main application
if [ $# -ne 2 ]; then
__printf_color "USAGE: $APPNAME from to" "2" >&2
SYMLINK_EXIT_STATUS=1
elif [ ! -e "$1" ]; then
__printf_color "$1 does not exist" >&2
SYMLINK_EXIT_STATUS=2
else
__ln_sf "$1" "$2" >/dev/null
SYMLINK_EXIT_STATUS=$?
fi
# - - - - - - - - - - - - - - - - - - - - - - - - -
# End application
# - - - - - - - - - - - - - - - - - - - - - - - - -
# lets exit with code
# - - - - - - - - - - - - - - - - - - - - - - - - -
exit $SYMLINK_EXIT_STATUS
# - - - - - - - - - - - - - - - - - - - - - - - - -
# ex: ts=2 sw=2 et filetype=sh