151 lines
4.7 KiB
HCL
151 lines
4.7 KiB
HCL
locals {
|
|
core_scripts = {
|
|
workspace = {
|
|
display = "Setup Development Workspace"
|
|
icon = "/icon/container.svg"
|
|
path = "${path.module}/scripts/workspace-setup.sh"
|
|
order = 1
|
|
blocks_login = true
|
|
}
|
|
dev_tools = {
|
|
display = "Install Development Tools"
|
|
icon = "/icon/code.svg"
|
|
path = "${path.module}/scripts/dev-tools.sh"
|
|
order = 2
|
|
blocks_login = true
|
|
}
|
|
terminal_tools = {
|
|
display = "Install Terminal Tools"
|
|
icon = "/icon/terminal.svg"
|
|
path = "${path.module}/scripts/terminal-tools.sh"
|
|
order = 3
|
|
blocks_login = false
|
|
}
|
|
git_hooks = {
|
|
display = "Configure Git Hooks"
|
|
icon = "/icon/git.svg"
|
|
path = "${path.module}/scripts/git-hooks.sh"
|
|
order = 4
|
|
blocks_login = false
|
|
}
|
|
}
|
|
|
|
ai_scripts = {
|
|
claude = {
|
|
enabled = data.coder_parameter.enable_ai_tools.value && var.install_claude_code
|
|
display = "Install Claude CLI"
|
|
icon = "/icon/claude.svg"
|
|
path = "${path.module}/scripts/claude-install.sh"
|
|
blocks_login = false
|
|
}
|
|
codex = {
|
|
enabled = data.coder_parameter.enable_ai_tools.value && var.install_codex_support
|
|
display = "Install Codex CLI"
|
|
icon = "/icon/openai.svg"
|
|
path = "${path.module}/scripts/codex-setup.sh"
|
|
blocks_login = false
|
|
}
|
|
gemini = {
|
|
enabled = data.coder_parameter.enable_ai_tools.value && var.install_gemini_support
|
|
display = "Install Gemini CLI"
|
|
icon = "/icon/google.svg"
|
|
path = "${path.module}/scripts/gemini-setup.sh"
|
|
blocks_login = false
|
|
}
|
|
cursor = {
|
|
enabled = data.coder_parameter.enable_ai_tools.value && var.install_cursor_support
|
|
display = "Configure Cursor"
|
|
icon = "/icon/cursor.svg"
|
|
path = "${path.module}/scripts/cursor-setup.sh"
|
|
blocks_login = false
|
|
}
|
|
windsurf = {
|
|
enabled = data.coder_parameter.enable_ai_tools.value && var.install_windsurf_support
|
|
display = "Configure Windsurf"
|
|
icon = "/icon/windsurf.svg"
|
|
path = "${path.module}/scripts/windsurf-setup.sh"
|
|
blocks_login = false
|
|
}
|
|
}
|
|
}
|
|
|
|
resource "coder_script" "core" {
|
|
for_each = local.core_scripts
|
|
|
|
agent_id = coder_agent.main.id
|
|
display_name = each.value.display
|
|
icon = each.value.icon
|
|
run_on_start = true
|
|
start_blocks_login = each.value.blocks_login
|
|
|
|
script = <<-EOT
|
|
set -euo pipefail
|
|
|
|
script_file=$(mktemp)
|
|
echo '${base64encode(file(each.value.path))}' | base64 -d | tr -d '\r' > "$script_file"
|
|
chmod +x "$script_file"
|
|
|
|
export PATH="/home/coder/.venv/bin:/home/coder/.local/bin:/home/coder/bin:/home/coder/.cargo/bin:/usr/local/go/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:$PATH"
|
|
current_nvm=$(printenv NVM_DIR 2>/dev/null || true)
|
|
if [ -z "$current_nvm" ]; then
|
|
NVM_DIR=/usr/local/share/nvm
|
|
else
|
|
NVM_DIR="$current_nvm"
|
|
fi
|
|
export NVM_DIR
|
|
if [ -d "$NVM_DIR" ]; then
|
|
if [ -s "$NVM_DIR/nvm.sh" ]; then
|
|
# shellcheck disable=SC1090,SC1091
|
|
. "$NVM_DIR/nvm.sh" >/dev/null 2>&1 || true
|
|
fi
|
|
shopt -s nullglob
|
|
for node_bin in "$NVM_DIR"/versions/node/*/bin; do
|
|
PATH="$node_bin:$PATH"
|
|
done
|
|
shopt -u nullglob
|
|
fi
|
|
|
|
"$script_file"
|
|
EOT
|
|
}
|
|
|
|
resource "coder_script" "ai" {
|
|
for_each = { for key, value in local.ai_scripts : key => value if value.enabled }
|
|
|
|
agent_id = coder_agent.main.id
|
|
display_name = each.value.display
|
|
icon = each.value.icon
|
|
run_on_start = true
|
|
start_blocks_login = each.value.blocks_login
|
|
|
|
script = <<-EOT
|
|
set -euo pipefail
|
|
|
|
script_file=$(mktemp)
|
|
echo '${base64encode(file(each.value.path))}' | base64 -d | tr -d '\r' > "$script_file"
|
|
chmod +x "$script_file"
|
|
|
|
export PATH="/home/coder/.venv/bin:/home/coder/.local/bin:/home/coder/bin:/home/coder/.cargo/bin:/usr/local/go/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:$PATH"
|
|
current_nvm=$(printenv NVM_DIR 2>/dev/null || true)
|
|
if [ -z "$current_nvm" ]; then
|
|
NVM_DIR=/usr/local/share/nvm
|
|
else
|
|
NVM_DIR="$current_nvm"
|
|
fi
|
|
export NVM_DIR
|
|
if [ -d "$NVM_DIR" ]; then
|
|
if [ -s "$NVM_DIR/nvm.sh" ]; then
|
|
# shellcheck disable=SC1090,SC1091
|
|
. "$NVM_DIR/nvm.sh" >/dev/null 2>&1 || true
|
|
fi
|
|
shopt -s nullglob
|
|
for node_bin in "$NVM_DIR"/versions/node/*/bin; do
|
|
PATH="$node_bin:$PATH"
|
|
done
|
|
shopt -u nullglob
|
|
fi
|
|
|
|
"$script_file"
|
|
EOT
|
|
}
|