Add newproject command and fix template bugs
- Add newproject, ssh, templates commands for full project scaffolding - Add homelab SSH, Caddy, port, and proxy_host fields to Config - Fix dotEnvExample: use container-internal port (3000/8000/8080) not host port - Fix caddySnippet: use configurable proxy_host instead of localhost - Fix dockerComposeTemplate: add build: path so image-less deploys work - Commit gtea.exe binary
This commit is contained in:
@@ -24,6 +24,32 @@ var configCmd = &cobra.Command{
|
||||
cfg.Username = prompt(reader, fmt.Sprintf("Username [%s]", cfg.Username), cfg.Username)
|
||||
cfg.Token = prompt(reader, fmt.Sprintf("API Token [%s]", maskToken(cfg.Token)), cfg.Token)
|
||||
|
||||
fmt.Println("\n--- Homelab / beepc ---")
|
||||
cfg.SSHHost = prompt(reader, fmt.Sprintf("SSH host (e.g. beepc) [%s]", cfg.SSHHost), cfg.SSHHost)
|
||||
cfg.SSHUser = prompt(reader, fmt.Sprintf("SSH user [%s]", cfg.SSHUser), cfg.SSHUser)
|
||||
cfg.ProjectsDir = promptDefault(reader, fmt.Sprintf("Projects dir on host [%s]", cfg.ProjectsDir), cfg.ProjectsDir, "~/projects")
|
||||
cfg.HomelabDir = promptDefault(reader, fmt.Sprintf("Homelab repo dir on host [%s]", cfg.HomelabDir), cfg.HomelabDir, "~/homelab")
|
||||
proxyDefault := cfg.ProxyHost
|
||||
if proxyDefault == "" {
|
||||
proxyDefault = cfg.SSHHost
|
||||
}
|
||||
cfg.ProxyHost = promptDefault(reader, fmt.Sprintf("Proxy host for Caddy (IP/hostname VPS uses to reach beepc) [%s]", proxyDefault), cfg.ProxyHost, proxyDefault)
|
||||
|
||||
fmt.Println("\n--- Caddy ---")
|
||||
cfg.CaddyConfDir = promptDefault(reader, fmt.Sprintf("Caddy conf.d dir [%s]", cfg.CaddyConfDir), cfg.CaddyConfDir, "~/caddy/conf.d")
|
||||
cfg.CaddyReloadCmd = promptDefault(reader, fmt.Sprintf("Caddy reload command [%s]", cfg.CaddyReloadCmd), cfg.CaddyReloadCmd, "sudo caddy reload")
|
||||
cfg.Domain = promptDefault(reader, fmt.Sprintf("Base domain [%s]", cfg.Domain), cfg.Domain, "sketchferret.com")
|
||||
|
||||
fmt.Println("\n--- Port assignment ---")
|
||||
portStr := ""
|
||||
if cfg.PortStart != 0 {
|
||||
portStr = fmt.Sprintf("%d", cfg.PortStart)
|
||||
}
|
||||
portInput := promptDefault(reader, fmt.Sprintf("Port range start [%s]", portStr), portStr, "8200")
|
||||
if p, err := fmt.Sscanf(portInput, "%d", &cfg.PortStart); p == 0 || err != nil {
|
||||
cfg.PortStart = 8200
|
||||
}
|
||||
|
||||
if err := saveConfig(cfg); err != nil {
|
||||
return fmt.Errorf("saving config: %w", err)
|
||||
}
|
||||
@@ -42,6 +68,15 @@ func prompt(reader *bufio.Reader, label, fallback string) string {
|
||||
return input
|
||||
}
|
||||
|
||||
// promptDefault returns fallback if input is empty, otherwise defaultVal if fallback is also empty.
|
||||
func promptDefault(reader *bufio.Reader, label, fallback, defaultVal string) string {
|
||||
result := prompt(reader, label, fallback)
|
||||
if result == "" {
|
||||
return defaultVal
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func maskToken(t string) string {
|
||||
if len(t) < 4 {
|
||||
return "****"
|
||||
|
||||
Reference in New Issue
Block a user