forked from toolshed/abra
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package server
 | 
						|
 | 
						|
import (
 | 
						|
	"strings"
 | 
						|
 | 
						|
	"coopcloud.tech/abra/pkg/config"
 | 
						|
	"coopcloud.tech/abra/pkg/context"
 | 
						|
	"coopcloud.tech/abra/pkg/formatter"
 | 
						|
	"github.com/docker/cli/cli/connhelper/ssh"
 | 
						|
	"github.com/sirupsen/logrus"
 | 
						|
	"github.com/urfave/cli/v2"
 | 
						|
)
 | 
						|
 | 
						|
var serverListCommand = &cli.Command{
 | 
						|
	Name:      "list",
 | 
						|
	Aliases:   []string{"ls"},
 | 
						|
	Usage:     "List managed servers",
 | 
						|
	ArgsUsage: " ",
 | 
						|
	HideHelp:  true,
 | 
						|
	Action: func(c *cli.Context) error {
 | 
						|
		dockerContextStore := context.NewDefaultDockerContextStore()
 | 
						|
		contexts, err := dockerContextStore.Store.List()
 | 
						|
		if err != nil {
 | 
						|
			logrus.Fatal(err)
 | 
						|
		}
 | 
						|
 | 
						|
		tableColumns := []string{"name", "host", "user", "port"}
 | 
						|
		table := formatter.CreateTable(tableColumns)
 | 
						|
		defer table.Render()
 | 
						|
 | 
						|
		serverNames, err := config.ReadServerNames()
 | 
						|
		if err != nil {
 | 
						|
			logrus.Fatal(err)
 | 
						|
		}
 | 
						|
 | 
						|
		for _, serverName := range serverNames {
 | 
						|
			var row []string
 | 
						|
			for _, ctx := range contexts {
 | 
						|
				endpoint, err := context.GetContextEndpoint(ctx)
 | 
						|
				if err != nil && strings.Contains(err.Error(), "does not exist") {
 | 
						|
					// No local context found, we can continue safely
 | 
						|
					continue
 | 
						|
				}
 | 
						|
				if ctx.Name == serverName {
 | 
						|
					sp, err := ssh.ParseURL(endpoint)
 | 
						|
					if err != nil {
 | 
						|
						logrus.Fatal(err)
 | 
						|
					}
 | 
						|
					row = []string{serverName, sp.Host, sp.User, sp.Port}
 | 
						|
				}
 | 
						|
			}
 | 
						|
			if len(row) == 0 {
 | 
						|
				if serverName == "default" {
 | 
						|
					row = []string{serverName, "local", "n/a", "n/a"}
 | 
						|
				} else {
 | 
						|
					row = []string{serverName, "unknown", "unknown", "unknown"}
 | 
						|
				}
 | 
						|
			}
 | 
						|
			table.Append(row)
 | 
						|
		}
 | 
						|
 | 
						|
		return nil
 | 
						|
	},
 | 
						|
}
 |