https://github.com/downgoon/shconf
a bash config toolkit supporting Spring-like "property placeholder" and getting/setting config value of specified key
https://github.com/downgoon/shconf
bash placeholder useful-scripts
Last synced: 18 days ago
JSON representation
a bash config toolkit supporting Spring-like "property placeholder" and getting/setting config value of specified key
- Host: GitHub
- URL: https://github.com/downgoon/shconf
- Owner: downgoon
- Created: 2017-04-06T06:32:20.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2017-04-10T03:35:16.000Z (almost 9 years ago)
- Last Synced: 2025-08-02T09:12:04.746Z (7 months ago)
- Topics: bash, placeholder, useful-scripts
- Language: Shell
- Homepage:
- Size: 10.7 KB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# shconf
``shconf`` is a bash config toolkit supporting Spring-like "property placeholder" and getting/setting config value of specified key.
function testing ok on these platforms:
- Mac Darwin
- CentOS 6.X
- Ubuntu 14.X
## QuickStart
- Usage
```
$ shconf
Usage (long format): shconf {version|getprop|setprop|replaceby}
Usage (short format): shconf {-v|-g|-s|-r}
```
- getting config value
```
$ shconf -g backend.service example/app.conf
10.10.1.100:8080
```
## Preparation
- centralized conf: ``app.conf``
a global configuration file ``example/app.conf`` :
```
#
# application global configuration
#
host=192.168.1.100 # nginx listening host
# nginx listenning port
port = 80
backend.service=10.10.1.100:8080
boxstore.root.dir=/opt/boxstore
#sync=false
not.found.key=NotFound
Other lines
```
- overwritten conf: ``nginx.conf``
code snippets of ``example/nginx.conf`` :
```
upstream databaseupstream {
server ${backend.service};
}
server {
listen ${port};
server_name ${host};
location /boxstore {
alias ${boxstore.root.dir};
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}
```
## What to do
overwrite placeholder variables like ``${backend.service}``, ``${port}`` and ``${boxstore.root.dir}`` refereed in ``example/nginx.conf`` with the value assigned in ``example/app.conf`` before ``example/nginx.conf`` loaded by application such as ``nginx`` http server.
## How to
```
replaceby.sh example/nginx.conf example/app.conf
```
OR
```
$ shconf replaceby example/nginx.conf example/app.conf
```
overwritten contents:
```
upstream databaseupstream {
server 10.10.1.100:8080;
}
.....
```
## Other Tools
- get value of specified key
```
$ sh getprop.sh backend.service example/app.conf
10.10.1.100:8080
```
OR
```
$ shconf getprop backend.service example/app.conf
```
- set value of specified key
```
$ setprop.sh backend.service 127.0.0.1:10086 example/app.conf
$ sh getprop.sh backend.service example/app.conf
127.0.0.1:10086
```
OR
```
$ shconf -r backend.service 127.0.0.1:10086 example/app.conf
```