Skip to content

Commit

Permalink
Merge pull request #29 from antham/add-error
Browse files Browse the repository at this point in the history
Add an error when the env already exists
  • Loading branch information
antham authored Jul 16, 2024
2 parents 7e548b3 + ba10549 commit 67c2ec9
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 10 deletions.
24 changes: 16 additions & 8 deletions internal/workspace/workspace.go
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,9 @@ func (s WorkspaceManager) CreateEnv(name string, env string) error {
if err != nil {
return err
}
if s.hasEnv(name, env) {
return fmt.Errorf(`env "%s" already exists`, name)
}
return s.createFile(s.resolveEnvFile(name, env))
}

Expand Down Expand Up @@ -272,6 +275,16 @@ func (s WorkspaceManager) GetConfigDir() string {
return s.configDir
}

func (s WorkspaceManager) CreateEnvVariableStatement(name string, value string) string {
switch s.shell {
case bash, sh, zsh:
return fmt.Sprintf("export %s=%s", name, value)
case fish:
return fmt.Sprintf("set -x -g %s %s", name, value)
}
return ""
}

func (s WorkspaceManager) appendLoadStatement(name string, env string, functionAndArgs []string) []string {
data := []string{}
data = append(data, s.CreateEnvVariableStatement(fmt.Sprintf("%s_NAME", envVariablePrefix), name))
Expand Down Expand Up @@ -405,14 +418,9 @@ func (s WorkspaceManager) getViper(name string) *viper.Viper {
return v
}

func (s WorkspaceManager) CreateEnvVariableStatement(name string, value string) string {
switch s.shell {
case bash, sh, zsh:
return fmt.Sprintf("export %s=%s", name, value)
case fish:
return fmt.Sprintf("set -x -g %s %s", name, value)
}
return ""
func (s WorkspaceManager) hasEnv(name string, env string) bool {
_, err := os.Stat(s.resolveEnvFile(name, env))
return !os.IsNotExist(err)
}

func (s WorkspaceManager) hasWorkspace(name string) bool {
Expand Down
12 changes: 10 additions & 2 deletions internal/workspace/workspace_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -338,15 +338,23 @@ func TestCreateEnv(t *testing.T) {
assert.Equal(t, "functions.bash", functionFile.Name())
},
},
{
"Creating env twice fails",
func(t *testing.T, w WorkspaceManager) {
assert.NoError(t, w.CreateEnv("test", "prod"))
},
func(t *testing.T, err error) {
assert.Error(t, err)
},
},
}
for _, s := range scenarios {
t.Run(s.name, func(t *testing.T) {
os.RemoveAll(config.getPath(t))
w, err := NewWorkspaceManager(WithEditor("emacs", "emacs"), WithShellPath("/bin/bash"), WithConfigPath(config.getPath(t)))
assert.NoError(t, err)
s.setup(t, w)
assert.NoError(t, err)
assert.NoError(t, w.Create("test", project.getPath(t)))
s.setup(t, w)
s.test(t, w.CreateEnv("test", "prod"))
})
}
Expand Down

0 comments on commit 67c2ec9

Please sign in to comment.