Skip to content

coder-server extension should wait in the the project folder exists #57

@michaelbrewer

Description

@michaelbrewer

In some cases auto_install_extensions won't if the workspace has not been checkout yet.

Ideally coder should provide a method to wait on a dependent task from completing.

A work around is to poll for the folder to be created before running the install like so.

if [ "${AUTO_INSTALL_EXTENSIONS}" = true ]; then
  if ! command -v jq > /dev/null; then
    echo "jq is required to install extensions from a workspace file."
    exit 0
  fi

  WORKSPACE_DIR="$HOME"
  if [ -n "${FOLDER}" ]; then
    WORKSPACE_DIR="${FOLDER}"
  fi

  TIMEOUT=10
  INTERVAL=1
  ELAPSED=0
  while [ $ELAPSED -lt $TIMEOUT ]; do
    if [ -d "$WORKSPACE_DIR" ]; then
      echo "Directory $WORKSPACE_DIR exists."
      break
    fi
    sleep $INTERVAL
    ELAPSED=$((ELAPSED + INTERVAL))
  done

  if [ -f "$WORKSPACE_DIR/.vscode/extensions.json" ]; then
    printf "🧩 Installing extensions from %s/.vscode/extensions.json...\n" "$WORKSPACE_DIR"
    extensions=$(jq -r '.recommendations[]' "$WORKSPACE_DIR"/.vscode/extensions.json)
    for extension in $extensions; do
      if extension_installed "$extension"; then
        continue
      fi
      $CODE_SERVER "$EXTENSION_ARG" --force --install-extension "$extension"
    done
  fi
fi

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions