func initConfig()

in cmd/root.go [70:170]


func initConfig() {
	viper.SetDefault("srcType", "Amazon_S3")
	viper.SetDefault("destStorageClass", "STANDARD")
	viper.SetDefault("srcPrefix", "")
	viper.SetDefault("srcPrefixList", "")
	viper.SetDefault("srcCredential", "")
	viper.SetDefault("srcEndpoint", "")
	viper.SetDefault("destPrefix", "")
	viper.SetDefault("destCredential", "")
	viper.SetDefault("destAcl", "bucket-owner-full-control")

	viper.SetDefault("options.chunkSize", dth.DefaultChunkSize)
	viper.SetDefault("options.multipartThreshold", dth.DefaultMultipartThreshold)
	viper.SetDefault("options.maxKeys", dth.DefaultMaxKeys)
	viper.SetDefault("options.messageBatchSize", dth.DefaultMessageBatchSize)
	viper.SetDefault("options.finderDepth", dth.DefaultFinderDepth)
	viper.SetDefault("options.finderNumber", dth.DefaultFinderNumber)
	viper.SetDefault("options.workerNumber", dth.DefaultWorkerNumber)
	viper.SetDefault("options.includeMetadata", false)

	viper.BindEnv("srcType", "SOURCE_TYPE")
	viper.BindEnv("srcBucket", "SRC_BUCKET")
	viper.BindEnv("srcPrefix", "SRC_PREFIX")
	viper.BindEnv("srcPrefixList", "SRC_PREFIX_LIST")
	viper.BindEnv("srcRegion", "SRC_REGION")
	viper.BindEnv("srcEndpoint", "SRC_ENDPOINT")
	viper.BindEnv("srcCredential", "SRC_CREDENTIALS")
	viper.BindEnv("srcInCurrentAccount", "SRC_IN_CURRENT_ACCOUNT")
	viper.BindEnv("skipCompare", "SKIP_COMPARE")

	viper.BindEnv("destBucket", "DEST_BUCKET")
	viper.BindEnv("destPrefix", "DEST_PREFIX")
	viper.BindEnv("destRegion", "DEST_REGION")
	viper.BindEnv("destCredential", "DEST_CREDENTIALS")
	viper.BindEnv("destInCurrentAccount", "DEST_IN_CURRENT_ACCOUNT")
	viper.BindEnv("destStorageClass", "DEST_STORAGE_CLASS")
	viper.BindEnv("destAcl", "DEST_ACL")

	viper.BindEnv("jobTableName", "JOB_TABLE_NAME")
	viper.BindEnv("jobQueueName", "JOB_QUEUE_NAME")

	viper.BindEnv("options.maxKeys", "MAX_KEYS")
	viper.BindEnv("options.chunkSize", "CHUNK_SIZE")
	viper.BindEnv("options.multipartThreshold", "MULTIPART_THRESHOLD")
	viper.BindEnv("options.messageBatchSize", "MESSAGE_BATCH_SIZE")
	viper.BindEnv("options.finderDepth", "FINDER_DEPTH")
	viper.BindEnv("options.finderNumber", "FINDER_NUMBER")
	viper.BindEnv("options.workerNumber", "WORKER_NUMBER")
	viper.BindEnv("options.includeMetadata", "INCLUDE_METADATA")

	if cfgFile != "" {
		// Use config file from the flag.
		viper.SetConfigFile(cfgFile)
	} else {
		// Default config file is "./config.yaml"
		viper.AddConfigPath(".")
		viper.SetConfigName("config")
	}

	viper.AutomaticEnv() // read in environment variables that match

	// If a config file is found, read it in.
	viper.ReadInConfig()
	if err := viper.ReadInConfig(); err == nil {
		log.Println("Using config file:", viper.ConfigFileUsed())
	}

	options := &dth.JobOptions{
		ChunkSize:          viper.GetInt("options.chunkSize"),
		MultipartThreshold: viper.GetInt("options.multipartThreshold"),
		MaxKeys:            viper.GetInt32("options.maxKeys"),
		MessageBatchSize:   viper.GetInt("options.messageBatchSize"),
		FinderDepth:        viper.GetInt("options.finderDepth"),
		FinderNumber:       viper.GetInt("options.finderNumber"),
		WorkerNumber:       viper.GetInt("options.workerNumber"),
		IncludeMetadata:    viper.GetBool("options.includeMetadata"),
	}

	cfg = &dth.JobConfig{
		SrcType:              viper.GetString("srcType"),
		SrcBucket:            viper.GetString("srcBucket"),
		SrcPrefix:            viper.GetString("srcPrefix"),
		SrcPrefixList:        viper.GetString("srcPrefixList"),
		SrcRegion:            viper.GetString("srcRegion"),
		SrcEndpoint:          viper.GetString("srcEndpoint"),
		SrcCredential:        viper.GetString("srcCredential"),
		SrcInCurrentAccount:  viper.GetBool("srcInCurrentAccount"),
		SkipCompare:          viper.GetBool("skipCompare"),
		DestBucket:           viper.GetString("destBucket"),
		DestPrefix:           viper.GetString("destPrefix"),
		DestRegion:           viper.GetString("destRegion"),
		DestCredential:       viper.GetString("destCredential"),
		DestStorageClass:     viper.GetString("destStorageClass"),
		DestAcl:              viper.GetString("destAcl"),
		DestInCurrentAccount: viper.GetBool("destInCurrentAccount"),
		JobTableName:         viper.GetString("jobTableName"),
		JobQueueName:         viper.GetString("jobQueueName"),
		JobOptions:           options,
	}

}