Add gh/tea to the CLI wizard, drop the JetBrains module from all templates
Provision Coder Templates / provision (push) Successful in 2m7s
Provision Coder Templates / provision (push) Successful in 2m7s
- cli-setup-wizard.sh (identical across all 6 templates): add GitHub CLI (gh, installed via the official apt repo) and Gitea CLI (tea, official binary release to ~/.local/bin) as two more opt-in install-then-login prompts, alongside the existing Copilot/Antigravity/Claude Code CLI entries. Same pattern: skip if already installed, ask before installing, attempt login, never hard-fail the wizard. - main.tf (all 6 templates): remove the `module "jetbrains"` block - not used, dropped per request. - README.md: update the "Layout" blurb and CLI setup wizard tool list to match.
This commit is contained in:
@@ -47,8 +47,8 @@ extra `coder_script` needed, matching how the `/etc/skel` copy in every
|
|||||||
template's `startup_script` already relies on that same mechanism.
|
template's `startup_script` already relies on that same mechanism.
|
||||||
|
|
||||||
Each `templates/<env>/` is a complete, independent Coder template (agent,
|
Each `templates/<env>/` is a complete, independent Coder template (agent,
|
||||||
docker container, code-server, JetBrains) with its own copy of everything
|
docker container, code-server) with its own copy of everything `main.tf`
|
||||||
`main.tf` needs. They're deliberately not built from a shared Terraform
|
needs. They're deliberately not built from a shared Terraform
|
||||||
module or shared files elsewhere in the repo: `coder templates push -d
|
module or shared files elsewhere in the repo: `coder templates push -d
|
||||||
templates/<env>` only uploads that one directory to the Coder server, so any
|
templates/<env>` only uploads that one directory to the Coder server, so any
|
||||||
`file()` reference reaching outside it (e.g. the old shared
|
`file()` reference reaching outside it (e.g. the old shared
|
||||||
@@ -114,6 +114,8 @@ finishes it - and offers to install + log into:
|
|||||||
- **GitHub Copilot CLI** (`bun install -g @github/copilot`, then `copilot login`)
|
- **GitHub Copilot CLI** (`bun install -g @github/copilot`, then `copilot login`)
|
||||||
- **Google Antigravity CLI** (`curl -fsSL https://antigravity.google/cli/install.sh | bash`, binary `agy`)
|
- **Google Antigravity CLI** (`curl -fsSL https://antigravity.google/cli/install.sh | bash`, binary `agy`)
|
||||||
- **Claude Code CLI** (`bun install -g @anthropic-ai/claude-code`, then `claude`)
|
- **Claude Code CLI** (`bun install -g @anthropic-ai/claude-code`, then `claude`)
|
||||||
|
- **GitHub CLI** (`gh`, via the official apt repo, then `gh auth login`)
|
||||||
|
- **Gitea CLI** (`tea`, official binary release downloaded to `~/.local/bin`, then `tea login add`)
|
||||||
|
|
||||||
It does **not** ask about VS Code extensions, since those are handled by
|
It does **not** ask about VS Code extensions, since those are handled by
|
||||||
Terraform (see above). Once the user confirms completion it writes a
|
Terraform (see above). Once the user confirms completion it writes a
|
||||||
|
|||||||
@@ -96,6 +96,47 @@ else
|
|||||||
echo "Skipping Claude Code CLI: bun not found on this workspace image."
|
echo "Skipping Claude Code CLI: bun not found on this workspace image."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# --- GitHub CLI (gh) ---
|
||||||
|
if command -v gh >/dev/null 2>&1; then
|
||||||
|
echo "GitHub CLI already installed, skipping."
|
||||||
|
else
|
||||||
|
if ask_yes_no "Install GitHub CLI (gh) and log in?"; then
|
||||||
|
if (sudo mkdir -p -m 755 /etc/apt/keyrings \
|
||||||
|
&& curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg >/dev/null \
|
||||||
|
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
|
||||||
|
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list >/dev/null \
|
||||||
|
&& sudo apt-get update -qq && sudo apt-get install -y gh); then
|
||||||
|
gh auth login || echo "Install succeeded but login didn't complete. Retry any time with: gh auth login"
|
||||||
|
else
|
||||||
|
echo "GitHub CLI install failed. Retry later with: gh auth login (once gh is installed)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- Gitea CLI (tea) ---
|
||||||
|
if command -v tea >/dev/null 2>&1; then
|
||||||
|
echo "Gitea CLI already installed, skipping."
|
||||||
|
else
|
||||||
|
if ask_yes_no "Install Gitea CLI (tea) and log in?"; then
|
||||||
|
TEA_ARCH="$(uname -m)"
|
||||||
|
case "$TEA_ARCH" in
|
||||||
|
x86_64) TEA_ARCH="amd64" ;;
|
||||||
|
aarch64) TEA_ARCH="arm64" ;;
|
||||||
|
esac
|
||||||
|
TEA_VERSION="$(curl -fsSL https://gitea.com/api/v1/repos/gitea/tea/releases/latest | grep -o '"tag_name":[^,]*' | grep -o 'v[0-9][^"]*')"
|
||||||
|
mkdir -p "$HOME/.local/bin"
|
||||||
|
if [ -n "$TEA_VERSION" ] \
|
||||||
|
&& curl -fsSL "https://gitea.com/gitea/tea/releases/download/${TEA_VERSION}/tea-${TEA_VERSION#v}-linux-${TEA_ARCH}" -o "$HOME/.local/bin/tea" \
|
||||||
|
&& chmod +x "$HOME/.local/bin/tea"; then
|
||||||
|
echo "Add this Gitea instance now (e.g. https://git.octoturge.com)..."
|
||||||
|
tea login add || echo "Login didn't complete. Retry any time with: tea login add"
|
||||||
|
else
|
||||||
|
echo "Gitea CLI install failed. Retry later from: https://gitea.com/gitea/tea/releases"
|
||||||
|
rm -f "$HOME/.local/bin/tea"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
if ask_yes_no "Mark setup wizard as complete so it stops asking on new terminals?"; then
|
if ask_yes_no "Mark setup wizard as complete so it stops asking on new terminals?"; then
|
||||||
touch "$WIZARD_DONE_FILE"
|
touch "$WIZARD_DONE_FILE"
|
||||||
|
|||||||
@@ -141,17 +141,6 @@ module "code-server" {
|
|||||||
order = 1
|
order = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# See https://registry.coder.com/modules/coder/jetbrains
|
|
||||||
module "jetbrains" {
|
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/coder/jetbrains/coder"
|
|
||||||
version = "~> 1.1"
|
|
||||||
agent_id = coder_agent.main.id
|
|
||||||
agent_name = "main"
|
|
||||||
folder = "/home/coder"
|
|
||||||
tooltip = "You need to [install JetBrains Toolbox](https://coder.com/docs/user-guides/workspace-access/jetbrains/toolbox) to use this app."
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_volume" "home_volume" {
|
resource "docker_volume" "home_volume" {
|
||||||
name = "coder-${data.coder_workspace.me.id}-home"
|
name = "coder-${data.coder_workspace.me.id}-home"
|
||||||
# Protect the volume from being deleted due to changes in attributes.
|
# Protect the volume from being deleted due to changes in attributes.
|
||||||
|
|||||||
@@ -96,6 +96,47 @@ else
|
|||||||
echo "Skipping Claude Code CLI: bun not found on this workspace image."
|
echo "Skipping Claude Code CLI: bun not found on this workspace image."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# --- GitHub CLI (gh) ---
|
||||||
|
if command -v gh >/dev/null 2>&1; then
|
||||||
|
echo "GitHub CLI already installed, skipping."
|
||||||
|
else
|
||||||
|
if ask_yes_no "Install GitHub CLI (gh) and log in?"; then
|
||||||
|
if (sudo mkdir -p -m 755 /etc/apt/keyrings \
|
||||||
|
&& curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg >/dev/null \
|
||||||
|
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
|
||||||
|
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list >/dev/null \
|
||||||
|
&& sudo apt-get update -qq && sudo apt-get install -y gh); then
|
||||||
|
gh auth login || echo "Install succeeded but login didn't complete. Retry any time with: gh auth login"
|
||||||
|
else
|
||||||
|
echo "GitHub CLI install failed. Retry later with: gh auth login (once gh is installed)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- Gitea CLI (tea) ---
|
||||||
|
if command -v tea >/dev/null 2>&1; then
|
||||||
|
echo "Gitea CLI already installed, skipping."
|
||||||
|
else
|
||||||
|
if ask_yes_no "Install Gitea CLI (tea) and log in?"; then
|
||||||
|
TEA_ARCH="$(uname -m)"
|
||||||
|
case "$TEA_ARCH" in
|
||||||
|
x86_64) TEA_ARCH="amd64" ;;
|
||||||
|
aarch64) TEA_ARCH="arm64" ;;
|
||||||
|
esac
|
||||||
|
TEA_VERSION="$(curl -fsSL https://gitea.com/api/v1/repos/gitea/tea/releases/latest | grep -o '"tag_name":[^,]*' | grep -o 'v[0-9][^"]*')"
|
||||||
|
mkdir -p "$HOME/.local/bin"
|
||||||
|
if [ -n "$TEA_VERSION" ] \
|
||||||
|
&& curl -fsSL "https://gitea.com/gitea/tea/releases/download/${TEA_VERSION}/tea-${TEA_VERSION#v}-linux-${TEA_ARCH}" -o "$HOME/.local/bin/tea" \
|
||||||
|
&& chmod +x "$HOME/.local/bin/tea"; then
|
||||||
|
echo "Add this Gitea instance now (e.g. https://git.octoturge.com)..."
|
||||||
|
tea login add || echo "Login didn't complete. Retry any time with: tea login add"
|
||||||
|
else
|
||||||
|
echo "Gitea CLI install failed. Retry later from: https://gitea.com/gitea/tea/releases"
|
||||||
|
rm -f "$HOME/.local/bin/tea"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
if ask_yes_no "Mark setup wizard as complete so it stops asking on new terminals?"; then
|
if ask_yes_no "Mark setup wizard as complete so it stops asking on new terminals?"; then
|
||||||
touch "$WIZARD_DONE_FILE"
|
touch "$WIZARD_DONE_FILE"
|
||||||
|
|||||||
@@ -141,17 +141,6 @@ module "code-server" {
|
|||||||
order = 1
|
order = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# See https://registry.coder.com/modules/coder/jetbrains
|
|
||||||
module "jetbrains" {
|
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/coder/jetbrains/coder"
|
|
||||||
version = "~> 1.1"
|
|
||||||
agent_id = coder_agent.main.id
|
|
||||||
agent_name = "main"
|
|
||||||
folder = "/home/coder"
|
|
||||||
tooltip = "You need to [install JetBrains Toolbox](https://coder.com/docs/user-guides/workspace-access/jetbrains/toolbox) to use this app."
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_volume" "home_volume" {
|
resource "docker_volume" "home_volume" {
|
||||||
name = "coder-${data.coder_workspace.me.id}-home"
|
name = "coder-${data.coder_workspace.me.id}-home"
|
||||||
# Protect the volume from being deleted due to changes in attributes.
|
# Protect the volume from being deleted due to changes in attributes.
|
||||||
|
|||||||
@@ -96,6 +96,47 @@ else
|
|||||||
echo "Skipping Claude Code CLI: bun not found on this workspace image."
|
echo "Skipping Claude Code CLI: bun not found on this workspace image."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# --- GitHub CLI (gh) ---
|
||||||
|
if command -v gh >/dev/null 2>&1; then
|
||||||
|
echo "GitHub CLI already installed, skipping."
|
||||||
|
else
|
||||||
|
if ask_yes_no "Install GitHub CLI (gh) and log in?"; then
|
||||||
|
if (sudo mkdir -p -m 755 /etc/apt/keyrings \
|
||||||
|
&& curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg >/dev/null \
|
||||||
|
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
|
||||||
|
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list >/dev/null \
|
||||||
|
&& sudo apt-get update -qq && sudo apt-get install -y gh); then
|
||||||
|
gh auth login || echo "Install succeeded but login didn't complete. Retry any time with: gh auth login"
|
||||||
|
else
|
||||||
|
echo "GitHub CLI install failed. Retry later with: gh auth login (once gh is installed)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- Gitea CLI (tea) ---
|
||||||
|
if command -v tea >/dev/null 2>&1; then
|
||||||
|
echo "Gitea CLI already installed, skipping."
|
||||||
|
else
|
||||||
|
if ask_yes_no "Install Gitea CLI (tea) and log in?"; then
|
||||||
|
TEA_ARCH="$(uname -m)"
|
||||||
|
case "$TEA_ARCH" in
|
||||||
|
x86_64) TEA_ARCH="amd64" ;;
|
||||||
|
aarch64) TEA_ARCH="arm64" ;;
|
||||||
|
esac
|
||||||
|
TEA_VERSION="$(curl -fsSL https://gitea.com/api/v1/repos/gitea/tea/releases/latest | grep -o '"tag_name":[^,]*' | grep -o 'v[0-9][^"]*')"
|
||||||
|
mkdir -p "$HOME/.local/bin"
|
||||||
|
if [ -n "$TEA_VERSION" ] \
|
||||||
|
&& curl -fsSL "https://gitea.com/gitea/tea/releases/download/${TEA_VERSION}/tea-${TEA_VERSION#v}-linux-${TEA_ARCH}" -o "$HOME/.local/bin/tea" \
|
||||||
|
&& chmod +x "$HOME/.local/bin/tea"; then
|
||||||
|
echo "Add this Gitea instance now (e.g. https://git.octoturge.com)..."
|
||||||
|
tea login add || echo "Login didn't complete. Retry any time with: tea login add"
|
||||||
|
else
|
||||||
|
echo "Gitea CLI install failed. Retry later from: https://gitea.com/gitea/tea/releases"
|
||||||
|
rm -f "$HOME/.local/bin/tea"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
if ask_yes_no "Mark setup wizard as complete so it stops asking on new terminals?"; then
|
if ask_yes_no "Mark setup wizard as complete so it stops asking on new terminals?"; then
|
||||||
touch "$WIZARD_DONE_FILE"
|
touch "$WIZARD_DONE_FILE"
|
||||||
|
|||||||
@@ -141,17 +141,6 @@ module "code-server" {
|
|||||||
order = 1
|
order = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# See https://registry.coder.com/modules/coder/jetbrains
|
|
||||||
module "jetbrains" {
|
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/coder/jetbrains/coder"
|
|
||||||
version = "~> 1.1"
|
|
||||||
agent_id = coder_agent.main.id
|
|
||||||
agent_name = "main"
|
|
||||||
folder = "/home/coder"
|
|
||||||
tooltip = "You need to [install JetBrains Toolbox](https://coder.com/docs/user-guides/workspace-access/jetbrains/toolbox) to use this app."
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_volume" "home_volume" {
|
resource "docker_volume" "home_volume" {
|
||||||
name = "coder-${data.coder_workspace.me.id}-home"
|
name = "coder-${data.coder_workspace.me.id}-home"
|
||||||
# Protect the volume from being deleted due to changes in attributes.
|
# Protect the volume from being deleted due to changes in attributes.
|
||||||
|
|||||||
@@ -96,6 +96,47 @@ else
|
|||||||
echo "Skipping Claude Code CLI: bun not found on this workspace image."
|
echo "Skipping Claude Code CLI: bun not found on this workspace image."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# --- GitHub CLI (gh) ---
|
||||||
|
if command -v gh >/dev/null 2>&1; then
|
||||||
|
echo "GitHub CLI already installed, skipping."
|
||||||
|
else
|
||||||
|
if ask_yes_no "Install GitHub CLI (gh) and log in?"; then
|
||||||
|
if (sudo mkdir -p -m 755 /etc/apt/keyrings \
|
||||||
|
&& curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg >/dev/null \
|
||||||
|
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
|
||||||
|
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list >/dev/null \
|
||||||
|
&& sudo apt-get update -qq && sudo apt-get install -y gh); then
|
||||||
|
gh auth login || echo "Install succeeded but login didn't complete. Retry any time with: gh auth login"
|
||||||
|
else
|
||||||
|
echo "GitHub CLI install failed. Retry later with: gh auth login (once gh is installed)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- Gitea CLI (tea) ---
|
||||||
|
if command -v tea >/dev/null 2>&1; then
|
||||||
|
echo "Gitea CLI already installed, skipping."
|
||||||
|
else
|
||||||
|
if ask_yes_no "Install Gitea CLI (tea) and log in?"; then
|
||||||
|
TEA_ARCH="$(uname -m)"
|
||||||
|
case "$TEA_ARCH" in
|
||||||
|
x86_64) TEA_ARCH="amd64" ;;
|
||||||
|
aarch64) TEA_ARCH="arm64" ;;
|
||||||
|
esac
|
||||||
|
TEA_VERSION="$(curl -fsSL https://gitea.com/api/v1/repos/gitea/tea/releases/latest | grep -o '"tag_name":[^,]*' | grep -o 'v[0-9][^"]*')"
|
||||||
|
mkdir -p "$HOME/.local/bin"
|
||||||
|
if [ -n "$TEA_VERSION" ] \
|
||||||
|
&& curl -fsSL "https://gitea.com/gitea/tea/releases/download/${TEA_VERSION}/tea-${TEA_VERSION#v}-linux-${TEA_ARCH}" -o "$HOME/.local/bin/tea" \
|
||||||
|
&& chmod +x "$HOME/.local/bin/tea"; then
|
||||||
|
echo "Add this Gitea instance now (e.g. https://git.octoturge.com)..."
|
||||||
|
tea login add || echo "Login didn't complete. Retry any time with: tea login add"
|
||||||
|
else
|
||||||
|
echo "Gitea CLI install failed. Retry later from: https://gitea.com/gitea/tea/releases"
|
||||||
|
rm -f "$HOME/.local/bin/tea"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
if ask_yes_no "Mark setup wizard as complete so it stops asking on new terminals?"; then
|
if ask_yes_no "Mark setup wizard as complete so it stops asking on new terminals?"; then
|
||||||
touch "$WIZARD_DONE_FILE"
|
touch "$WIZARD_DONE_FILE"
|
||||||
|
|||||||
@@ -141,17 +141,6 @@ module "code-server" {
|
|||||||
order = 1
|
order = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# See https://registry.coder.com/modules/coder/jetbrains
|
|
||||||
module "jetbrains" {
|
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/coder/jetbrains/coder"
|
|
||||||
version = "~> 1.1"
|
|
||||||
agent_id = coder_agent.main.id
|
|
||||||
agent_name = "main"
|
|
||||||
folder = "/home/coder"
|
|
||||||
tooltip = "You need to [install JetBrains Toolbox](https://coder.com/docs/user-guides/workspace-access/jetbrains/toolbox) to use this app."
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_volume" "home_volume" {
|
resource "docker_volume" "home_volume" {
|
||||||
name = "coder-${data.coder_workspace.me.id}-home"
|
name = "coder-${data.coder_workspace.me.id}-home"
|
||||||
# Protect the volume from being deleted due to changes in attributes.
|
# Protect the volume from being deleted due to changes in attributes.
|
||||||
|
|||||||
@@ -96,6 +96,47 @@ else
|
|||||||
echo "Skipping Claude Code CLI: bun not found on this workspace image."
|
echo "Skipping Claude Code CLI: bun not found on this workspace image."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# --- GitHub CLI (gh) ---
|
||||||
|
if command -v gh >/dev/null 2>&1; then
|
||||||
|
echo "GitHub CLI already installed, skipping."
|
||||||
|
else
|
||||||
|
if ask_yes_no "Install GitHub CLI (gh) and log in?"; then
|
||||||
|
if (sudo mkdir -p -m 755 /etc/apt/keyrings \
|
||||||
|
&& curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg >/dev/null \
|
||||||
|
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
|
||||||
|
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list >/dev/null \
|
||||||
|
&& sudo apt-get update -qq && sudo apt-get install -y gh); then
|
||||||
|
gh auth login || echo "Install succeeded but login didn't complete. Retry any time with: gh auth login"
|
||||||
|
else
|
||||||
|
echo "GitHub CLI install failed. Retry later with: gh auth login (once gh is installed)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- Gitea CLI (tea) ---
|
||||||
|
if command -v tea >/dev/null 2>&1; then
|
||||||
|
echo "Gitea CLI already installed, skipping."
|
||||||
|
else
|
||||||
|
if ask_yes_no "Install Gitea CLI (tea) and log in?"; then
|
||||||
|
TEA_ARCH="$(uname -m)"
|
||||||
|
case "$TEA_ARCH" in
|
||||||
|
x86_64) TEA_ARCH="amd64" ;;
|
||||||
|
aarch64) TEA_ARCH="arm64" ;;
|
||||||
|
esac
|
||||||
|
TEA_VERSION="$(curl -fsSL https://gitea.com/api/v1/repos/gitea/tea/releases/latest | grep -o '"tag_name":[^,]*' | grep -o 'v[0-9][^"]*')"
|
||||||
|
mkdir -p "$HOME/.local/bin"
|
||||||
|
if [ -n "$TEA_VERSION" ] \
|
||||||
|
&& curl -fsSL "https://gitea.com/gitea/tea/releases/download/${TEA_VERSION}/tea-${TEA_VERSION#v}-linux-${TEA_ARCH}" -o "$HOME/.local/bin/tea" \
|
||||||
|
&& chmod +x "$HOME/.local/bin/tea"; then
|
||||||
|
echo "Add this Gitea instance now (e.g. https://git.octoturge.com)..."
|
||||||
|
tea login add || echo "Login didn't complete. Retry any time with: tea login add"
|
||||||
|
else
|
||||||
|
echo "Gitea CLI install failed. Retry later from: https://gitea.com/gitea/tea/releases"
|
||||||
|
rm -f "$HOME/.local/bin/tea"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
if ask_yes_no "Mark setup wizard as complete so it stops asking on new terminals?"; then
|
if ask_yes_no "Mark setup wizard as complete so it stops asking on new terminals?"; then
|
||||||
touch "$WIZARD_DONE_FILE"
|
touch "$WIZARD_DONE_FILE"
|
||||||
|
|||||||
@@ -141,17 +141,6 @@ module "code-server" {
|
|||||||
order = 1
|
order = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# See https://registry.coder.com/modules/coder/jetbrains
|
|
||||||
module "jetbrains" {
|
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/coder/jetbrains/coder"
|
|
||||||
version = "~> 1.1"
|
|
||||||
agent_id = coder_agent.main.id
|
|
||||||
agent_name = "main"
|
|
||||||
folder = "/home/coder"
|
|
||||||
tooltip = "You need to [install JetBrains Toolbox](https://coder.com/docs/user-guides/workspace-access/jetbrains/toolbox) to use this app."
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_volume" "home_volume" {
|
resource "docker_volume" "home_volume" {
|
||||||
name = "coder-${data.coder_workspace.me.id}-home"
|
name = "coder-${data.coder_workspace.me.id}-home"
|
||||||
# Protect the volume from being deleted due to changes in attributes.
|
# Protect the volume from being deleted due to changes in attributes.
|
||||||
|
|||||||
@@ -96,6 +96,47 @@ else
|
|||||||
echo "Skipping Claude Code CLI: bun not found on this workspace image."
|
echo "Skipping Claude Code CLI: bun not found on this workspace image."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# --- GitHub CLI (gh) ---
|
||||||
|
if command -v gh >/dev/null 2>&1; then
|
||||||
|
echo "GitHub CLI already installed, skipping."
|
||||||
|
else
|
||||||
|
if ask_yes_no "Install GitHub CLI (gh) and log in?"; then
|
||||||
|
if (sudo mkdir -p -m 755 /etc/apt/keyrings \
|
||||||
|
&& curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg >/dev/null \
|
||||||
|
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
|
||||||
|
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list >/dev/null \
|
||||||
|
&& sudo apt-get update -qq && sudo apt-get install -y gh); then
|
||||||
|
gh auth login || echo "Install succeeded but login didn't complete. Retry any time with: gh auth login"
|
||||||
|
else
|
||||||
|
echo "GitHub CLI install failed. Retry later with: gh auth login (once gh is installed)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- Gitea CLI (tea) ---
|
||||||
|
if command -v tea >/dev/null 2>&1; then
|
||||||
|
echo "Gitea CLI already installed, skipping."
|
||||||
|
else
|
||||||
|
if ask_yes_no "Install Gitea CLI (tea) and log in?"; then
|
||||||
|
TEA_ARCH="$(uname -m)"
|
||||||
|
case "$TEA_ARCH" in
|
||||||
|
x86_64) TEA_ARCH="amd64" ;;
|
||||||
|
aarch64) TEA_ARCH="arm64" ;;
|
||||||
|
esac
|
||||||
|
TEA_VERSION="$(curl -fsSL https://gitea.com/api/v1/repos/gitea/tea/releases/latest | grep -o '"tag_name":[^,]*' | grep -o 'v[0-9][^"]*')"
|
||||||
|
mkdir -p "$HOME/.local/bin"
|
||||||
|
if [ -n "$TEA_VERSION" ] \
|
||||||
|
&& curl -fsSL "https://gitea.com/gitea/tea/releases/download/${TEA_VERSION}/tea-${TEA_VERSION#v}-linux-${TEA_ARCH}" -o "$HOME/.local/bin/tea" \
|
||||||
|
&& chmod +x "$HOME/.local/bin/tea"; then
|
||||||
|
echo "Add this Gitea instance now (e.g. https://git.octoturge.com)..."
|
||||||
|
tea login add || echo "Login didn't complete. Retry any time with: tea login add"
|
||||||
|
else
|
||||||
|
echo "Gitea CLI install failed. Retry later from: https://gitea.com/gitea/tea/releases"
|
||||||
|
rm -f "$HOME/.local/bin/tea"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
if ask_yes_no "Mark setup wizard as complete so it stops asking on new terminals?"; then
|
if ask_yes_no "Mark setup wizard as complete so it stops asking on new terminals?"; then
|
||||||
touch "$WIZARD_DONE_FILE"
|
touch "$WIZARD_DONE_FILE"
|
||||||
|
|||||||
@@ -148,17 +148,6 @@ module "code-server" {
|
|||||||
order = 1
|
order = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# See https://registry.coder.com/modules/coder/jetbrains
|
|
||||||
module "jetbrains" {
|
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/coder/jetbrains/coder"
|
|
||||||
version = "~> 1.1"
|
|
||||||
agent_id = coder_agent.main.id
|
|
||||||
agent_name = "main"
|
|
||||||
folder = "/home/coder"
|
|
||||||
tooltip = "You need to [install JetBrains Toolbox](https://coder.com/docs/user-guides/workspace-access/jetbrains/toolbox) to use this app."
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_volume" "home_volume" {
|
resource "docker_volume" "home_volume" {
|
||||||
name = "coder-${data.coder_workspace.me.id}-home"
|
name = "coder-${data.coder_workspace.me.id}-home"
|
||||||
# Protect the volume from being deleted due to changes in attributes.
|
# Protect the volume from being deleted due to changes in attributes.
|
||||||
|
|||||||
Reference in New Issue
Block a user