Compare commits
5 Commits
50f3ea10db
...
v0.1.1
| Author | SHA1 | Date | |
|---|---|---|---|
| 7d010c4b7b | |||
| 228d772219 | |||
| 5e1e8723eb | |||
| 2b8b235752 | |||
| 88e928e51a |
165
ini.go
165
ini.go
@@ -13,20 +13,30 @@ type Configuration struct {
|
||||
file *ini.File
|
||||
}
|
||||
|
||||
func NewConfiguration(fileLocation string) *Configuration {
|
||||
func CreateConfigurationFile(fileLocation string, defaultConfig string) {
|
||||
createFile(fileLocation, []byte(defaultConfig))
|
||||
}
|
||||
|
||||
func NewConfiguration(fileLocation string, defaultConfig string) *Configuration {
|
||||
conf := new(Configuration)
|
||||
conf.fileLocation = fileLocation
|
||||
conf.createAndLoad(defaultConfig)
|
||||
return conf
|
||||
}
|
||||
|
||||
func LoadConfiguration(fileLocation string) *Configuration {
|
||||
conf := new(Configuration)
|
||||
conf.fileLocation = fileLocation
|
||||
conf.load()
|
||||
return conf
|
||||
}
|
||||
|
||||
func (config *Configuration) GetSection(sectionName string) *ini.Section {
|
||||
func (config *Configuration) GetSection(sectionName string) (*ini.Section, error) {
|
||||
section, err := config.file.GetSection(sectionName)
|
||||
if err != nil {
|
||||
fmt.Printf("Error getting section %v in config: %v", sectionName, err)
|
||||
os.Exit(1)
|
||||
return nil, err
|
||||
}
|
||||
return section
|
||||
return section, nil
|
||||
}
|
||||
|
||||
func GetChildSection(section *ini.Section, childSectionName string) (childSection *ini.Section, err error) {
|
||||
@@ -43,37 +53,77 @@ func GetChildSections(section *ini.Section) (childSections []*ini.Section) {
|
||||
return section.ChildSections()
|
||||
}
|
||||
|
||||
func (config *Configuration) GetKey(path string) *ini.Key {
|
||||
func CreateSection(path string, file *ini.File) error {
|
||||
pathSplit := strings.Split(path, ".")
|
||||
for i := 0; i < len(pathSplit)-1; i++ {
|
||||
file.NewSections()
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (config *Configuration) GetKey(path string) (*ini.Key, error) {
|
||||
splitPaths := strings.Split(path, ".")
|
||||
if len(splitPaths) == 1 {
|
||||
splitPaths = append([]string{"."}, splitPaths...)
|
||||
}
|
||||
sectionMask := strings.Join(splitPaths[0:len(splitPaths)-1], ".")
|
||||
section := config.GetSection(sectionMask)
|
||||
section, err := config.GetSection(sectionMask)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
keyName := splitPaths[len(splitPaths)-1]
|
||||
key, err := section.GetKey(keyName)
|
||||
if err != nil {
|
||||
fmt.Printf("Error getting key %v: %v", keyName, err)
|
||||
return nil, err
|
||||
}
|
||||
return key
|
||||
}
|
||||
|
||||
func (config *Configuration) GetAsString(path string) string {
|
||||
return config.GetKey(path).String()
|
||||
return key, nil
|
||||
}
|
||||
|
||||
func (config *Configuration) SetValue(path string, value string) {
|
||||
config.GetKey(path).SetValue(value)
|
||||
key, err := config.GetKey(path)
|
||||
if err != nil {
|
||||
err = nil
|
||||
splitPath := strings.Split(path, ".")
|
||||
err = config.file.NewSections(splitPath[0 : len(splitPath)-1]...)
|
||||
if err != nil {
|
||||
fmt.Printf("Error creating section %v in config: %v", path, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
fmt.Printf("New Val: Split Path: %v", splitPath)
|
||||
}
|
||||
key, err = config.GetKey(path)
|
||||
if err != nil {
|
||||
fmt.Printf("Error getting path %v in config: %v", path, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
key.SetValue(value)
|
||||
}
|
||||
|
||||
func (config *Configuration) GetAsString(path string) string {
|
||||
key, err := config.GetKey(path)
|
||||
if err != nil {
|
||||
fmt.Printf("Error getting path %v in config: %v", path, err)
|
||||
}
|
||||
return key.String()
|
||||
}
|
||||
|
||||
func (config *Configuration) GetAsStrings(path string) []string {
|
||||
return config.GetKey(path).Strings(",")
|
||||
key, err := config.GetKey(path)
|
||||
if err != nil {
|
||||
fmt.Printf("Error getting path %v in config: %v", path, err)
|
||||
}
|
||||
return key.Strings(",")
|
||||
}
|
||||
|
||||
func (config *Configuration) GetAsInt(path string) int {
|
||||
var i int
|
||||
var err error
|
||||
i, err = config.GetKey(path).Int()
|
||||
key, err := config.GetKey(path)
|
||||
if err != nil {
|
||||
fmt.Printf("Error getting path %v in config: %v", path, err)
|
||||
}
|
||||
i, err = key.Int()
|
||||
if err != nil {
|
||||
fmt.Printf("Error parsing integer: %v", err)
|
||||
os.Exit(1)
|
||||
@@ -82,13 +132,21 @@ func (config *Configuration) GetAsInt(path string) int {
|
||||
}
|
||||
|
||||
func (config *Configuration) GetAsInts(path string) []int {
|
||||
return config.GetKey(path).Ints(",")
|
||||
key, err := config.GetKey(path)
|
||||
if err != nil {
|
||||
fmt.Printf("Error getting path %v in config: %v", path, err)
|
||||
}
|
||||
return key.Ints(",")
|
||||
}
|
||||
|
||||
func (config *Configuration) GetAsUInt(path string) uint {
|
||||
var i uint
|
||||
var err error
|
||||
i, err = config.GetKey(path).Uint()
|
||||
key, err := config.GetKey(path)
|
||||
if err != nil {
|
||||
fmt.Printf("Error getting path %v in config: %v", path, err)
|
||||
}
|
||||
i, err = key.Uint()
|
||||
if err != nil {
|
||||
fmt.Printf("Error parsing integer: %v", err)
|
||||
os.Exit(1)
|
||||
@@ -97,13 +155,21 @@ func (config *Configuration) GetAsUInt(path string) uint {
|
||||
}
|
||||
|
||||
func (config *Configuration) GetAsUInts(path string) []uint {
|
||||
return config.GetKey(path).Uints(",")
|
||||
key, err := config.GetKey(path)
|
||||
if err != nil {
|
||||
fmt.Printf("Error getting path %v in config: %v", path, err)
|
||||
}
|
||||
return key.Uints(",")
|
||||
}
|
||||
|
||||
func (config *Configuration) GetAsFloat(path string) float64 {
|
||||
var f float64
|
||||
var err error
|
||||
f, err = config.GetKey(path).Float64()
|
||||
key, err := config.GetKey(path)
|
||||
if err != nil {
|
||||
fmt.Printf("Error getting path %v in config: %v", path, err)
|
||||
}
|
||||
f, err = key.Float64()
|
||||
if err != nil {
|
||||
fmt.Printf("Error parsing float: %v", err)
|
||||
os.Exit(1)
|
||||
@@ -112,13 +178,21 @@ func (config *Configuration) GetAsFloat(path string) float64 {
|
||||
}
|
||||
|
||||
func (config *Configuration) GetAsFloats(path string) []float64 {
|
||||
return config.GetKey(path).Float64s(",")
|
||||
key, err := config.GetKey(path)
|
||||
if err != nil {
|
||||
fmt.Printf("Error getting path %v in config: %v", path, err)
|
||||
}
|
||||
return key.Float64s(",")
|
||||
}
|
||||
|
||||
func (config *Configuration) GetAsBoolean(path string) bool {
|
||||
var b bool
|
||||
var err error
|
||||
b, err = config.GetKey(path).Bool()
|
||||
key, err := config.GetKey(path)
|
||||
if err != nil {
|
||||
fmt.Printf("Error getting path %v in config: %v", path, err)
|
||||
}
|
||||
b, err = key.Bool()
|
||||
if err != nil {
|
||||
fmt.Printf("Error parsingn bool: %v", err)
|
||||
os.Exit(1)
|
||||
@@ -127,11 +201,29 @@ func (config *Configuration) GetAsBoolean(path string) bool {
|
||||
}
|
||||
|
||||
func (config *Configuration) GetAsBooleans(path string) []bool {
|
||||
return config.GetKey(path).Bools(",")
|
||||
key, err := config.GetKey(path)
|
||||
if err != nil {
|
||||
fmt.Printf("Error getting path %v in config: %v", path, err)
|
||||
}
|
||||
return key.Bools(",")
|
||||
}
|
||||
|
||||
func (config *Configuration) IsSet(path string) bool {
|
||||
key, err := config.GetKey(path)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
return key.Value() != ""
|
||||
}
|
||||
|
||||
func (config *Configuration) createAndLoad(defaultConfig string) {
|
||||
createFile(config.fileLocation, []byte(defaultConfig))
|
||||
config.load()
|
||||
}
|
||||
|
||||
func (config *Configuration) load() {
|
||||
var err error = nil
|
||||
var err error
|
||||
config.file, err = ini.Load(config.fileLocation)
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to open configuration file: %v", err)
|
||||
@@ -139,10 +231,6 @@ func (config *Configuration) load() {
|
||||
}
|
||||
}
|
||||
|
||||
func (config *Configuration) Reload() {
|
||||
config.load()
|
||||
}
|
||||
|
||||
func (config *Configuration) Save() {
|
||||
err := config.file.SaveTo(config.fileLocation)
|
||||
if err != nil {
|
||||
@@ -150,3 +238,24 @@ func (config *Configuration) Save() {
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
func createFile(fileLocation string, data []byte) {
|
||||
_, err := os.Stat(fileLocation)
|
||||
if errors.Is(err, os.ErrNotExist) {
|
||||
file, err := os.Create(fileLocation)
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to create file: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
_, err = file.Write(data)
|
||||
if err != nil {
|
||||
fmt.Printf("Error writing to file: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
} else if err != nil {
|
||||
fmt.Printf("Error creating file: %v", err)
|
||||
os.Exit(1)
|
||||
} else {
|
||||
fmt.Printf("File already exists...")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user