This commit is contained in:
Richard Sperry 2025-04-17 12:49:42 -07:00
parent 29a56f36d8
commit 7cb8d61844
5 changed files with 90 additions and 50 deletions

View file

@ -97,6 +97,21 @@ setup_code_workspace() {
bashio::log.warning "CODE_SERVER_VSCODE_TASKS does not exist. Creating..."
cp "$DEFAULT_FILES_PATH/vscode/tasks.json" "$CODE_SERVER_VSCODE_TASKS"
fi
# custom tasks paths file
CUSTOM_BASH_SCRIPTS_PATH_SYMLINK="$CUSTOM_BASH_SCRIPTS_PATH/PATHS.sh"
if [ ! -e "$CUSTOM_BASH_SCRIPTS_PATH_SYMLINK" ]; then
bashio::log.warning "CUSTOM_BASH_SCRIPTS_PATH_ does not exist. Creating..."
ln -sn "/etc/s6-overlay/s6-rc.d/paths.sh" "$CUSTOM_BASH_SCRIPTS_PATH_SYMLINK" ||
bashio::log.warning "Failed linking PATHS.sh"
elif [ ! -L "$CUSTOM_BASH_SCRIPTS_PATH_SYMLINK" ]; then
bashio::log.warning "Failed path.sh link: Removing and recreating..."
rm -f"$CUSTOM_BASH_SCRIPTS_PATH_SYMLINK"
ln -sn "/etc/s6-overlay/s6-rc.d/paths.sh" "$CUSTOM_BASH_SCRIPTS_PATH_SYMLINK" ||
bashio::log.warning "Failed linking PATHS.sh"
else
bashio::log.info "Custom scripts symlink has a good link..."
fi
}
setup_config_path() {
@ -201,7 +216,6 @@ setup_user_settings() {
if ! bashio::fs.file_exists "$user_path"/workspaces.json; then
cp "$DEFAULT_FILES_PATH/vscode/workspaces.json" "$user_path/workspaces.json"
fi
}
run

View file

@ -5,9 +5,9 @@
# Sets up code-server.
# ==============================================================================
bashio::log.info "Initalizing code-server configs"
pathsfile="/etc/s6-overlay/s6-rc.d/paths.sh"
# shellcheck source=../paths.sh
source "/etc/s6-overlay/s6-rc.d/paths.sh"
source "${pathsfile}"
# List of previous config hashes, to allow upgrade "default" configs.
@ -29,7 +29,8 @@ run() {
fi
if [ "$(ls -A "$CUSTOM_BASH_SCRIPTS_PATH")" ]; then
for script in "${CUSTOM_BASH_SCRIPTS_PATH}"/*.sh; do
for script in "${CUSTOM_BASH_SCRIPTS_PATH}"/*.sh/!"$pathsfile"; do
echo "Running custom script: $script"
chmod +x "$script"
"$script"

View file

@ -9,59 +9,77 @@ readonly SSH_USER_PATH=/data/.ssh
readonly ZSH_HISTORY_FILE=/root/.zsh_history
readonly ZSH_HISTORY_PERSISTANT_FILE=/data/.zsh_history
# Store SSH settings in add-on data folder
if ! bashio::fs.directory_exists "${SSH_USER_PATH}"; then
mkdir -p "${SSH_USER_PATH}" ||
bashio::exit.nok 'Failed to create a persistent .ssh folder'
run() {
setup_ssh
setup_zsh
setup_git
setup_config_packages
exec_config_cmds
}
chmod 700 "${SSH_USER_PATH}" ||
bashio::exit.nok \
'Failed setting permissions on persistent .ssh folder'
fi
ln -sn "${SSH_USER_PATH}" ~/.ssh || bashio::log.warning "Failed linking .ssh"
setup_ssh() {
# Store SSH settings in add-on data folder
if ! bashio::fs.directory_exists "${SSH_USER_PATH}"; then
mkdir -p "${SSH_USER_PATH}" ||
bashio::exit.nok 'Failed to create a persistent .ssh folder'
# Sets up ZSH shell
touch "${ZSH_HISTORY_PERSISTANT_FILE}" ||
bashio::exit.nok 'Failed creating a persistent ZSH history file'
chmod 700 "${SSH_USER_PATH}" ||
bashio::exit.nok \
'Failed setting permissions on persistent .ssh folder'
fi
ln -sn "${SSH_USER_PATH}" ~/.ssh || bashio::log.warning "Failed linking .ssh"
}
chmod 600 "$ZSH_HISTORY_PERSISTANT_FILE" ||
bashio::exit.nok \
'Failed setting the correct permissions to the ZSH history file'
setup_zsh() {
# Sets up ZSH shell
touch "${ZSH_HISTORY_PERSISTANT_FILE}" ||
bashio::exit.nok 'Failed creating a persistent ZSH history file'
ln -s -f "$ZSH_HISTORY_PERSISTANT_FILE" "$ZSH_HISTORY_FILE" ||
bashio::exit.nok 'Failed linking the persistant ZSH history file'
chmod 600 "$ZSH_HISTORY_PERSISTANT_FILE" ||
bashio::exit.nok 'Failed setting the correct permissions to the ZSH history file'
# Store user GIT settings in add-on data folder
if ! bashio::fs.directory_exists "${GIT_USER_PATH}"; then
mkdir -p "${GIT_USER_PATH}" ||
bashio::exit.nok 'Failed to create a persistent git folder'
ln -s -f "$ZSH_HISTORY_PERSISTANT_FILE" "$ZSH_HISTORY_FILE" ||
bashio::exit.nok 'Failed linking the persistant ZSH history file'
}
chmod 700 "${GIT_USER_PATH}" ||
bashio::exit.nok \
'Failed setting permissions on persistent git folder'
fi
setup_git() {
# Store user GIT settings in add-on data folder
if ! bashio::fs.directory_exists "${GIT_USER_PATH}"; then
mkdir -p "${GIT_USER_PATH}" ||
bashio::exit.nok 'Failed to create a persistent git folder'
if ! bashio::fs.file_exists "${GIT_USER_PATH}/.gitconfig"; then
touch "${GIT_USER_PATH}/.gitconfig" ||
bashio::exit.nok 'Failed to create .gitconfig'
fi
ln -s "${GIT_USER_PATH}/.gitconfig" ~/.gitconfig || bashio::log.warning "Failed linking .gitconfig"
chmod 700 "${GIT_USER_PATH}" ||
bashio::exit.nok 'Failed setting permissions on persistent git folder'
fi
# Install user configured/requested packages
if bashio::config.has_value 'packages'; then
apt update ||
bashio::exit.nok 'Failed updating Ubuntu packages repository indexes'
if ! bashio::fs.file_exists "${GIT_USER_PATH}/.gitconfig"; then
touch "${GIT_USER_PATH}/.gitconfig" ||
bashio::exit.nok 'Failed to create .gitconfig'
fi
ln -s "${GIT_USER_PATH}/.gitconfig" ~/.gitconfig || bashio::log.warning "Failed linking .gitconfig"
}
for package in $(bashio::config 'packages'); do
apt-get install -y "$package" ||
bashio::exit.nok "Failed installing package ${package}"
done
fi
setup_config_packages() {
# Install user configured/requested packages
if bashio::config.has_value 'packages'; then
apt update ||
bashio::exit.nok 'Failed updating Ubuntu packages repository indexes'
# Executes user configured/requested commands on startup
if bashio::config.has_value 'init_commands'; then
while read -r cmd; do
eval "${cmd}" ||
bashio::exit.nok "Failed executing init command: ${cmd}"
done <<<"$(bashio::config 'init_commands')"
fi
for package in $(bashio::config 'packages'); do
apt-get install -y "$package" ||
bashio::exit.nok "Failed installing package ${package}"
done
fi
}
exec_config_cmds() {
# Executes user configured/requested commands on startup
if bashio::config.has_value 'init_commands'; then
while read -r cmd; do
eval "${cmd}" ||
bashio::exit.nok "Failed executing init command: ${cmd}"
done <<<"$(bashio::config 'init_commands')"
fi
}
run

View file

@ -14,3 +14,8 @@ readonly CODE_SERVER_VSCODE_TASKS="$CODE_SERVER_VSCODE_DIR/tasks.json"
readonly CUSTOM_BASH_SCRIPTS_PATH="/data/vscode/custom_boot_scripts"
readonly -a DIRECTORIES=(backup config media share ssl)
readonly GIT_USER_PATH=/data/git
readonly SSH_USER_PATH=/data/.ssh
readonly ZSH_HISTORY_FILE=/root/.zsh_history
readonly ZSH_HISTORY_PERSISTANT_FILE=/data/.zsh_history

View file

@ -1,5 +1,7 @@
#!/usr/bin/env bash
ENABLE=false
# shellcheck source=../paths.sh
source "/etc/s6-overlay/s6-rc.d/paths.sh"
if [ "$ENABLE" = true ]; then
echo "Custom Script"