github.com/pluswing/datasync@v1.1.1-0.20240218052257-9077f6fc4ae3/cmd/root.go (about) 1 package cmd 2 3 import ( 4 "os" 5 6 "github.com/pluswing/datasync/data" 7 "github.com/pluswing/datasync/file" 8 "github.com/spf13/cobra" 9 "github.com/spf13/viper" 10 ) 11 12 var ( 13 cfgFile string 14 setting data.SettingType 15 ) 16 17 var rootCmd = &cobra.Command{ 18 Use: "datasync", 19 Short: "", 20 Long: ``, 21 } 22 23 func Execute() { 24 err := rootCmd.Execute() 25 if err != nil { 26 os.Exit(1) 27 } 28 } 29 30 func init() { 31 cobra.OnInitialize(initConfig) 32 33 rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is ./datasync.yaml)") 34 } 35 36 func initConfig() { 37 if cfgFile != "" { 38 viper.SetConfigFile(cfgFile) 39 } else { 40 dir, err := file.FindCurrentDir() 41 if err != nil { 42 return 43 } 44 viper.AddConfigPath(dir) 45 viper.SetConfigType("yaml") 46 viper.SetConfigName("datasync") 47 } 48 49 err := viper.ReadInConfig() 50 cobra.CheckErr(err) 51 52 err = viper.Unmarshal(&setting) 53 cobra.CheckErr(err) 54 }