Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit f31fc2a

Browse files
committedJun 25, 2024
feat: implement env helpers
1 parent 041e000 commit f31fc2a

File tree

2 files changed

+53
-30
lines changed

2 files changed

+53
-30
lines changed
 

‎provider/helpers/env.go

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package helpers
2+
3+
import (
4+
"fmt"
5+
"os"
6+
)
7+
8+
// RequireEnv requires environment variable to be present.
9+
func RequireEnv(name string) (string, error) {
10+
val := os.Getenv(name)
11+
if val == "" {
12+
return "", fmt.Errorf("%s is required", name)
13+
}
14+
return val, nil
15+
}
16+
17+
// OptionalEnv returns the value for environment variable if it exists,
18+
// otherwise returns an empty string.
19+
func OptionalEnv(name string) string {
20+
return OptionalEnvOrDefault(name, "")
21+
}
22+
23+
// OptionalEnvOrDefault returns the value for environment variable if it exists,
24+
// otherwise returns the default value.
25+
func OptionalEnvOrDefault(name, defaultValue string) string {
26+
val := os.Getenv(name)
27+
if val == "" {
28+
return defaultValue
29+
}
30+
return val
31+
}

‎provider/workspace.go

+22-30
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"reflect"
88
"strconv"
99

10+
"github.com/coder/terraform-provider-coder/provider/helpers"
1011
"github.com/google/uuid"
1112
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1213
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -28,19 +29,13 @@ func workspaceDataSource() *schema.Resource {
2829
}
2930
_ = rd.Set("start_count", count)
3031

31-
owner := os.Getenv("CODER_WORKSPACE_OWNER")
32-
if owner == "" {
33-
owner = "default"
34-
}
32+
owner := helpers.OptionalEnvOrDefault("CODER_WORKSPACE_OWNER", "default")
3533
_ = rd.Set("owner", owner)
3634

37-
ownerEmail := os.Getenv("CODER_WORKSPACE_OWNER_EMAIL")
38-
if ownerEmail == "" {
39-
ownerEmail = "default@example.com"
40-
}
35+
ownerEmail := helpers.OptionalEnvOrDefault("CODER_WORKSPACE_OWNER_EMAIL", "default@example.com")
4136
_ = rd.Set("owner_email", ownerEmail)
4237

43-
ownerGroupsText := os.Getenv("CODER_WORKSPACE_OWNER_GROUPS")
38+
ownerGroupsText := helpers.OptionalEnv("CODER_WORKSPACE_OWNER_GROUPS")
4439
var ownerGroups []string
4540
if ownerGroupsText != "" {
4641
err := json.Unmarshal([]byte(ownerGroupsText), &ownerGroups)
@@ -50,43 +45,40 @@ func workspaceDataSource() *schema.Resource {
5045
}
5146
_ = rd.Set("owner_groups", ownerGroups)
5247

53-
ownerName := os.Getenv("CODER_WORKSPACE_OWNER_NAME")
54-
if ownerName == "" {
55-
ownerName = "default"
56-
}
48+
ownerName := helpers.OptionalEnvOrDefault("CODER_WORKSPACE_OWNER_NAME", "default")
5749
_ = rd.Set("owner_name", ownerName)
5850

59-
ownerID := os.Getenv("CODER_WORKSPACE_OWNER_ID")
60-
if ownerID == "" {
61-
ownerID = uuid.Nil.String()
62-
}
51+
ownerID := helpers.OptionalEnvOrDefault("CODER_WORKSPACE_OWNER_ID", uuid.Nil.String())
6352
_ = rd.Set("owner_id", ownerID)
6453

65-
ownerOIDCAccessToken := os.Getenv("CODER_WORKSPACE_OWNER_OIDC_ACCESS_TOKEN")
54+
ownerOIDCAccessToken := helpers.OptionalEnv("CODER_WORKSPACE_OWNER_OIDC_ACCESS_TOKEN")
6655
_ = rd.Set("owner_oidc_access_token", ownerOIDCAccessToken)
6756

68-
name := os.Getenv("CODER_WORKSPACE_NAME")
69-
if name == "" {
70-
name = "default"
71-
}
57+
name := helpers.OptionalEnvOrDefault("CODER_WORKSPACE_NAME", "default")
7258
rd.Set("name", name)
7359

74-
sessionToken := os.Getenv("CODER_WORKSPACE_OWNER_SESSION_TOKEN")
60+
sessionToken := helpers.OptionalEnv("CODER_WORKSPACE_OWNER_SESSION_TOKEN")
7561
_ = rd.Set("owner_session_token", sessionToken)
7662

77-
id := os.Getenv("CODER_WORKSPACE_ID")
78-
if id == "" {
79-
id = uuid.NewString()
80-
}
63+
id := helpers.OptionalEnvOrDefault("CODER_WORKSPACE_ID", uuid.NewString())
8164
rd.SetId(id)
8265

83-
templateID := os.Getenv("CODER_WORKSPACE_TEMPLATE_ID")
66+
templateID, err := helpers.RequireEnv("CODER_WORKSPACE_TEMPLATE_ID")
67+
if err != nil {
68+
return diag.Errorf("undefined env: %v", err)
69+
}
8470
_ = rd.Set("template_id", templateID)
8571

86-
templateName := os.Getenv("CODER_WORKSPACE_TEMPLATE_NAME")
72+
templateName, err := helpers.RequireEnv("CODER_WORKSPACE_TEMPLATE_NAME")
73+
if err != nil {
74+
return diag.Errorf("undefined env: %v", err)
75+
}
8776
_ = rd.Set("template_name", templateName)
8877

89-
templateVersion := os.Getenv("CODER_WORKSPACE_TEMPLATE_VERSION")
78+
templateVersion, err := helpers.RequireEnv("CODER_WORKSPACE_TEMPLATE_VERSION")
79+
if err != nil {
80+
return diag.Errorf("undefined env: %v", err)
81+
}
9082
_ = rd.Set("template_version", templateVersion)
9183

9284
config, valid := i.(config)

0 commit comments

Comments
 (0)
Please sign in to comment.