package cmd import ( "fmt" "os" "github.com/spf13/cobra" "github.com/spf13/viper" "git.metaunix.net/metaunix.net/muldap/cmd/group" "git.metaunix.net/metaunix.net/muldap/cmd/ldif" "git.metaunix.net/metaunix.net/muldap/cmd/user" ) func init() { // define global CLI flags rootCmd.PersistentFlags().StringP("host", "H", "ldap.example.com", "LDAP host to perform operations on") rootCmd.PersistentFlags().IntP("port", "p", 389, "TCP port that the LDAP host is listening on") // bind config file values to flags viper.BindPFlag("host", rootCmd.PersistentFlags().Lookup("host")) viper.BindPFlag("port", rootCmd.PersistentFlags().Lookup("port")) // register commands rootCmd.AddCommand(group.GroupCmd, ldif.LdifCmd, user.UserCmd, searchCmd, setupCmd, versionCmd) } // define root command var rootCmd = &cobra.Command{ Use: "muldap", Short: "muldap is Metaunix.net's LDAP management tool", Long: "LDAP management tool for Metaunix.net user and group resources.", Run: func(cmd *cobra.Command, args []string) { fmt.Println("Metaunix.net LDAP tool - available commands are: group, user, search, setup, version") }, } // start CLI app func Execute() { if err := rootCmd.Execute(); err != nil { fmt.Println(err) os.Exit(1) } }