initial commit

Signed-off-by: ale <ale@manalejandro.com>
Este commit está contenido en:
ale
2025-11-02 01:39:56 +01:00
commit aff6c82553
Se han modificado 34 ficheros con 4744 adiciones y 0 borrados

118
internal/cmd/proxy.go Archivo normal
Ver fichero

@@ -0,0 +1,118 @@
package cmd
import (
"context"
"fmt"
"github.com/spf13/cobra"
"github.com/yourusername/buque/internal/proxy"
)
var proxyCmd = &cobra.Command{
Use: "proxy",
Short: "Manage nginx-proxy",
Long: `Deploy, remove, and manage the nginx-proxy reverse proxy.`,
}
var proxyDeployCmd = &cobra.Command{
Use: "deploy",
Short: "Deploy nginx-proxy",
Long: `Deploy nginx-proxy with SSL support using Let's Encrypt.`,
RunE: func(cmd *cobra.Command, args []string) error {
cfg := configMgr.GetConfig()
if cfg == nil {
return fmt.Errorf("configuration not loaded")
}
manager, err := proxy.NewNginxManager(cfg.NginxProxy)
if err != nil {
return err
}
defer manager.Close()
ctx := context.Background()
return manager.Deploy(ctx)
},
}
var proxyRemoveCmd = &cobra.Command{
Use: "remove",
Short: "Remove nginx-proxy",
Long: `Stop and remove the nginx-proxy deployment.`,
RunE: func(cmd *cobra.Command, args []string) error {
cfg := configMgr.GetConfig()
if cfg == nil {
return fmt.Errorf("configuration not loaded")
}
manager, err := proxy.NewNginxManager(cfg.NginxProxy)
if err != nil {
return err
}
defer manager.Close()
ctx := context.Background()
return manager.Remove(ctx)
},
}
var proxyStatusCmd = &cobra.Command{
Use: "status",
Short: "Show nginx-proxy status",
Long: `Display the status of nginx-proxy containers.`,
RunE: func(cmd *cobra.Command, args []string) error {
cfg := configMgr.GetConfig()
if cfg == nil {
return fmt.Errorf("configuration not loaded")
}
manager, err := proxy.NewNginxManager(cfg.NginxProxy)
if err != nil {
return err
}
defer manager.Close()
ctx := context.Background()
status, err := manager.Status(ctx)
if err != nil {
return err
}
fmt.Println(status)
return nil
},
}
var proxyExampleCmd = &cobra.Command{
Use: "example <service-name> <virtual-host>",
Short: "Generate example docker-compose.yml",
Long: `Generate an example docker-compose.yml for a service behind nginx-proxy.`,
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
cfg := configMgr.GetConfig()
if cfg == nil {
return fmt.Errorf("configuration not loaded")
}
serviceName := args[0]
virtualHost := args[1]
manager, err := proxy.NewNginxManager(cfg.NginxProxy)
if err != nil {
return err
}
defer manager.Close()
example := manager.GetExampleServiceCompose(serviceName, virtualHost)
fmt.Println(example)
return nil
},
}
func init() {
proxyCmd.AddCommand(proxyDeployCmd)
proxyCmd.AddCommand(proxyRemoveCmd)
proxyCmd.AddCommand(proxyStatusCmd)
proxyCmd.AddCommand(proxyExampleCmd)
}