diff --git a/cmd/generate.go b/cmd/generate.go index 1bed7e7..f0d8585 100644 --- a/cmd/generate.go +++ b/cmd/generate.go @@ -34,8 +34,9 @@ var generateCmd = &cobra.Command{ Long: `Generate will create the configs file in the specified folder`, Run: func(cmd *cobra.Command, args []string) { out, _ := cmd.Flags().GetString("output") - id, _ := cmd.Flags().GetInt("id") - err := thePeers.GenerateConfigs(out, id) + id, _ := cmd.Flags().GetInt("network_id") + peername, _ := cmd.Flags().GetString("peer_name") + err := thePeers.GenerateConfigs(out, id, peername) if err != nil { fmt.Println("generate", err) } @@ -45,5 +46,6 @@ var generateCmd = &cobra.Command{ func init() { generateCmd.Flags().StringP("output", "o", "output", "Directory where to output configs.") generateCmd.Flags().IntP("network_id", "i", 0, "ID of the network to generate") + generateCmd.Flags().StringP("peer_name", "p", "", "Generate config for this peer") rootCmd.AddCommand(generateCmd) } diff --git a/wireguard/peers.go b/wireguard/peers.go index ae6cfbb..dabc4ac 100644 --- a/wireguard/peers.go +++ b/wireguard/peers.go @@ -131,13 +131,21 @@ func (p Peers) DeletePeer(pr string) { //GenerateConfigs will generate the Wireguard mesh //configs in the specified folder -func (p Peers) GenerateConfigs(folder string, id int) error { +func (p Peers) GenerateConfigs(folder string, id int, peername string) error { var err error if err = os.MkdirAll(folder, 0775); err != nil { return err } - for i := range p { - err = p.dumpConfig(p[i], folder, id) + if peername == "" { + for i := range p { + err = p.dumpConfig(p[i], folder, id) + } + } else { + for j := range p { + if p[j].Name == peername { + err = p.dumpConfig(p[j], folder, id) + } + } } return err }