Files
coolify-cli/cmd/server/get.go
T

76 lines
1.8 KiB
Go

package server
import (
"fmt"
"github.com/spf13/cobra"
"github.com/coollabsio/coolify-cli/internal/cli"
"github.com/coollabsio/coolify-cli/internal/output"
"github.com/coollabsio/coolify-cli/internal/service"
)
// NewGetCommand creates the get command
func NewGetCommand() *cobra.Command {
cmd := &cobra.Command{
Use: "get <uuid>",
Args: cli.ExactArgs(1, "<uuid>"),
Short: "Get server details by uuid",
RunE: func(cmd *cobra.Command, args []string) error {
ctx := cmd.Context()
// Get API client
client, err := cli.GetAPIClient(cmd)
if err != nil {
return fmt.Errorf("failed to get API client: %w", err)
}
// Use service layer
serverSvc := service.NewServerService(client)
uuid := args[0]
// Get format flags
format, _ := cmd.Flags().GetString("format")
showSensitive, _ := cmd.Flags().GetBool("show-sensitive")
withResources, _ := cmd.Flags().GetBool("resources")
var data interface{}
if withResources {
resources, err := serverSvc.GetResources(ctx, uuid)
if err != nil {
return fmt.Errorf("failed to get server resources: %w", err)
}
data = resources.Resources
} else {
server, err := serverSvc.Get(ctx, uuid)
if err != nil {
return fmt.Errorf("failed to get server: %w", err)
}
data = server
}
// Use output formatter
formatter, err := output.NewFormatter(format, output.Options{
ShowSensitive: showSensitive,
})
if err != nil {
return err
}
if err := formatter.Format(data); err != nil {
return err
}
if !showSensitive && format == output.FormatTable && !withResources {
fmt.Println("\nNote: Use -s to show sensitive information.")
}
return nil
},
}
cmd.Flags().Bool("resources", false, "With resources")
return cmd
}