From 77121350549a03403a911c344f7d48470b0ddcba Mon Sep 17 00:00:00 2001 From: aptalca Date: Fri, 29 Jul 2022 09:39:19 -0400 Subject: [PATCH 1/2] switch to hybrid --- .../dependencies.d/init-mods | 0 .../init-mod-code-server-extension-arguments/run | 15 +++++++++++++++ .../init-mod-code-server-extension-arguments/type | 1 + .../init-mod-code-server-extension-arguments/up | 1 + .../init-mod-code-server-extension-arguments | 0 .../init-mod-code-server-extension-arguments | 0 6 files changed, 17 insertions(+) create mode 100644 root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/dependencies.d/init-mods create mode 100755 root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/run create mode 100644 root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/type create mode 100644 root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/up create mode 100644 root/etc/s6-overlay/s6-rc.d/init-mods-end/dependencies.d/init-mod-code-server-extension-arguments create mode 100644 root/etc/s6-overlay/s6-rc.d/user/contents.d/init-mod-code-server-extension-arguments diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/dependencies.d/init-mods b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/dependencies.d/init-mods new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/run b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/run new file mode 100755 index 0000000..825f19e --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/run @@ -0,0 +1,15 @@ +#!/usr/bin/with-contenv bash + +# Exit if no VsCode extensions are given +if [ -z ${VSCODE_EXTENSION_IDS+x} ]; then + echo "**** No VSCODE EXTENSIONS GIVEN****" + exit 0 +fi + + +IFS='|' +VSCODE_EXTENSION_IDS=(${VSCODE_EXTENSION_IDS}) +for ID in "${VSCODE_EXTENSION_IDS[@]}"; do + echo "**** installing extension: ${ID} ****" + s6-setuidgid abc code-server --user-data-dir /config/data --extensions-dir /config/extensions --install-extension ${ID} +done diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/type b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/type new file mode 100644 index 0000000..3d92b15 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/type @@ -0,0 +1 @@ +oneshot \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/up b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/up new file mode 100644 index 0000000..bfc7989 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/run \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/init-mods-end/dependencies.d/init-mod-code-server-extension-arguments b/root/etc/s6-overlay/s6-rc.d/init-mods-end/dependencies.d/init-mod-code-server-extension-arguments new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-mod-code-server-extension-arguments b/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-mod-code-server-extension-arguments new file mode 100644 index 0000000..e69de29 From db6f2d2fcb5112f54d882c566f34896949ac2722 Mon Sep 17 00:00:00 2001 From: aptalca Date: Mon, 5 Sep 2022 22:01:10 -0400 Subject: [PATCH 2/2] make compatible with openvscode-server --- README.md | 20 +++++++++++++++---- root/etc/cont-init.d/99-install-extensions | 13 ++++++++---- .../run | 4 +--- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 51d0c36..903ce37 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,21 @@ -# Extension Arguments - Docker mod for code-server +# Extension Arguments - Docker mod for code-server/openvscode-server + +This mod installs code-server/openvscode-server extensions at startup. The list of extensions to be installed should be provided using environment variable `VSCODE_EXTENSION_IDS` separated by `|`. + +__NOTE__: +Since transitioning from `v3.12.0` to `v4.0.x` `code-server` has been forced to use a new Extensions Gallery / Marketplace. This results in a smaller set of plugins being available to install. Please take this into account before opening an Issue! + +A workaround for this is to use the environment variable `EXTENSIONS_GALLERY` to provide a different marketplace URL. The commandline installer used by this plugin will also use the marketplace provided by this variable. + +Please refer to the [code-server FAQ](https://github.com/coder/code-server/blob/main/docs/FAQ.md#how-do-i-use-my-own-extensions-marketplace) for additional information. -This mod installs code-server extensions at startup. The list of extensions to be installed should be provided using environment variable `VSCODE_EXTENSION_IDS` separated by `|`. For example, to install the `vscode-docker` and `vscode-icons` extensions add the following lines to your docker compose service: ```yaml -- DOCKER_MODS=linuxserver/mods:code-server-docker|linuxserver/mods:code-server-extension-arguments -- VSCODE_EXTENSION_IDS=vscode-icons-team.vscode-icons|ms-azuretools.vscode-docker + environment: + DOCKER_MODS: 'linuxserver/mods:code-server-docker|linuxserver/mods:code-server-extension-arguments' + VSCODE_EXTENSION_IDS: 'vscode-icons-team.vscode-icons|ms-azuretools.vscode-docker' + ## Optionally use a different marketplace if required extensions are unavailable. e.g.: + # EXTENSIONS_GALLERY: '{"serviceUrl": "https://extensions.coder.com/api"}' + # EXTENSIONS_GALLERY: '{"serviceUrl": "https://open-vsx.org/vscode/gallery", "itemUrl": "https://open-vsx.org/vscode/item"}' ``` diff --git a/root/etc/cont-init.d/99-install-extensions b/root/etc/cont-init.d/99-install-extensions index 825f19e..26f1223 100644 --- a/root/etc/cont-init.d/99-install-extensions +++ b/root/etc/cont-init.d/99-install-extensions @@ -6,10 +6,15 @@ if [ -z ${VSCODE_EXTENSION_IDS+x} ]; then exit 0 fi - IFS='|' VSCODE_EXTENSION_IDS=(${VSCODE_EXTENSION_IDS}) -for ID in "${VSCODE_EXTENSION_IDS[@]}"; do - echo "**** installing extension: ${ID} ****" +# Use newly available abstraction if available (>= v4.0.x), else fallback to old method. +if [ -x "$(command -v install-extension)" ]; then + for ID in "${VSCODE_EXTENSION_IDS[@]}"; do + install-extension ${ID} + done +else + for ID in "${VSCODE_EXTENSION_IDS[@]}"; do s6-setuidgid abc code-server --user-data-dir /config/data --extensions-dir /config/extensions --install-extension ${ID} -done + done +fi diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/run b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/run index 825f19e..3bfecc6 100755 --- a/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/run +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-code-server-extension-arguments/run @@ -6,10 +6,8 @@ if [ -z ${VSCODE_EXTENSION_IDS+x} ]; then exit 0 fi - IFS='|' VSCODE_EXTENSION_IDS=(${VSCODE_EXTENSION_IDS}) for ID in "${VSCODE_EXTENSION_IDS[@]}"; do - echo "**** installing extension: ${ID} ****" - s6-setuidgid abc code-server --user-data-dir /config/data --extensions-dir /config/extensions --install-extension ${ID} + install-extension ${ID} done