feat: add current environment tracker

This commit is contained in:
2025-09-25 23:26:35 +05:30
parent 645418fe79
commit 54c23bad6f
4 changed files with 62 additions and 24 deletions

View File

@@ -71,6 +71,10 @@ var createCmd = &cobra.Command{
env := utils.Environment{Name: environment, ProjectID: dbProject.ID, Data: utils.ParseEnv(string(envFile))}
utils.DB.Create(&env)
envy.Set("envy.current", environment)
err = utils.WriteEnvy(envy)
utils.StopIfErr(err)
fmt.Printf("Created environment %s for project %s.\n", environment, project)
}
@@ -127,7 +131,7 @@ var createCmd = &cobra.Command{
filePath := path.Join(cwd, "envy.toml")
err = os.WriteFile(filePath, []byte(fmt.Sprintf("[envy]\nproject = \"%s\"\nenv = \"%s\"\n", project, environment)), 0644)
err = os.WriteFile(filePath, []byte(fmt.Sprintf("[envy]\nproject = \"%s\"\nenv = \"%s\"\ncurrent = \"%s\"\n", project, environment, environment)), 0644)
if err != nil {
log.Println("Error creating envy.toml file:", err)
return

View File

@@ -21,6 +21,7 @@ var listCmd = &cobra.Command{
project := envy.Get("envy.project").(string)
pinned := envy.Get("envy.env").(string)
current := envy.Get("envy.current").(string)
if project == "" {
utils.ErrPrint("Project name is empty. envy.toml file might have been modified.")
@@ -45,12 +46,17 @@ var listCmd = &cobra.Command{
}
pinStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("#0FF"))
currentStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("#0F0"))
for _, en := range envs {
extra := ""
if en.Name == pinned {
fmt.Println(" * " + en.Name + pinStyle.Render(" [pinned]"))
} else {
fmt.Println(" * " + en.Name)
extra += pinStyle.Render("[+]")
}
if en.Name == current {
extra += currentStyle.Render("[*]")
}
fmt.Printf(" • %s %s\n", en.Name, extra)
}
},
}

View File

@@ -24,6 +24,7 @@ var switchCmd = &cobra.Command{
utils.StopIfErr(err)
project := envy.Get("envy.project").(string)
current := envy.Get("envy.current").(string)
dbProject, err := utils.GetProject(project)
utils.StopIfErr(err)
@@ -35,6 +36,13 @@ var switchCmd = &cobra.Command{
envs, err := utils.GetEnvironments(dbProject.ID)
utils.StopIfErr(err)
if len(envs) == 2 {
for _, en := range envs {
if en.Name != current {
env = en.Name
}
}
} else {
form := huh.NewForm(
huh.NewGroup(
huh.NewSelect[string]().
@@ -57,6 +65,7 @@ var switchCmd = &cobra.Command{
return
}
}
}
envs, err := utils.GetEnvironments(dbProject.ID)
utils.StopIfErr(err)
@@ -72,6 +81,10 @@ var switchCmd = &cobra.Command{
utils.StopIfErr(err)
os.WriteFile(path.Join(cwd, ".env"), []byte(selectedEnv.Data), 0744)
envy.Set("envy.current", env)
err = utils.WriteEnvy(envy)
utils.StopIfErr(err)
fmt.Printf("Switched to environment %v.\n", env)
},
}

View File

@@ -44,6 +44,21 @@ func GetEnvy() (*toml.Tree, error) {
}
}
func WriteEnvy(tree *toml.Tree) error {
data, err := tree.Marshal()
if err != nil {
return err
}
cwd, err := os.Getwd()
if err != nil {
return err
}
os.WriteFile(path.Join(cwd, "envy.toml"), data, 0744)
return nil
}
func GetProject(name string) (Project, error) {
InitDb()
@@ -106,7 +121,7 @@ func ParseEnv(env string) string {
}
var comment = ""
if !enabled {
comment = "# "
comment = "#"
}
envs += fmt.Sprintf("%v%v=%v\n", comment, key, value)
}