Skip to content

Commit 4803374

Browse files
committed
refactor: move provider-scoped env vars to pkg/config/env.go
Move WORKSPACE_*, MACHINE_*, PROVIDER_*, LOFT_*, and DEVCONTAINER_ID constants from pkg/provider/env.go to the centralized pkg/config/env.go with EnvProviderXxx naming convention. Update all consumers.
1 parent 91f1bda commit 4803374

File tree

10 files changed

+101
-68
lines changed

10 files changed

+101
-68
lines changed

cmd/pro/provider/create/workspace.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99

1010
managementv1 "github.com/loft-sh/api/v4/pkg/apis/management/v1"
1111
"github.com/skevetter/devpod/cmd/pro/flags"
12+
"github.com/skevetter/devpod/pkg/config"
1213
"github.com/skevetter/devpod/pkg/platform"
1314
"github.com/skevetter/devpod/pkg/platform/client"
1415
"github.com/skevetter/devpod/pkg/platform/form"
@@ -81,10 +82,10 @@ func (cmd *WorkspaceCmd) Run(
8182
}
8283

8384
// Info through env, right now only used by CLI
84-
workspaceID := os.Getenv(provider.WorkspaceID)
85-
workspaceUID := os.Getenv(provider.WorkspaceUID)
86-
workspaceFolder := os.Getenv(provider.WorkspaceFolder)
87-
workspaceContext := os.Getenv(provider.WorkspaceContext)
85+
workspaceID := os.Getenv(config.EnvProviderWorkspaceID)
86+
workspaceUID := os.Getenv(config.EnvProviderWorkspaceUID)
87+
workspaceFolder := os.Getenv(config.EnvProviderWorkspaceFolder)
88+
workspaceContext := os.Getenv(config.EnvProviderWorkspaceContext)
8889
workspacePicture := os.Getenv(platform.WorkspacePictureEnv)
8990
workspaceSource := os.Getenv(platform.WorkspaceSourceEnv)
9091
if workspaceUID == "" || workspaceID == "" || workspaceFolder == "" {

cmd/pro/provider/get/version.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@ func (cmd *VersionCmd) Run(
6363
return err
6464
}
6565

66-
providerContext := os.Getenv(provider.ProviderContext)
66+
providerContext := os.Getenv(config.EnvProviderContext)
6767
if providerContext == "" {
6868
providerContext = config.DefaultContext
6969
}
70-
providerID := os.Getenv(provider.ProviderID)
70+
providerID := os.Getenv(config.EnvProviderID)
7171
if providerID == "" {
7272
return fmt.Errorf("provider ID %s not defined", providerID)
7373
}

cmd/pro/provider/list/workspaces.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import (
88

99
managementv1 "github.com/loft-sh/api/v4/pkg/apis/management/v1"
1010
"github.com/skevetter/devpod/cmd/pro/flags"
11+
"github.com/skevetter/devpod/pkg/config"
1112
"github.com/skevetter/devpod/pkg/platform"
1213
"github.com/skevetter/devpod/pkg/platform/client"
1314
"github.com/skevetter/devpod/pkg/platform/labels"
1415
"github.com/skevetter/devpod/pkg/platform/project"
15-
"github.com/skevetter/devpod/pkg/provider"
1616
"github.com/skevetter/log"
1717
"github.com/spf13/cobra"
1818
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -66,7 +66,7 @@ func (cmd *WorkspacesCmd) Run(ctx context.Context) error {
6666
)
6767
}
6868

69-
filterByOwner := os.Getenv(provider.LoftFilterByOwner) == "true"
69+
filterByOwner := os.Getenv(config.EnvLoftFilterByOwner) == "true"
7070
workspaces := []*managementv1.DevPodWorkspaceInstance{}
7171
for _, p := range projectList.Items {
7272
ns := project.ProjectNamespace(p.GetName())

cmd/pro/provider/watch/workspaces.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func (cmd *WorkspacesCmd) Run(
7878
cmd.Context = config.DefaultContext
7979
}
8080

81-
projectName := os.Getenv(provider.LoftProject)
81+
projectName := os.Getenv(config.EnvLoftProject)
8282
if projectName == "" {
8383
return fmt.Errorf("project name not found")
8484
}
@@ -104,7 +104,7 @@ func (cmd *WorkspacesCmd) Run(
104104
workspaceInformer := factory.Management().V1().DevPodWorkspaceInstances()
105105

106106
self := baseClient.Self()
107-
filterByOwner := os.Getenv(provider.LoftFilterByOwner) == "true"
107+
filterByOwner := os.Getenv(config.EnvLoftFilterByOwner) == "true"
108108
instanceStore := newStore(workspaceInformer, self, cmd.Context, filterByOwner, cmd.Log)
109109

110110
_, err = workspaceInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{

cmd/pro/version.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ func (cmd *VersionCmd) Run(
6060
providerConfig *provider.ProviderConfig,
6161
) error {
6262
opts := devPodConfig.ProviderOptions(providerConfig.Name)
63-
opts[provider.ProviderID] = config.OptionValue{Value: providerConfig.Name}
64-
opts[provider.ProviderContext] = config.OptionValue{Value: cmd.Context}
63+
opts[config.EnvProviderID] = config.OptionValue{Value: providerConfig.Name}
64+
opts[config.EnvProviderContext] = config.OptionValue{Value: cmd.Context}
6565

6666
var buf bytes.Buffer
6767
// ignore --debug because we tunnel json through stdio

cmd/pro/watch_workspaces.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ func (cmd *WatchWorkspacesCmd) Run(
7272
defer cancel()
7373

7474
if cmd.FilterByOwner {
75-
opts[provider.LoftFilterByOwner] = config.OptionValue{Value: "true"}
75+
opts[config.EnvLoftFilterByOwner] = config.OptionValue{Value: "true"}
7676
}
77-
opts[provider.LoftProject] = config.OptionValue{Value: cmd.Project}
77+
opts[config.EnvLoftProject] = config.OptionValue{Value: cmd.Project}
7878

7979
sigChan := make(chan os.Signal, 1)
8080
signal.Notify(sigChan, syscall.SIGINT)

pkg/config/env.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,60 @@ const (
8383

8484
// EnvProviderPrefix is the prefix for provider-specific option env vars (append provider name + "_").
8585
EnvProviderPrefix = EnvPrefix + "PROVIDER_"
86+
87+
// --- Provider-scoped env vars (set when running provider commands) ---.
88+
89+
// EnvProviderWorkspaceID is the workspace identifier passed to providers.
90+
EnvProviderWorkspaceID = "WORKSPACE_ID"
91+
92+
// EnvProviderWorkspaceUID is the workspace UID passed to providers.
93+
EnvProviderWorkspaceUID = "WORKSPACE_UID"
94+
95+
// EnvProviderWorkspacePicture is the workspace picture URL passed to providers.
96+
EnvProviderWorkspacePicture = "WORKSPACE_PICTURE"
97+
98+
// EnvProviderWorkspaceFolder is the workspace folder path passed to providers.
99+
EnvProviderWorkspaceFolder = "WORKSPACE_FOLDER"
100+
101+
// EnvProviderWorkspaceContext is the workspace context passed to providers.
102+
EnvProviderWorkspaceContext = "WORKSPACE_CONTEXT"
103+
104+
// EnvProviderWorkspaceOrigin is the workspace origin passed to providers.
105+
EnvProviderWorkspaceOrigin = "WORKSPACE_ORIGIN"
106+
107+
// EnvProviderWorkspaceSource is the workspace source passed to providers.
108+
EnvProviderWorkspaceSource = "WORKSPACE_SOURCE"
109+
110+
// EnvProviderWorkspaceProvider is the workspace provider name passed to providers.
111+
EnvProviderWorkspaceProvider = "WORKSPACE_PROVIDER"
112+
113+
// EnvProviderMachineID is the machine identifier passed to providers.
114+
EnvProviderMachineID = "MACHINE_ID"
115+
116+
// EnvProviderMachineContext is the machine context passed to providers.
117+
EnvProviderMachineContext = "MACHINE_CONTEXT"
118+
119+
// EnvProviderMachineFolder is the machine folder path passed to providers.
120+
EnvProviderMachineFolder = "MACHINE_FOLDER"
121+
122+
// EnvProviderMachineProvider is the machine provider name passed to providers.
123+
EnvProviderMachineProvider = "MACHINE_PROVIDER"
124+
125+
// EnvProviderID is the provider identifier passed to providers.
126+
EnvProviderID = "PROVIDER_ID"
127+
128+
// EnvProviderContext is the provider context passed to providers.
129+
EnvProviderContext = "PROVIDER_CONTEXT"
130+
131+
// EnvProviderFolder is the provider folder path passed to providers.
132+
EnvProviderFolder = "PROVIDER_FOLDER"
133+
134+
// EnvLoftProject is the Loft project name for pro features.
135+
EnvLoftProject = "LOFT_PROJECT"
136+
137+
// EnvLoftFilterByOwner enables filtering by owner in Loft.
138+
EnvLoftFilterByOwner = "LOFT_FILTER_BY_OWNER"
139+
140+
// EnvDevcontainerID is the devcontainer identifier.
141+
EnvDevcontainerID = "DEVCONTAINER_ID"
86142
)

pkg/driver/custom/custom.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ func (c *customDriver) runCommand(
313313
if err != nil {
314314
return err
315315
}
316-
environ = append(environ, provider.DevcontainerID+"="+workspaceId)
316+
environ = append(environ, pkgconfig.EnvDevcontainerID+"="+workspaceId)
317317
environ = append(environ, extraEnv...)
318318

319319
// set debug level

pkg/provider/env.go

Lines changed: 28 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -12,37 +12,6 @@ import (
1212
log2 "github.com/skevetter/log"
1313
)
1414

15-
const (
16-
// workspace.
17-
WorkspaceID = "WORKSPACE_ID"
18-
WorkspaceUID = "WORKSPACE_UID"
19-
WorkspacePicture = "WORKSPACE_PICTURE"
20-
WorkspaceFolder = "WORKSPACE_FOLDER"
21-
WorkspaceContext = "WORKSPACE_CONTEXT"
22-
WorkspaceOrigin = "WORKSPACE_ORIGIN"
23-
WorkspaceSourceEnv = "WORKSPACE_SOURCE"
24-
WorkspaceProvider = "WORKSPACE_PROVIDER"
25-
26-
// machine.
27-
MachineID = "MACHINE_ID"
28-
MachineContext = "MACHINE_CONTEXT"
29-
MachineFolder = "MACHINE_FOLDER"
30-
MachineProvider = "MACHINE_PROVIDER"
31-
32-
// provider.
33-
ProviderID = "PROVIDER_ID"
34-
ProviderContext = "PROVIDER_CONTEXT"
35-
ProviderFolder = "PROVIDER_FOLDER"
36-
37-
// pro.
38-
LoftProject = "LOFT_PROJECT"
39-
LoftFilterByOwner = "LOFT_FILTER_BY_OWNER"
40-
)
41-
42-
const (
43-
DevcontainerID = "DEVCONTAINER_ID"
44-
)
45-
4615
func combineOptions(
4716
resolvedOptions map[string]config.OptionValue,
4817
otherOptions map[string]config.OptionValue,
@@ -95,34 +64,39 @@ func ToOptionsWorkspace(workspace *Workspace) map[string]string {
9564
retVars := map[string]string{}
9665
if workspace != nil {
9766
if workspace.ID != "" {
98-
retVars[WorkspaceID] = workspace.ID
67+
retVars[config.EnvProviderWorkspaceID] = workspace.ID
9968
}
10069
if workspace.UID != "" {
101-
retVars[WorkspaceUID] = workspace.UID
70+
retVars[config.EnvProviderWorkspaceUID] = workspace.UID
10271
}
103-
retVars[WorkspaceFolder], _ = GetWorkspaceDir(workspace.Context, workspace.ID)
104-
retVars[WorkspaceFolder] = filepath.ToSlash(retVars[WorkspaceFolder])
72+
retVars[config.EnvProviderWorkspaceFolder], _ = GetWorkspaceDir(
73+
workspace.Context,
74+
workspace.ID,
75+
)
76+
retVars[config.EnvProviderWorkspaceFolder] = filepath.ToSlash(
77+
retVars[config.EnvProviderWorkspaceFolder],
78+
)
10579
if workspace.Context != "" {
106-
retVars[WorkspaceContext] = workspace.Context
107-
retVars[MachineContext] = workspace.Context
80+
retVars[config.EnvProviderWorkspaceContext] = workspace.Context
81+
retVars[config.EnvProviderMachineContext] = workspace.Context
10882
}
10983
if workspace.Origin != "" {
110-
retVars[WorkspaceOrigin] = filepath.ToSlash(workspace.Origin)
84+
retVars[config.EnvProviderWorkspaceOrigin] = filepath.ToSlash(workspace.Origin)
11185
}
11286
if workspace.Picture != "" {
113-
retVars[WorkspacePicture] = workspace.Picture
87+
retVars[config.EnvProviderWorkspacePicture] = workspace.Picture
11488
}
115-
retVars[WorkspaceSourceEnv] = workspace.Source.String()
89+
retVars[config.EnvProviderWorkspaceSource] = workspace.Source.String()
11690
if workspace.Provider.Name != "" {
117-
retVars[WorkspaceProvider] = workspace.Provider.Name
91+
retVars[config.EnvProviderWorkspaceProvider] = workspace.Provider.Name
11892
}
11993
if workspace.Machine.ID != "" {
120-
retVars[MachineID] = workspace.Machine.ID
94+
retVars[config.EnvProviderMachineID] = workspace.Machine.ID
12195
machineDir, _ := GetMachineDir(workspace.Context, workspace.Machine.ID)
122-
retVars[MachineFolder] = filepath.ToSlash(machineDir)
96+
retVars[config.EnvProviderMachineFolder] = filepath.ToSlash(machineDir)
12397
}
12498
if workspace.Pro != nil && workspace.Pro.Project != "" {
125-
retVars[LoftProject] = workspace.Pro.Project
99+
retVars[config.EnvLoftProject] = workspace.Pro.Project
126100
}
127101
maps.Copy(retVars, GetBaseEnvironment(workspace.Context, workspace.Provider.Name))
128102
}
@@ -133,15 +107,17 @@ func ToOptionsMachine(machine *Machine) map[string]string {
133107
retVars := map[string]string{}
134108
if machine != nil {
135109
if machine.ID != "" {
136-
retVars[MachineID] = machine.ID
110+
retVars[config.EnvProviderMachineID] = machine.ID
137111
}
138-
retVars[MachineFolder], _ = GetMachineDir(machine.Context, machine.ID)
139-
retVars[MachineFolder] = filepath.ToSlash(retVars[MachineFolder])
112+
retVars[config.EnvProviderMachineFolder], _ = GetMachineDir(machine.Context, machine.ID)
113+
retVars[config.EnvProviderMachineFolder] = filepath.ToSlash(
114+
retVars[config.EnvProviderMachineFolder],
115+
)
140116
if machine.Context != "" {
141-
retVars[MachineContext] = machine.Context
117+
retVars[config.EnvProviderMachineContext] = machine.Context
142118
}
143119
if machine.Provider.Name != "" {
144-
retVars[MachineProvider] = machine.Provider.Name
120+
retVars[config.EnvProviderMachineProvider] = machine.Provider.Name
145121
}
146122
maps.Copy(retVars, GetBaseEnvironment(machine.Context, machine.Provider.Name))
147123
}
@@ -180,10 +156,10 @@ func GetBaseEnvironment(context, provider string) map[string]string {
180156
retVars[config.EnvBinaryPath] = filepath.ToSlash(devPodBinary)
181157
retVars[config.EnvOS] = runtime.GOOS
182158
retVars[config.EnvArch] = runtime.GOARCH
183-
retVars[ProviderID] = provider
184-
retVars[ProviderContext] = context
159+
retVars[config.EnvProviderID] = provider
160+
retVars[config.EnvProviderContext] = context
185161
providerFolder, _ := GetProviderDir(context, provider)
186-
retVars[ProviderFolder] = filepath.ToSlash(providerFolder)
162+
retVars[config.EnvProviderFolder] = filepath.ToSlash(providerFolder)
187163
retVars[config.EnvLogLevel] = log2.Default.GetLevel().String()
188164
return retVars
189165
}

pkg/workspace/list.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ func listInstancesProxyProvider(
363363
log log.Logger,
364364
) ([]managementv1.DevPodWorkspaceInstance, error) {
365365
opts := devPodConfig.ProviderOptions(provider)
366-
opts[providerpkg.LoftFilterByOwner] = config.OptionValue{Value: "true"}
366+
opts[config.EnvLoftFilterByOwner] = config.OptionValue{Value: "true"}
367367
var stdout bytes.Buffer
368368
var stderr bytes.Buffer
369369

0 commit comments

Comments
 (0)