{ "info": { "author": "Nikita Sobolev", "author_email": "mail@sobolevn.me", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython" ], "description": "# A utility tool to create ``.env`` files\n\n[![wemake.services](https://img.shields.io/badge/%20-wemake.services-green.svg?label=%20&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC%2FxhBQAAAAFzUkdCAK7OHOkAAAAbUExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F%2F%2F5TvxDIAAAAIdFJOUwAjRA8xXANAL%2Bv0SAAAADNJREFUGNNjYCAIOJjRBdBFWMkVQeGzcHAwksJnAPPZGOGAASzPzAEHEGVsLExQwE7YswCb7AFZSF3bbAAAAABJRU5ErkJggg%3D%3D)](https://wemake.services) [![Build Status](https://travis-ci.org/sobolevn/dump-env.svg?branch=master)](https://travis-ci.org/sobolevn/dump-env) [![Coverage](https://coveralls.io/repos/github/sobolevn/dump-env/badge.svg?branch=master)](https://coveralls.io/github/sobolevn/dump-env?branch=master) [![Python Version](https://img.shields.io/pypi/pyversions/dump-env.svg)](https://pypi.org/project/dump-env/) [![Docs](https://readthedocs.org/projects/dump-env/badge/?version=latest)](http://dump-env.readthedocs.io/en/latest/?badge=latest) [![wemake-python-styleguide](https://img.shields.io/badge/style-wemake-000000.svg)](https://github.com/wemake-services/wemake-python-styleguide)\n\n`dump-env` takes an `.env.template` file and some optional environmental variables to create a new `.env` file from these two sources. No external dependencies are used.\n\n\n## Why?\n\nWhy do we need such a tool? Well, this tool is very helpful when your CI is building `docker` (or other) images.\n[Previously](https://github.com/wemake-services/wemake-django-template/blob/6a7ab060e8435fd855cd806706c5d1b5a9e76d12/%7B%7Bcookiecutter.project_name%7D%7D/.gitlab-ci.yml#L25) we had some complex logic of encrypting and decrypting files, importing secret keys and so on.\nNow we can just create secret variables for our CI, add some prefix to it, and use `dump-env` to make our life easier.\n\n\n## Installation\n\n```bash\n$ pip install dump-env\n```\n\n\n## Quickstart\n\nThis quick demo will demonstrate the main and the only purpose of `dump-env`:\n\n```bash\n$ dump-env --template=.env.template --prefix='SECRET_ENV_' > .env\n```\n\nThis command will:\n\n1. take `.env.template`\n2. parse its keys and values\n3. read and all the variables from the environment starting with `SECRET_ENV_`\n4. remove this prefix\n5. mix it all together, environment vars may override ones from the template\n6. sort keys in alphabetic order\n7. dump all the keys and values into the `.env` file\n\n\n## Advanced Usage\n\n### Multiple prefixes\n\n```bash\n$ dump-env -t .env.template -p 'SECRET_ENV_' -p 'ANOTHER_SECRET_ENV_' > .env\n```\n\nThis command will do pretty much the same thing as with one prefix. But, it will replace multiple prefixes.\nFurther prefixes always replace previous ones if they are the same.\nFor example:\n\n```bash\n$ export SECRET_TOKEN='very secret string'\n$ export SECRET_ANSWER='13'\n$ export ANOTHER_SECRET_ENV_ANSWER='42'\n$ export ANOTHER_SECRET_ENV_VALUE='0'\n$ dump-env -p SECRET_ -p ANOTHER_SECRET_ENV_\nANSWER=42\nTOKEN=very secret string\nVALUE=0\n```\n\n### Strict env variables\n\nIn case you want to be sure that `YOUR_VAR` exists\nin your enviroment when dumping, you can use `--strict` flag:\n\n```bash\n$ dump-env --strict YOUR_VAR -p YOUR_\nMissing env vars: YOUR_VAR\n```\n\nOups! We forgot to create it! Now this will work:\n\n```bash\n$ export YOUR_VAR='abc'\n$ dump-env --strict YOUR_VAR -p YOUR_\nVAR=abc\n```\n\nAny number of `--strict` flags can be provided.\nNo more forgotten template overrides or missing env vars!\n\n\n## Creating secret variables in some CIs\n\n- [travis docs](https://docs.travis-ci.com/user/environment-variables/#Defining-encrypted-variables-in-.travis.yml)\n- [gitlab-ci docs](https://docs.gitlab.com/ce/ci/variables/README.html#secret-variables)\n- [github actions](https://help.github.com/en/articles/virtual-environments-for-github-actions#creating-and-using-secrets-encrypted-variables)\n\n\n## Real-world usages\n\nProjects that use this tool in production:\n\n- [wemake-django-template](https://github.com/wemake-services/wemake-django-template/blob/master/%7B%7Bcookiecutter.project_name%7D%7D/.gitlab-ci.yml#L24)\n- [wemake-vue-template](https://github.com/wemake-services/wemake-vue-template/blob/master/template/.gitlab-ci.yml#L24)\n\n\n## Related\n\nYou might also be interested in:\n\n- \n\n\n## License\n\n[MIT](https://github.com/sobolevn/dump-env/blob/master/LICENSE)\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://dump-env.readthedocs.io", "keywords": "dotenv,.env,tempaltes,secrets,CI/CD", "license": "MIT", "maintainer": "Nikita Sobolev", "maintainer_email": "mail@sobolevn.me", "name": "dump-env", "package_url": "https://pypi.org/project/dump-env/", "platform": "", "project_url": "https://pypi.org/project/dump-env/", "project_urls": { "Homepage": "https://dump-env.readthedocs.io", "Repository": "https://github.com/sobolevn/dump-env" }, "release_url": "https://pypi.org/project/dump-env/1.1.1/", "requires_dist": null, "requires_python": ">=3.6,<4.0", "summary": "A utility tool to create .env files", "version": "1.1.1" }, "last_serial": 5809097, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "666df9d956f5ce762e7df08979362198", "sha256": "74be9d9dbe8412d6636cb83e08a074dfb2b6e7e00fd9186e4e2bb1bc601855be" }, "downloads": -1, "filename": "dump_env-0.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "666df9d956f5ce762e7df08979362198", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 6034, "upload_time": "2017-12-23T12:09:01", "url": "https://files.pythonhosted.org/packages/d0/d4/9e3af9423cebc82a2d14806c591be1f0fa5736ed0236164f227fab1b23fc/dump_env-0.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "70cae1da94d0ba735cda5e0c88a7b49f", "sha256": "813905fbf8c9f7e6b4a580135505ae243a9428a28ed462f76d76d64f3477fea9" }, "downloads": -1, "filename": "dump_env-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "70cae1da94d0ba735cda5e0c88a7b49f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6034, "upload_time": "2017-12-23T12:08:31", "url": "https://files.pythonhosted.org/packages/5e/f2/021a1d3a6ad1015761e3ab0c02b452df1a24697c4cff744d987d5868039a/dump_env-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9cb0155b3b37b967f158d5244784c707", "sha256": "f6408c867cf1a578d96655a5ecaedf106de8ec6edf503dbbb8458764b823668d" }, "downloads": -1, "filename": "dump-env-0.1.0.tar.gz", "has_sig": false, "md5_digest": "9cb0155b3b37b967f158d5244784c707", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4834, "upload_time": "2017-12-23T12:08:33", "url": "https://files.pythonhosted.org/packages/b4/19/08fb1e6898dce28d8fba01a52cd4c768aec5c20d136e422979258b405556/dump-env-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "ce59a7d257075d751e859d6d752e8b8a", "sha256": "70d4c4f2cee3bfe5569665ef57c2cd8fe6e3544d4d3d375c3757c335f49d6491" }, "downloads": -1, "filename": "dump_env-0.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "ce59a7d257075d751e859d6d752e8b8a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 6026, "upload_time": "2018-01-15T11:14:30", "url": "https://files.pythonhosted.org/packages/8f/b4/9a9b4c372e73ae9de90b2aea99031a99f8f042d3622e0c6eae051af26a04/dump_env-0.1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5f619b5d911343e4d3cac4a332d195bb", "sha256": "17ef8404ead498a895d8a374fa02e23b8a0f8eb31eb329ee6c39ef6b49880009" }, "downloads": -1, "filename": "dump_env-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5f619b5d911343e4d3cac4a332d195bb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6029, "upload_time": "2018-01-15T11:14:40", "url": "https://files.pythonhosted.org/packages/f4/51/c8ea987abf4e3b224efed7fb3fecbc8a40820df3abb0e1ae20a71f3f3920/dump_env-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5baf506d416b8778a294bfd3bb6a639a", "sha256": "afc11fd3c2af0dd74014ebc559571e434a00535eb2131afd15b7059117d562e4" }, "downloads": -1, "filename": "dump-env-0.1.1.tar.gz", "has_sig": false, "md5_digest": "5baf506d416b8778a294bfd3bb6a639a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4762, "upload_time": "2018-01-15T11:14:31", "url": "https://files.pythonhosted.org/packages/cc/1b/5710919feebb6d646b2eea19a5be447e1d6f1945f4ed9077341ac1695433/dump-env-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "346048aade5e0a6a4a16b7a6c2355266", "sha256": "df3cc34d29ef8945144b80e07b5d7d288848a693574fa1b78a47f877bf8563b1" }, "downloads": -1, "filename": "dump_env-0.2.0-py2-none-any.whl", "has_sig": false, "md5_digest": "346048aade5e0a6a4a16b7a6c2355266", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 4046, "upload_time": "2018-04-30T09:44:41", "url": "https://files.pythonhosted.org/packages/fb/eb/4d2e206ce8aff8b6dabf489811f0bd6cfbb4f4c4ce6e0d913bb2c4182cba/dump_env-0.2.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "71fd70be93b0ee424353d6258d3555f4", "sha256": "dc4e3d689d61c84cbeb064d941c68a8b171ab2b574da2ee16a42f1382024705d" }, "downloads": -1, "filename": "dump_env-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "71fd70be93b0ee424353d6258d3555f4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4048, "upload_time": "2018-04-30T09:44:26", "url": "https://files.pythonhosted.org/packages/22/bf/23b8f2c7a6550b4c6c8ab6d5393f4151732345e637c3166ae970f6b68a40/dump_env-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9387c5287e4dc50fbedaa4a66a6e61ac", "sha256": "0c6dd783d453ed3444abd21f818a1289b5638f223127277c70d5b9e7f6509140" }, "downloads": -1, "filename": "dump-env-0.2.0.tar.gz", "has_sig": false, "md5_digest": "9387c5287e4dc50fbedaa4a66a6e61ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4770, "upload_time": "2018-04-30T09:44:27", "url": "https://files.pythonhosted.org/packages/ea/27/1c09fe02dce4c87cbf7a300963fdbbbeb8a866c9b5649fc9a363530d888d/dump-env-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "6cedc72b9d1a13accdae4f7b3b5c6fcf", "sha256": "ca07a06cffe316b42b4a7a5720b4deac62a6dcaad02f0bae431b94a1aa2cd63a" }, "downloads": -1, "filename": "dump_env-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6cedc72b9d1a13accdae4f7b3b5c6fcf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4104, "upload_time": "2018-04-30T10:39:13", "url": "https://files.pythonhosted.org/packages/60/db/a9056b96fb3928e914041d23f2691c33f522574e50e6fc1d3e1e3f0999b7/dump_env-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "686e77985743bf61d6bb4ca94acf73b7", "sha256": "b3c45839e2183ce86ddee7f88478b12411092b154c9a1d56ed20dd0885ff79a1" }, "downloads": -1, "filename": "dump-env-0.2.1.tar.gz", "has_sig": false, "md5_digest": "686e77985743bf61d6bb4ca94acf73b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5099, "upload_time": "2018-04-30T10:39:14", "url": "https://files.pythonhosted.org/packages/42/24/14641f78d84c8e64a3c24b3166d0e93d7df4e84e774c5d1949788fb7f736/dump-env-0.2.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "3330e0cc2e392bc6e12ce945e9980579", "sha256": "f929600c1497cb029edfa955ddfd84e5b7f18cadbbd77396aa2339685c7b4ec3" }, "downloads": -1, "filename": "dump_env-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3330e0cc2e392bc6e12ce945e9980579", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 8329, "upload_time": "2019-06-27T13:37:19", "url": "https://files.pythonhosted.org/packages/cb/2a/3ae77a78cc11b3d868e35bd4495b6081ff1cfd09ed568c6f239019360b5c/dump_env-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2737a6e85e7468ae99b1b7e7116b11f6", "sha256": "76c4deac11d06bd4678bd5a6d7a7c297e00caa706b164c7dc0f06ec2ef4669d7" }, "downloads": -1, "filename": "dump-env-1.0.0.tar.gz", "has_sig": false, "md5_digest": "2737a6e85e7468ae99b1b7e7116b11f6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 5160, "upload_time": "2019-06-27T13:37:17", "url": "https://files.pythonhosted.org/packages/96/8f/7b811bafd8d35bbf7e7cf3c87767d6f15a1ddc6f6ab5fc3a5cc852aae5c6/dump-env-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "7d0dce9a6dcc6660430c4787f20e1f28", "sha256": "afe4dc9f19cd993a1bdfeacdfe5a04e8efccae270e47b2c3a3269a14cdd72c40" }, "downloads": -1, "filename": "dump_env-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7d0dce9a6dcc6660430c4787f20e1f28", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 10399, "upload_time": "2019-09-08T11:59:56", "url": "https://files.pythonhosted.org/packages/a9/31/5ead599399e0b71b0252d38a9bb3fa42c18c119ba8135149588772971c0f/dump_env-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4294d8cd21a01773c7a042bda36a51a0", "sha256": "12574e9aaf17b1b2150285748af29492636b915f3a17d8383448aa49686fe70e" }, "downloads": -1, "filename": "dump-env-1.1.0.tar.gz", "has_sig": false, "md5_digest": "4294d8cd21a01773c7a042bda36a51a0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 6075, "upload_time": "2019-09-08T11:59:54", "url": "https://files.pythonhosted.org/packages/b6/0d/ea0df66ebd40db2bd56af9ee3cb4ee760f7c88eca67a9124e8701026e46d/dump-env-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "3325a67cc3f857562975ce44ba1033b2", "sha256": "eba700e26c2907ae2dcb30d52f76b1b2ba068e5857f013f6935f3d24c34b984b" }, "downloads": -1, "filename": "dump_env-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3325a67cc3f857562975ce44ba1033b2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 10437, "upload_time": "2019-09-10T13:55:23", "url": "https://files.pythonhosted.org/packages/7a/a8/b8ba36930ff746de46e98062eee32cb7768105ed6644e24a229d272daf3e/dump_env-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "de4190714818a60e828ba5a8eed4d5ea", "sha256": "528357530892b02bc5ba62b1f0d31f5f80d063a3133f3e1aa54704a16aa5e8cd" }, "downloads": -1, "filename": "dump-env-1.1.1.tar.gz", "has_sig": false, "md5_digest": "de4190714818a60e828ba5a8eed4d5ea", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 6132, "upload_time": "2019-09-10T13:55:21", "url": "https://files.pythonhosted.org/packages/8e/8d/758df51c29d01b180790858e1262a0095ba3054724337b98e1f211e7ceb7/dump-env-1.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3325a67cc3f857562975ce44ba1033b2", "sha256": "eba700e26c2907ae2dcb30d52f76b1b2ba068e5857f013f6935f3d24c34b984b" }, "downloads": -1, "filename": "dump_env-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3325a67cc3f857562975ce44ba1033b2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 10437, "upload_time": "2019-09-10T13:55:23", "url": "https://files.pythonhosted.org/packages/7a/a8/b8ba36930ff746de46e98062eee32cb7768105ed6644e24a229d272daf3e/dump_env-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "de4190714818a60e828ba5a8eed4d5ea", "sha256": "528357530892b02bc5ba62b1f0d31f5f80d063a3133f3e1aa54704a16aa5e8cd" }, "downloads": -1, "filename": "dump-env-1.1.1.tar.gz", "has_sig": false, "md5_digest": "de4190714818a60e828ba5a8eed4d5ea", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 6132, "upload_time": "2019-09-10T13:55:21", "url": "https://files.pythonhosted.org/packages/8e/8d/758df51c29d01b180790858e1262a0095ba3054724337b98e1f211e7ceb7/dump-env-1.1.1.tar.gz" } ] }