commit | b3f6dd549956e8a61ea4a686a1c02a33d5bdda4b | [log] [tgz] |
---|---|---|
author | Frank Schroeder <frank.schroeder@gmail.com> | Sun Jul 24 13:00:20 2016 +0200 |
committer | Frank Schroeder <frank.schroeder@gmail.com> | Sun Jul 24 13:00:20 2016 +0200 |
tree | 46dd7b3646a760fd6bf4be469af0309379bb617c | |
parent | af14024f63beeb153d0048591b39c5788f21cc24 [diff] |
Issue #14: Decouple TestLoadExpandedFile from $USER
properties is a Go library for reading and writing properties files.
It supports reading from multiple files or URLs and Spring style recursive property expansion of expressions like ${key}
to their corresponding value. Value expressions can refer to other keys like in ${key}
or to environment variables like in ${USER}
. Filenames can also contain environment variables like in /home/${USER}/myapp.properties
.
Properties can be decoded into structs, maps, arrays and values through struct tags.
Comments and the order of keys are preserved. Comments can be modified and can be written to the output.
The properties library supports both ISO-8859-1 and UTF-8 encoded data.
Starting from version 1.3.0 the behavior of the MustXXX() functions is configurable by providing a custom ErrorHandler
function. The default has changed from panic
to log.Fatal
but this is configurable and custom error handling functions can be provided. See the package documentation for details.
import ( "flag" "github.com/magiconair/properties" ) func main() { p := properties.MustLoadFile("${HOME}/config.properties", properties.UTF8) // via getters host := p.MustGetString("host") port := p.GetInt("port", 8080) // or via decode type Config struct { Host string `properties:"host"` Port int `properties:"port,default=9000"` Accept []string `properties:"accept,default=image/png;image;gif"` Timeout time.Duration `properties:"timeout,default=5s"` } var cfg Config if err := p.Decode(&cfg); err != nil { log.Fatal(err) } // or via flags p.MustFlag(flag.CommandLine) // or via url p = properties.MustLoadURL("http://host/path") }
Read the full documentation on GoDoc
$ go get -u github.com/magiconair/properties
2 clause BSD license. See LICENSE file for details.