diff --git a/git-config/README.md b/git-config/README.md index 3044c4e..9b76658 100644 --- a/git-config/README.md +++ b/git-config/README.md @@ -14,7 +14,7 @@ Runs a script that updates git credentials in the workspace to match the user's ```tf module "git-config" { source = "registry.coder.com/modules/git-config/coder" - version = "1.0.2" + version = "1.0.3" agent_id = coder_agent.example.id } ``` @@ -28,7 +28,7 @@ TODO: Add screenshot ```tf module "git-config" { source = "registry.coder.com/modules/git-config/coder" - version = "1.0.2" + version = "1.0.3" agent_id = coder_agent.example.id allow_email_change = true } @@ -41,7 +41,7 @@ TODO: Add screenshot ```tf module "git-config" { source = "registry.coder.com/modules/git-config/coder" - version = "1.0.2" + version = "1.0.3" agent_id = coder_agent.example.id allow_username_change = false allow_email_change = false diff --git a/git-config/main.test.ts b/git-config/main.test.ts deleted file mode 100644 index 6fbdbc5..0000000 --- a/git-config/main.test.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { describe, expect, it } from "bun:test"; -import { - executeScriptInContainer, - runTerraformApply, - runTerraformInit, - testRequiredVariables, -} from "../test"; - -describe("git-config", async () => { - await runTerraformInit(import.meta.dir); - - testRequiredVariables(import.meta.dir, { - agent_id: "foo", - }); - - it("fails without git", async () => { - const state = await runTerraformApply(import.meta.dir, { - agent_id: "foo", - }); - const output = await executeScriptInContainer(state, "alpine"); - expect(output.exitCode).toBe(1); - expect(output.stdout).toEqual([ - "\u001B[0;1mChecking git-config!", - "Git is not installed!", - ]); - }); - - it("runs with git", async () => { - const state = await runTerraformApply(import.meta.dir, { - agent_id: "foo", - }); - const output = await executeScriptInContainer(state, "alpine/git"); - expect(output.exitCode).toBe(0); - expect(output.stdout).toEqual([ - "\u001B[0;1mChecking git-config!", - "git-config: No user.email found, setting to ", - "git-config: No user.name found, setting to default", - "", - "\u001B[0;1mgit-config: using email: ", - "\u001B[0;1mgit-config: using username: default", - ]); - }); -}); diff --git a/git-config/main.tf b/git-config/main.tf index 55d9cca..d92a0b7 100644 --- a/git-config/main.tf +++ b/git-config/main.tf @@ -4,7 +4,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = ">= 0.12" + version = ">= 0.13" } } } @@ -34,7 +34,7 @@ data "coder_parameter" "user_email" { name = "user_email" type = "string" default = "" - description = "Git user.email to be used for commits. Leave empty to default to Coder username." + description = "Git user.email to be used for commits. Leave empty to default to Coder user's email." display_name = "Git config user.email" mutable = true } @@ -44,18 +44,31 @@ data "coder_parameter" "username" { name = "username" type = "string" default = "" - description = "Git user.name to be used for commits. Leave empty to default to Coder username." - display_name = "Git config user.name" + description = "Git user.name to be used for commits. Leave empty to default to Coder user's Full Name." + display_name = "Full Name for Git config" mutable = true } -resource "coder_script" "git_config" { +resource "coder_env" "git_author_name" { agent_id = var.agent_id - script = templatefile("${path.module}/run.sh", { - GIT_USERNAME = try(data.coder_parameter.username[0].value, "") == "" ? data.coder_workspace.me.owner : try(data.coder_parameter.username[0].value, "") - GIT_EMAIL = try(data.coder_parameter.user_email[0].value, "") == "" ? data.coder_workspace.me.owner_email : try(data.coder_parameter.user_email[0].value, "") - }) - display_name = "Git Config" - icon = "/icon/git.svg" - run_on_start = true + name = "GIT_AUTHOR_NAME" + value = coalesce(try(data.coder_parameter.username[0].value, ""), data.coder_workspace.me.owner_name, data.coder_workspace.me.owner) +} + +resource "coder_env" "git_commmiter_name" { + agent_id = var.agent_id + name = "GIT_COMMITTER_NAME" + value = coalesce(try(data.coder_parameter.username[0].value, ""), data.coder_workspace.me.owner_name, data.coder_workspace.me.owner) +} + +resource "coder_env" "git_author_email" { + agent_id = var.agent_id + name = "GIT_AUTHOR_EMAIL" + value = coalesce(try(data.coder_parameter.user_email[0].value, ""), data.coder_workspace.me.owner_email) +} + +resource "coder_env" "git_commmiter_email" { + agent_id = var.agent_id + name = "GIT_COMMITTER_EMAIL" + value = coalesce(try(data.coder_parameter.user_email[0].value, ""), data.coder_workspace.me.owner_email) } diff --git a/git-config/run.sh b/git-config/run.sh deleted file mode 100644 index 36dc768..0000000 --- a/git-config/run.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env sh - -BOLD='\033[0;1m' -printf "$${BOLD}Checking git-config!\n" - -# Check if git is installed -command -v git > /dev/null 2>&1 || { - echo "Git is not installed!" - exit 1 -} - -# Set git username and email if missing -if [ -z $(git config --get user.email) ]; then - printf "git-config: No user.email found, setting to ${GIT_EMAIL}\n" - git config --global user.email "${GIT_EMAIL}" -fi - -if [ -z $(git config --get user.name) ]; then - printf "git-config: No user.name found, setting to ${GIT_USERNAME}\n" - git config --global user.name "${GIT_USERNAME}" -fi - -printf "\n$${BOLD}git-config: using email: $(git config --get user.email)\n" -printf "$${BOLD}git-config: using username: $(git config --get user.name)\n\n"