Browse Source

feat(netclient): Add network filter to list command

Adrien Raffin-Caboisse 3 years ago
parent
commit
2c0a470390
2 changed files with 35 additions and 23 deletions
  1. 1 1
      netclient/command/commands.go
  2. 34 22
      netclient/functions/list.go

+ 1 - 1
netclient/command/commands.go

@@ -189,7 +189,7 @@ func Pull(cfg config.ClientConfig) error {
 }
 }
 
 
 func List(cfg config.ClientConfig) error {
 func List(cfg config.ClientConfig) error {
-	err := functions.List()
+	err := functions.List(cfg.Network)
 	return err
 	return err
 }
 }
 
 

+ 34 - 22
netclient/functions/list.go

@@ -28,36 +28,26 @@ type Network struct {
 	Peers       []Peer `json:"peers"`
 	Peers       []Peer `json:"peers"`
 }
 }
 
 
-func List() error {
-	networks, err := ncutils.GetSystemNetworks()
-	if err != nil {
-		return err
-	}
-
+func List(network string) error {
 	nets := []Network{}
 	nets := []Network{}
-	for _, network := range networks {
-		cfg, err := config.ReadConfig(network)
+	var err error
+	var networks []string
+	if network == "all" {
+		networks, err = ncutils.GetSystemNetworks()
 		if err != nil {
 		if err != nil {
-			ncutils.PrintLog(network+": Could not retrieve network configuration.", 1)
 			return err
 			return err
 		}
 		}
-		peers, err := getPeers(network)
+	} else {
+		networks = append(networks, network)
+	}
+
+	for _, network := range networks {
+		net, err := getNetwork(network)
 		if err != nil {
 		if err != nil {
 			ncutils.PrintLog(network+": Could not retrieve network configuration.", 1)
 			ncutils.PrintLog(network+": Could not retrieve network configuration.", 1)
 			return err
 			return err
 		}
 		}
-
-		nets = append(nets, Network{
-			Name:  network,
-			Peers: peers,
-			CurrentNode: Peer{
-				Name:           cfg.Node.Name,
-				Interface:      cfg.Node.Interface,
-				PrivateIPv4:    cfg.Node.Address,
-				PrivateIPv6:    cfg.Node.Address6,
-				PublicEndpoint: cfg.Node.Endpoint,
-			},
-		})
+		nets = append(nets, net)
 	}
 	}
 
 
 	jsoncfg, _ := json.Marshal(struct {
 	jsoncfg, _ := json.Marshal(struct {
@@ -68,6 +58,28 @@ func List() error {
 	return nil
 	return nil
 }
 }
 
 
+func getNetwork(network string) (Network, error) {
+	cfg, err := config.ReadConfig(network)
+	if err != nil {
+		return Network{}, fmt.Errorf("reading configuration for network %v: %w", network, err)
+	}
+	peers, err := getPeers(network)
+	if err != nil {
+		return Network{}, fmt.Errorf("listing peers for network %v: %w", network, err)
+	}
+	return Network{
+		Name:  network,
+		Peers: peers,
+		CurrentNode: Peer{
+			Name:           cfg.Node.Name,
+			Interface:      cfg.Node.Interface,
+			PrivateIPv4:    cfg.Node.Address,
+			PrivateIPv6:    cfg.Node.Address6,
+			PublicEndpoint: cfg.Node.Endpoint,
+		},
+	}, nil
+}
+
 func getPeers(network string) ([]Peer, error) {
 func getPeers(network string) ([]Peer, error) {
 	cfg, err := config.ReadConfig(network)
 	cfg, err := config.ReadConfig(network)
 	if err != nil {
 	if err != nil {