github.com/angenalZZZ/gofunc@v0.0.0-20210507121333-48ff1be3917b/configfile/ini.go (about)

     1  package configfile
     2  
     3  import (
     4  	"gopkg.in/ini.v1"
     5  	"strings"
     6  )
     7  
     8  // IniTo 转换ini文件成数据对象.
     9  //
    10  // 例如:
    11  //	err := IniTo("file.ini", &obj)
    12  //
    13  func IniTo(filename string, config interface{}) error {
    14  	return ini.MapTo(config, filename)
    15  }
    16  
    17  // IniTos 转换ini文件成多个对象.
    18  //
    19  // 例如:
    20  //  err := IniTos("file.ini", "obj1,obj2", &obj1, &obj2)
    21  //
    22  func IniTos(filename string, sections string, configs ...interface{}) error {
    23  	if cfg, err := ini.Load(filename); err != nil {
    24  		return err
    25  	} else {
    26  		s := strings.Split(sections, ",")
    27  		for i, config := range configs {
    28  			if err = cfg.Section(s[i]).MapTo(config); err != nil {
    29  				return err
    30  			}
    31  		}
    32  	}
    33  	return nil
    34  }
    35  
    36  // Ini 生成ini文件.
    37  //
    38  // 例如:
    39  //  err := Ini(&obj, "file.ini")
    40  //
    41  func Ini(config interface{}, filename string) error {
    42  	cfg := ini.Empty()
    43  	if err := ini.ReflectFrom(cfg, config); err != nil {
    44  		return err
    45  	} else {
    46  		return cfg.SaveTo(filename)
    47  	}
    48  }