diff --git a/todo.txt b/todo.txt index 6764197..e0bb8ee 100644 --- a/todo.txt +++ b/todo.txt @@ -1,3 +1,8 @@ +persist SERVER +add workspace persistant file +? add new custom service to run linking, store in data + + cli https://github.com/coder/code-server/blob/e3c09efcbcdfd632cbeac6044692d7ea9f493386/src/node/cli.ts#L35 diff --git a/vscode/rootfs/etc/s6-overlay/s6-rc.d/code-server/run b/vscode/rootfs/etc/s6-overlay/s6-rc.d/code-server/run index 47f4d0b..dfe5fa1 100644 --- a/vscode/rootfs/etc/s6-overlay/s6-rc.d/code-server/run +++ b/vscode/rootfs/etc/s6-overlay/s6-rc.d/code-server/run @@ -11,4 +11,4 @@ export HASS_SERVER="http://supervisor/core" export HASS_TOKEN="${SUPERVISOR_TOKEN:-}" # Run the code server -exec code-server /SERVER +exec code-server $CODE_SERVER_WORKSPACE_FILE diff --git a/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-code-server/dependencies.d/init-custom-bash b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-code-server/dependencies.d/init-custom-bash new file mode 100644 index 0000000..e69de29 diff --git a/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-code-server/run b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-code-server/run index 068d4ca..2d04e4b 100644 --- a/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-code-server/run +++ b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-code-server/run @@ -27,6 +27,8 @@ readonly DEFAULT_CONFIG_PATH="/data/vscode" readonly ROOT_CODE_SERVER_CONFIG_PATH="/root/.config/code-server/" # needed for code-server to cleanly readonly CODE_SERVER_EXTENSIONS_INSTALL_PATH="$DEFAULT_CONFIG_PATH/extensions" readonly CODE_SERVER_EXTENSIONS_LIST="$DEFAULT_CONFIG_PATH/vscode.extensions" +readonly CODE_SERVER_WORKSPACE_FILE="$DEFAULT_CONFIG_PATH/SERVER.code-workspace" + readonly -a DIRECTORIES=(addons addon_configs backup config media share ssl) CODE_SERVER_CONFIG="$DEFAULT_CONFIG_PATH/config.yaml" @@ -38,6 +40,7 @@ run() { set_log_level set_user_settings setup_extensions + setup_code_workspace } setup_clean_view() { @@ -51,6 +54,16 @@ setup_clean_view() { bashio::log.warning "Failed linking common directory: ${dir}" } +setup_code_workspace() { + # Copies the default workspace + if [ ! -e "$CODE_SERVER_WORKSPACE_FILE" ]; then + bashio::log.warning "CODE_SERVER_CONFIG does not exist.." + cp "$DEFAULT_FILES_PATH/SERVER.code-workspace" "$CODE_SERVER_WORKSPACE_FILE" + fi + + export CODE_SERVER_WORKSPACE_FILE=$CODE_SERVER_WORKSPACE_FILE +} + setup_config_path() { # Ensure config path exists if bashio::config.has_value "vscode_config_path"; then diff --git a/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/dependencies.d/base b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/dependencies.d/base new file mode 100644 index 0000000..e69de29 diff --git a/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/dependencies.d/init-mosquitto b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/dependencies.d/init-mosquitto new file mode 100644 index 0000000..e69de29 diff --git a/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/dependencies.d/init-mysql b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/dependencies.d/init-mysql new file mode 100644 index 0000000..e69de29 diff --git a/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/dependencies.d/init-user b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/dependencies.d/init-user new file mode 100644 index 0000000..e69de29 diff --git a/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/run b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/run new file mode 100644 index 0000000..c753146 --- /dev/null +++ b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/run @@ -0,0 +1,26 @@ +#!/command/with-contenv bashio +# shellcheck shell=bash +# ============================================================================== +# Home Assistant Community Add-on: Studio Code Server +# Sets up code-server. +# ============================================================================== +bashio::log.info "Initalizing code-server configs" + +# List of previous config hashes, to allow upgrade "default" configs. +readonly CUSTOM_BASH_SCRIPTS_PATH="/data/vscode/custom" + +run() { + if [ ! -d "$CUSTOM_BASH_SCRIPTS_PATH" ]; then + bashio::log.warning "Config path did not exist, creating $CUSTOM_BASH_SCRIPTS_PATH" + mkdir -p "$CUSTOM_BASH_SCRIPTS_PATH" || + bashio::exit.nok "Could not create persistent storage folder." + fi + + for script in "$CUSTOM_BASH_SCRIPTS_PATH"/*.sh; do + chmod +x "$script" + "$CUSTOM_BASH_SCRIPTS_PATH"/"$script" + done + +} + +run diff --git a/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/type b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/type new file mode 100644 index 0000000..bdd22a1 --- /dev/null +++ b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/type @@ -0,0 +1 @@ +oneshot diff --git a/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/up b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/up new file mode 100644 index 0000000..73ed835 --- /dev/null +++ b/vscode/rootfs/etc/s6-overlay/s6-rc.d/init-custom-bash/up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-custom-bash/run diff --git a/vscode/rootfs/var/lib/code-server/defaults/SERVER.code-workspace b/vscode/rootfs/var/lib/code-server/defaults/SERVER.code-workspace new file mode 100644 index 0000000..5709732 --- /dev/null +++ b/vscode/rootfs/var/lib/code-server/defaults/SERVER.code-workspace @@ -0,0 +1,8 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": {} +}