// Command pburl prints the Puppetboard node-page URL for each host it is given. // // It reads hostnames from its arguments or from piped node-lookup output and // emits " " per line: // // node-lookup -R | pburl // pburl host1.example.net host2.example.net package main import ( "fmt" "os" "node-lookup/internal/puppet" "github.com/spf13/cobra" ) var version = "dev" func main() { cfg, err := puppet.Load() if err != nil { fmt.Fprintln(os.Stderr, "config error:", err) os.Exit(1) } var boardURL string root := &cobra.Command{ Use: "pburl [host...]", Short: "Print the Puppetboard node-page URL for each host.", Long: "Reads hostnames from arguments or piped node-lookup output and prints\n" + "' ' for each. Example: node-lookup -R | pburl", Args: cobra.ArbitraryArgs, SilenceUsage: true, RunE: func(cmd *cobra.Command, args []string) error { if cmd.Flags().Changed("puppetboard-url") { cfg.PuppetboardURL = boardURL } hosts := puppet.ReadHosts(os.Stdin, args) if len(hosts) == 0 { return fmt.Errorf("no hosts given (pass as arguments or pipe node-lookup output)") } for _, h := range hosts { fmt.Printf("%s %s\n", h, puppet.HostPageURL(cfg.PuppetboardURL, h)) } return nil }, } root.Flags().StringVar(&boardURL, "puppetboard-url", cfg.PuppetboardURL, "Puppetboard base URL (overrides config and NODE_LOOKUP_PUPPETBOARD_URL)") root.AddCommand(&cobra.Command{ Use: "version", Short: "Print the version", Run: func(cmd *cobra.Command, args []string) { fmt.Println(version) }, SilenceUsage: true, }) if err := root.Execute(); err != nil { os.Exit(1) } }