Metadata-Version: 2.1
Name: secretconf
Version: 0.1.2
Summary: manage your secrets and configurations easily
Home-page: https://github.com/xmonader/secretconf
Author: Ahmed Youssef
Author-email: xmonader@gmail.com
License: UNKNOWN
Description: # secretconf
        
        ![[https://pypi.python.org/pypi/secretconf](pypi)](https://img.shields.io/pypi/v/secretconf.svg)
        ![[https://travis-ci.org/xmonader/secretconf]](https://travis-ci.org/xmonader/secretconf.png)
        
        ![[https://codecov.io/gh/xmonader/secretconf]](https://codecov.io/gh/xmonader/secretconf/branch/master/graph/badge.svg)
        
        
        Manage your secret configurations easily
        
        # Installation
        `pip3 install secretconf --user`
        
        
        # Usage
        secretconf is a library to manage (encrypt/decrypt) your credentials on demand using public key encryption.
        
        ## Hush
        hush is a commandline utility installed with secretconf to make your life easier to store and update credentials
        
        ```bash
        hush --section twittermain --fields 'user,__token' --privatekey ~/.ssh/id_rsa  
        ```
        
        ```bash
        
        hush --help
        Usage: hush [OPTIONS]
        
        Options:
            --section TEXT     Section (Appname)
            --privatekey TEXT  Privatekey path
            --configpath TEXT  Secret configuration path
            --fields TEXT      quoted comma separated fields; secret fields are prefixed with __
            --help             Show this message and exit.
        
        ```
        
        ### Data storage
        You can configure where to save the data using `--configpath` which is set to `/tmp/secrets.conf` by default. 
        ```toml
        [twittermain]
        user = ahmed
        __token = eYCWre9l7IauoHs6K3D5J2wkgnQQBtFV4CoZE3W4tpbxa7Z7Qt+c/LnQhSI=
        
        ```
        > Please notice that you can't use multiple keys on the same `configpath` file
        
        # API usage 
        secretconf [documentation](https://xmonader.github.io/secretconf/api/secretconf/)
        
        ## make_config
        ```python
        def test_make_config_creates_file_with_encrypted_data():
            make_config(APPNAME, {'user': USER, '__password': PASSWORD},
                        config_path=TEST_CONFIG_PATH, private_key=hashedsk)
        
            assert os.path.exists(TEST_CONFIG_PATH)
            with open(TEST_CONFIG_PATH, 'r') as f:
                content = f.read()
                assert "user" in content
                assert USER in content
                assert "__password" in content
                assert PASSWORD not in content
        ```
        
        
        ## read_config
        
        ```python
            conf = read_config(APPNAME, config_path=TEST_CONFIG_PATH,
                               private_key=hashedsk)
            assert APPNAME in conf
            assert 'user' in conf[APPNAME]
            assert '__password' in conf[APPNAME]
            assert conf[APPNAME]['user'] == USER
            assert conf[APPNAME]['__password'] == PASSWORD
        ```
        
        # Testing
        secretconf tests exists in [tests](./tests) directory 
        - basic tests `test_basic.py`: encryption/decryption and usage of `make_config` and `read_config`
        - property based tests `test_properties.py`
        
        You can use `pytest tests` or just `tox` make sure to `install requirements-test.txt` or `make test`
        
        
        # Generating Docs
        `make gendocs`
        
        # Requirements
        
        - setuptools==38.5.0
        - click==6.7
        - PyNaCl==1.2.1
        - npyscreen==4.10.5
        
        # License
        Software is provided as is under BSD 3-Clause License
        
        
        # Authors
        
        `secretconf` was written by `Ahmed Youssef <xmonader@gmail.com>`_.
        
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Description-Content-Type: text/markdown
