Skip to main content

Easy way to use existing JSON, XML or YAML config files from bash shell/scripts

Project description

Configo
=======

Easy way to use existing JSON, XML or YAML config files from bash shell/scripts

# How can i use it?
...

###Sample json config file
Lets say that this config file is located `/etc/myapp/config.json`

{
"config_version": "1.0",
"application": "My Application",
"webservers": {
"api": {
"host": "api.some.com",
"port": "80",
"apikey": "somekey",
"apisecret": "somesecret"
},

"img": {
"host": "img.some.com",
"port": "8013",
"apikey": "ihuu",
"apisecret": "somesecret"
},

"video": {
"host": "video.some.com",
"port": "80",
"apikey": "somekey",
"apisecret": "somesecret"
}
},

"databases": {
"web": { "host": "db.web.some.com", "port": "3306", "username": "myuser", "password": "mypass" },
"office": { "host": "db.office.some.com", "port": "3306", "username": "myuser", "password": "mypass" }
}
}

#Usage examples
These examples will show you several different ways about how you can work with your JSON/YAML/XML config files in shell with ease.
All examples use the sample config file above.


### Syntax
1. `configo from config get key`
2. `configo get key` //That's what i say 'lazy way' ... more info below

### Shell example in standard way
# configo from /etc/myapp/config.json get application
//-> My Application

### Shell example in standard way with `nested` properties
# configo from /etc/myapp/config.json get webservers.api.host
//-> api.some.com

### Shell scripts example in standard way
TARGET_CONF="/etc/myapp/config.json";
CONFIGO="configo from $TARGET_CONF";
VARNAME=`$CONFIGO get databases.office.password`;
echo $VARNAME;
//-> mypass

### Lazy example
If you want you can assign the path to your config file to `CONFIGO_CONF` variable and `configo` will use it without having to define it as an argument every time.

export CONFIGO_CONF=`/etc/myapp/config.json`

API_WEBSERVER_HOSTNAME=`configo get webservers.api.host`
//-> api.some.com

OFFICE_DB_HOST=`configo get databases.office.host`
//-> db.office.some.com

#Requirements

* Python 2.6+
* PyYAML (latest version recommended) - tested with PyYAML 3.10

# Installation

from source

# git clone git@github.com:mignev/configo.git
# cd configo
# python setup.py install


with pip

# pip install configo

# Testing
All tests are located in `tests` dir. They are 2 different test suites. One test suit for `configo api` and another for the `command line tool`.

So what should we do to run tests:

cd tests
ln -s ../configo configo
ln -s ../bin bin

If you want to run `configo api` tests just run:

python configo_tests.py

If you run `command line tool` tests you must do the following:

export CONFIGO_CONF=`pwd`/fixtures/config.json # this is necessary to work tests with lazy syntax

... and after that just run:

python configo_executable_tests.py

# TODO
- Add xml support
- Add yaml support

# CHANGELOG

### 1.2:

- add yaml support
- add tests for yaml support
- small refactoring

### 1.1:

- add tests for api and command line tool
- refactor configo api and command line tool

#Copyright
Copyright (c) 2012 Marian Ignev. See LICENSE for further details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Configo-1.2.tar.gz (3.9 kB view details)

Uploaded Source

File details

Details for the file Configo-1.2.tar.gz.

File metadata

  • Download URL: Configo-1.2.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for Configo-1.2.tar.gz
Algorithm Hash digest
SHA256 5c31234b260f406e65f69b1457e391b5c979e0f985d8e88b9b8c18cd32d43130
MD5 e3dd5f1dbe79455d759db9ea6f2a3bbf
BLAKE2b-256 e4e7dce8a0254475bbd817caa071ea235c6d917448660582f135ab40cd13b1f8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page