updated ezconf

This commit is contained in:
2026-01-21 19:23:12 +11:00
parent 0ceeb37058
commit da6ad0cf2e
4 changed files with 307 additions and 29 deletions

View File

@@ -12,20 +12,20 @@ import (
// PrintEnvVars prints all environment variables to the provided writer
func (cl *ConfigLoader) PrintEnvVars(w io.Writer, showValues bool) error {
if cl.envVars == nil || len(cl.envVars) == 0 {
if len(cl.envVars) == 0 {
return errors.New("no environment variables loaded (did you call Load()?)")
}
// Group variables by their Group field
groups := make(map[string][]EnvVar)
groupOrder := make([]string, 0)
for _, envVar := range cl.envVars {
group := envVar.Group
if group == "" {
group = "Other"
}
if _, exists := groups[group]; !exists {
groupOrder = append(groupOrder, group)
}
@@ -35,7 +35,7 @@ func (cl *ConfigLoader) PrintEnvVars(w io.Writer, showValues bool) error {
// Print variables grouped by section
for _, group := range groupOrder {
vars := groups[group]
// Calculate max name length for alignment within this group
maxNameLen := 0
for _, envVar := range vars {
@@ -51,12 +51,12 @@ func (cl *ConfigLoader) PrintEnvVars(w io.Writer, showValues bool) error {
maxNameLen = nameLen
}
}
// Print group header
fmt.Fprintf(w, "\n%s Configuration\n", group)
fmt.Fprintln(w, strings.Repeat("=", len(group)+14))
fmt.Fprintln(w)
for _, envVar := range vars {
// Build the variable line
var varLine string
@@ -69,10 +69,10 @@ func (cl *ConfigLoader) PrintEnvVars(w io.Writer, showValues bool) error {
} else {
varLine = envVar.Name
}
// Calculate padding for alignment
padding := maxNameLen - len(varLine) + 2
// Print with indentation and alignment
fmt.Fprintf(w, " %s%s# %s", varLine, strings.Repeat(" ", padding), envVar.Description)
@@ -85,7 +85,7 @@ func (cl *ConfigLoader) PrintEnvVars(w io.Writer, showValues bool) error {
fmt.Fprintln(w)
}
}
fmt.Fprintln(w)
return nil
@@ -109,7 +109,7 @@ func (cl *ConfigLoader) GenerateEnvFile(filename string, useCurrentValues bool)
for _, envVar := range cl.envVars {
managedVars[envVar.Name] = true
}
// Collect untracked variables
for _, line := range existingVars {
if line.IsVar && !managedVars[line.Key] {
@@ -118,7 +118,7 @@ func (cl *ConfigLoader) GenerateEnvFile(filename string, useCurrentValues bool)
}
}
}
file, err := os.Create(filename)
if err != nil {
return errors.Wrap(err, "failed to create env file")
@@ -138,13 +138,13 @@ func (cl *ConfigLoader) GenerateEnvFile(filename string, useCurrentValues bool)
// Group variables by their Group field
groups := make(map[string][]EnvVar)
groupOrder := make([]string, 0)
for _, envVar := range cl.envVars {
group := envVar.Group
if group == "" {
group = "Other"
}
if _, exists := groups[group]; !exists {
groupOrder = append(groupOrder, group)
}
@@ -154,12 +154,12 @@ func (cl *ConfigLoader) GenerateEnvFile(filename string, useCurrentValues bool)
// Write variables grouped by section
for _, group := range groupOrder {
vars := groups[group]
// Print group header
fmt.Fprintln(writer)
fmt.Fprintf(writer, "# %s Configuration\n", group)
fmt.Fprintln(writer, strings.Repeat("#", len(group)+15))
for _, envVar := range vars {
// Write comment with description
fmt.Fprintf(writer, "# %s", envVar.Description)
@@ -185,7 +185,7 @@ func (cl *ConfigLoader) GenerateEnvFile(filename string, useCurrentValues bool)
} else {
fmt.Fprintf(writer, "%s=%s\n", envVar.Name, value)
}
fmt.Fprintln(writer)
}
}
@@ -197,7 +197,7 @@ func (cl *ConfigLoader) GenerateEnvFile(filename string, useCurrentValues bool)
fmt.Fprintln(writer, "# These variables were in the original file but are not managed by ezconf")
fmt.Fprintln(writer, strings.Repeat("#", 72))
fmt.Fprintln(writer)
for _, line := range existingUntracked {
fmt.Fprintf(writer, "%s=%s\n", line.Key, line.Value)
}