github.com/christoph-karpowicz/db_mediator@v0.0.0-20210207102849-61a28a1071d8/internal/server/cfg/cfg_parser.go (about) 1 package cfg 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "log" 7 "os" 8 "path/filepath" 9 10 "gopkg.in/yaml.v3" 11 ) 12 13 // ImportYAMLDir invokes the import function on all .yaml files from 14 // a directory. 15 func ImportYAMLDir(dirPath string) []Config { 16 var cfgs []Config = make([]Config, 0) 17 18 configFiles, err := ioutil.ReadDir(dirPath) 19 if err != nil { 20 log.Fatal(err) 21 } 22 23 for _, configFile := range configFiles { 24 var config Config 25 switch dirPath { 26 case SYNCH_DIR: 27 config = &SynchConfig{} 28 cfgs = append(cfgs, config) 29 } 30 31 fmt.Println("Config file name: " + configFile.Name()) 32 ImportYAMLFile(config, dirPath+"/"+configFile.Name()) 33 } 34 35 return cfgs 36 } 37 38 // ImportYAMLFile imports a configuration file into a Config struct. 39 func ImportYAMLFile(cfg Config, filePath string) { 40 fp, _ := filepath.Abs(filePath) 41 42 configFile, err := os.Open(fp) 43 if err != nil { 44 panic(err) 45 } 46 fmt.Printf("Parsing %s...\n", fp) 47 defer configFile.Close() 48 49 byteArray, err := ioutil.ReadAll(configFile) 50 if err != nil { 51 panic(err) 52 } 53 54 var marshalErr error 55 56 switch cfg.(type) { 57 case *DbConfigArray: 58 marshalErr = yaml.Unmarshal(byteArray, cfg.(*DbConfigArray)) 59 case *SynchConfig: 60 marshalErr = yaml.Unmarshal(byteArray, cfg.(*SynchConfig)) 61 } 62 63 if marshalErr != nil { 64 log.Fatalf("error: %v", marshalErr) 65 } 66 }