1. refactor kubesphere dependency service client creation, we can disable dependency by config 2. dependencies can be configured by configuration file 3. refactor cmd package using cobra.Command, so we can use hypersphere to invoke command sepearately. Later we only need to build one image to contains all kubesphere core components. One command to rule them all! 4. live reloading configuration currently not implemented
130 lines
4.3 KiB
Markdown
130 lines
4.3 KiB
Markdown
[](https://github.com/magiconair/properties/releases)
|
|
[](https://travis-ci.org/magiconair/properties)
|
|
[](https://app.codeship.com/projects/274177")
|
|
[](https://raw.githubusercontent.com/magiconair/properties/master/LICENSE)
|
|
[](http://godoc.org/github.com/magiconair/properties)
|
|
|
|
# Overview
|
|
|
|
#### Please run `git pull --tags` to update the tags. See [below](#updated-git-tags) why.
|
|
|
|
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.
|
|
|
|
Read the full documentation on [GoDoc](https://godoc.org/github.com/magiconair/properties) [](https://godoc.org/github.com/magiconair/properties)
|
|
|
|
## Getting Started
|
|
|
|
```go
|
|
import (
|
|
"flag"
|
|
"github.com/magiconair/properties"
|
|
)
|
|
|
|
func main() {
|
|
// init from a file
|
|
p := properties.MustLoadFile("${HOME}/config.properties", properties.UTF8)
|
|
|
|
// or multiple files
|
|
p = properties.MustLoadFiles([]string{
|
|
"${HOME}/config.properties",
|
|
"${HOME}/config-${USER}.properties",
|
|
}, properties.UTF8, true)
|
|
|
|
// or from a map
|
|
p = properties.LoadMap(map[string]string{"key": "value", "abc": "def"})
|
|
|
|
// or from a string
|
|
p = properties.MustLoadString("key=value\nabc=def")
|
|
|
|
// or from a URL
|
|
p = properties.MustLoadURL("http://host/path")
|
|
|
|
// or from multiple URLs
|
|
p = properties.MustLoadURL([]string{
|
|
"http://host/config",
|
|
"http://host/config-${USER}",
|
|
}, true)
|
|
|
|
// or from flags
|
|
p.MustFlag(flag.CommandLine)
|
|
|
|
// get values through getters
|
|
host := p.MustGetString("host")
|
|
port := p.GetInt("port", 8080)
|
|
|
|
// or through 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)
|
|
}
|
|
}
|
|
|
|
```
|
|
|
|
## Installation and Upgrade
|
|
|
|
```
|
|
$ go get -u github.com/magiconair/properties
|
|
```
|
|
|
|
## License
|
|
|
|
2 clause BSD license. See [LICENSE](https://github.com/magiconair/properties/blob/master/LICENSE) file for details.
|
|
|
|
## ToDo
|
|
|
|
* Dump contents with passwords and secrets obscured
|
|
|
|
## Updated Git tags
|
|
|
|
#### 13 Feb 2018
|
|
|
|
I realized that all of the git tags I had pushed before v1.7.5 were lightweight tags
|
|
and I've only recently learned that this doesn't play well with `git describe` 😞
|
|
|
|
I have replaced all lightweight tags with signed tags using this script which should
|
|
retain the commit date, name and email address. Please run `git pull --tags` to update them.
|
|
|
|
Worst case you have to reclone the repo.
|
|
|
|
```shell
|
|
#!/bin/bash
|
|
tag=$1
|
|
echo "Updating $tag"
|
|
date=$(git show ${tag}^0 --format=%aD | head -1)
|
|
email=$(git show ${tag}^0 --format=%aE | head -1)
|
|
name=$(git show ${tag}^0 --format=%aN | head -1)
|
|
GIT_COMMITTER_DATE="$date" GIT_COMMITTER_NAME="$name" GIT_COMMITTER_EMAIL="$email" git tag -s -f ${tag} ${tag}^0 -m ${tag}
|
|
```
|
|
|
|
I apologize for the inconvenience.
|
|
|
|
Frank
|
|
|