Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions registry/coder/modules/git-config/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Runs a script that updates git credentials in the workspace to match the user's
module "git-config" {
count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/git-config/coder"
version = "1.0.33"
version = "1.0.34"
agent_id = coder_agent.main.id
}
```
Expand All @@ -29,7 +29,7 @@ TODO: Add screenshot
module "git-config" {
count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/git-config/coder"
version = "1.0.33"
version = "1.0.34"
agent_id = coder_agent.main.id
allow_email_change = true
}
Expand All @@ -43,7 +43,7 @@ TODO: Add screenshot
module "git-config" {
count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/git-config/coder"
version = "1.0.33"
version = "1.0.34"
agent_id = coder_agent.main.id
allow_username_change = false
allow_email_change = false
Expand Down
20 changes: 15 additions & 5 deletions registry/coder/modules/git-config/main.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,16 @@ describe("git-config", async () => {
});

const resources = state.resources;
expect(resources).toHaveLength(6);
expect(resources).toHaveLength(8);
expect(resources).toMatchObject([
{ type: "coder_workspace", name: "me" },
{ type: "coder_workspace_owner", name: "me" },
{ type: "coder_env", name: "git_author_email" },
{ type: "coder_env", name: "git_author_name" },
{ type: "coder_env", name: "git_commmiter_email" },
{ type: "coder_env", name: "git_commmiter_name" },
{ type: "coder_script", name: "git_config_user_email" },
{ type: "coder_script", name: "git_config_user_name" },
]);
});

Expand All @@ -38,7 +40,7 @@ describe("git-config", async () => {
});

const resources = state.resources;
expect(resources).toHaveLength(8);
expect(resources).toHaveLength(10);
expect(resources).toMatchObject([
{ type: "coder_parameter", name: "user_email" },
{ type: "coder_parameter", name: "username" },
Expand All @@ -48,6 +50,8 @@ describe("git-config", async () => {
{ type: "coder_env", name: "git_author_name" },
{ type: "coder_env", name: "git_commmiter_email" },
{ type: "coder_env", name: "git_commmiter_name" },
{ type: "coder_script", name: "git_config_user_email" },
{ type: "coder_script", name: "git_config_user_name" },
]);
});

Expand All @@ -63,14 +67,16 @@ describe("git-config", async () => {
);

const resources = state.resources;
expect(resources).toHaveLength(6);
expect(resources).toHaveLength(8);
expect(resources).toMatchObject([
{ type: "coder_workspace", name: "me" },
{ type: "coder_workspace_owner", name: "me" },
{ type: "coder_env", name: "git_author_email" },
{ type: "coder_env", name: "git_author_name" },
{ type: "coder_env", name: "git_commmiter_email" },
{ type: "coder_env", name: "git_commmiter_name" },
{ type: "coder_script", name: "git_config_user_email" },
{ type: "coder_script", name: "git_config_user_name" },
]);
});

Expand All @@ -83,7 +89,7 @@ describe("git-config", async () => {
coder_parameter_order: order.toString(),
});
const resources = state.resources;
expect(resources).toHaveLength(8);
expect(resources).toHaveLength(10);
expect(resources).toMatchObject([
{ type: "coder_parameter", name: "user_email" },
{ type: "coder_parameter", name: "username" },
Expand All @@ -93,6 +99,8 @@ describe("git-config", async () => {
{ type: "coder_env", name: "git_author_name" },
{ type: "coder_env", name: "git_commmiter_email" },
{ type: "coder_env", name: "git_commmiter_name" },
{ type: "coder_script", name: "git_config_user_email" },
{ type: "coder_script", name: "git_config_user_name" },
]);
// user_email order is the same as the order
expect(resources[0].instances[0].attributes.order).toBe(order);
Expand All @@ -110,7 +118,7 @@ describe("git-config", async () => {
coder_parameter_order: order.toString(),
});
const resources = state.resources;
expect(resources).toHaveLength(7);
expect(resources).toHaveLength(9);
expect(resources).toMatchObject([
{ type: "coder_parameter", name: "username" },
{ type: "coder_workspace", name: "me" },
Expand All @@ -119,6 +127,8 @@ describe("git-config", async () => {
{ type: "coder_env", name: "git_author_name" },
{ type: "coder_env", name: "git_commmiter_email" },
{ type: "coder_env", name: "git_commmiter_name" },
{ type: "coder_script", name: "git_config_user_email" },
{ type: "coder_script", name: "git_config_user_name" },
]);
// user_email was not created
// username order is incremented by 1
Expand Down
40 changes: 36 additions & 4 deletions registry/coder/modules/git-config/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -63,28 +63,60 @@ data "coder_parameter" "username" {
})
}

locals {
git_user_name = coalesce(try(data.coder_parameter.username[0].value, ""), data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)
git_user_email = coalesce(try(data.coder_parameter.user_email[0].value, ""), data.coder_workspace_owner.me.email)
}

resource "coder_env" "git_author_name" {
agent_id = var.agent_id
name = "GIT_AUTHOR_NAME"
value = coalesce(try(data.coder_parameter.username[0].value, ""), data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)
value = local.git_user_name
}

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_owner.me.full_name, data.coder_workspace_owner.me.name)
value = local.git_user_name
}

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_owner.me.email)
value = local.git_user_email
count = data.coder_workspace_owner.me.email != "" ? 1 : 0
}

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_owner.me.email)
value = local.git_user_email
count = data.coder_workspace_owner.me.email != "" ? 1 : 0
}

resource "coder_script" "git_config_user_name" {
agent_id = var.agent_id
run_on_start = true
display_name = "Configure git user name globally"
script = <<EOT
#!/bin/bash
set -o errexit
set -o pipefail

git config --global user.name "${local.git_user_name}"
EOT
}

resource "coder_script" "git_config_user_email" {
agent_id = var.agent_id
run_on_start = true
display_name = "Configure git user email globally"
script = <<EOT
#!/bin/bash
set -o errexit
set -o pipefail

git config --global user.email "${local.git_user_email}"
EOT
count = data.coder_workspace_owner.me.email != "" ? 1 : 0
}