package env import ( "fmt" "strings" "github.com/bdw/deploy/internal/state" "github.com/spf13/cobra" ) var listCmd = &cobra.Command{ Use: "list ", Short: "List environment variables for an app", Args: cobra.ExactArgs(1), RunE: runList, } func runList(cmd *cobra.Command, args []string) error { name := args[0] st, err := state.Load() if err != nil { return fmt.Errorf("error loading state: %w", err) } host, _ := cmd.Flags().GetString("host") if host == "" { host = st.GetDefaultHost() } if host == "" { return fmt.Errorf("--host is required") } app, err := st.GetApp(host, name) if err != nil { return err } if app.Type != "app" { return fmt.Errorf("env is only available for apps, not static sites") } fmt.Printf("Environment variables for %s:\n\n", name) if len(app.Env) == 0 { fmt.Println(" (none)") } else { for k, v := range app.Env { display := v if isSensitive(k) { display = "***" } fmt.Printf(" %s=%s\n", k, display) } } return nil } func isSensitive(key string) bool { key = strings.ToLower(key) sensitiveWords := []string{"key", "secret", "password", "token", "api"} for _, word := range sensitiveWords { if strings.Contains(key, word) { return true } } return false }