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  }