Skip to content

Commit 5e95c7f

Browse files
authored
workspace new (#80)
* fixed default workspace case
1 parent ebcce82 commit 5e95c7f

File tree

3 files changed

+43
-9
lines changed

3 files changed

+43
-9
lines changed

pkg/terraform/tf.go

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,20 @@ func (terraform Terraform) Apply() (string, string, error) {
6868
println("terraform init failed.")
6969
return stdout.GetString(), "", fmt.Errorf("terraform init failed. %s", err)
7070
}
71-
72-
err = tf.WorkspaceSelect(context.Background(), terraform.Workspace)
71+
currentWorkspace, err := tf.WorkspaceShow(context.Background())
7372

7473
if err != nil {
75-
log.Printf("terraform workspace select failed. workspace: %v. dir: %v", terraform.Workspace, terraform.WorkingDir)
76-
return stdout.GetString(), "", fmt.Errorf("terraform select failed. %s", err)
74+
log.Printf("terraform workspace show failed. workspace: %v . dir: %v", terraform.Workspace, terraform.WorkingDir)
75+
return stdout.GetString(), "", fmt.Errorf("terraform show failed. %s", err)
76+
}
77+
78+
if currentWorkspace != terraform.Workspace {
79+
err = tf.WorkspaceNew(context.Background(), terraform.Workspace)
80+
81+
if err != nil {
82+
log.Printf("terraform workspace new failed. workspace: %v . dir: %v", terraform.Workspace, terraform.WorkingDir)
83+
return stdout.GetString(), "", fmt.Errorf("terraform select failed. %s", err)
84+
}
7785
}
7886

7987
err = tf.Apply(context.Background())
@@ -123,12 +131,22 @@ func (terraform Terraform) Plan() (bool, string, string, error) {
123131
println("terraform init failed.")
124132
return false, stdout.GetString(), stderr.GetString(), fmt.Errorf("terraform init failed. %s", err)
125133
}
126-
err = tf.WorkspaceSelect(context.Background(), terraform.Workspace)
134+
currentWorkspace, err := tf.WorkspaceShow(context.Background())
127135

128136
if err != nil {
129-
log.Printf("terraform workspace select failed. workspace: %v. dir: %v", terraform.Workspace, terraform.WorkingDir)
130-
return false, stdout.GetString(), stderr.GetString(), fmt.Errorf("terraform select failed. %s", err)
137+
log.Printf("terraform workspace show failed. workspace: %v . dir: %v", terraform.Workspace, terraform.WorkingDir)
138+
return false, stdout.GetString(), "", fmt.Errorf("terraform show failed. %s", err)
131139
}
140+
141+
if currentWorkspace != terraform.Workspace {
142+
err = tf.WorkspaceNew(context.Background(), terraform.Workspace)
143+
144+
if err != nil {
145+
log.Printf("terraform workspace new failed. workspace: %v . dir: %v", terraform.Workspace, terraform.WorkingDir)
146+
return false, stdout.GetString(), "", fmt.Errorf("terraform select failed. %s", err)
147+
}
148+
}
149+
132150
isNonEmptyPlan, err := tf.Plan(context.Background())
133151
if err != nil {
134152
println("terraform plan failed. dir: " + terraform.WorkingDir)

pkg/terraform/tf_test.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func TestExecuteTerraformPlan(t *testing.T) {
1818

1919
CreateValidTerraformTestFile(dir)
2020

21-
tf := Terraform{WorkingDir: dir, Workspace: "default"}
21+
tf := Terraform{WorkingDir: dir, Workspace: "dev"}
2222
_, _, _, err := tf.Plan()
2323
assert.NoError(t, err)
2424
}
@@ -34,6 +34,22 @@ func TestExecuteTerraformApply(t *testing.T) {
3434

3535
CreateValidTerraformTestFile(dir)
3636

37+
tf := Terraform{WorkingDir: dir, Workspace: "dev"}
38+
_, _, err := tf.Apply()
39+
assert.NoError(t, err)
40+
}
41+
42+
func TestExecuteTerraformApplyDefaultWorkspace(t *testing.T) {
43+
dir := CreateTestTerraformProject()
44+
defer func(name string) {
45+
err := os.RemoveAll(name)
46+
if err != nil {
47+
log.Fatal(err)
48+
}
49+
}(dir)
50+
51+
CreateValidTerraformTestFile(dir)
52+
3753
tf := Terraform{WorkingDir: dir, Workspace: "default"}
3854
_, _, err := tf.Apply()
3955
assert.NoError(t, err)

pkg/terraform/utils.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
)
77

88
func CreateTestTerraformProject() string {
9-
file, err := os.MkdirTemp("", "digger-test")
9+
file, err := os.MkdirTemp("", "digger-test-*")
1010
if err != nil {
1111
log.Fatal(err)
1212
}

0 commit comments

Comments
 (0)