{ "info": { "author": "Andreas Jansson", "author_email": "andreas@jansson.me.uk", "bugtrack_url": null, "classifiers": [], "description": "\nenvtpl\n======\n\n_Render jinja2 templates on the command line with shell environment variables_\n\nInstallation\n------------\n\n pip install envtpl\n\nHow-to\n------\n\nSay you have a configuration file called whatever.conf that looks like this\n\n foo = 123\n bar = \"abc\"\n\nYou can use envtpl to set `foo` and `bar` from the command line by creating a file called whatever.conf.tpl\n\n foo = {{ FOO }}\n bar = \"{{ BAR }}\"\n\nIf you run\n\n FOO=123 BAR=abc envtpl < whatever.conf.tpl > whatever.conf\n\nyou'll get back the original whatever.conf.\n\nYou can also specify default values\n\n foo = {{ FOO | default(123) }}\n bar = \"{{ BAR | default(\"abc\") }}\"\n\nRunning\n\n FOO=456 envtpl < whatever.conf.tpl > whatever.conf\n\nwill generate\n\n foo = 456\n bar = \"abc\"\n\nThis is all standard [Jinja2 syntax](http://jinja.pocoo.org/docs/templates/), so you can do things like\n\n {% if BAZ is defined %}\n foo = 123\n {% else %}\n foo = 456\n {% endif %}\n bar = \"abc\"\n\nIf an environment variable is missing, envtpl will throw an error\n\n $ echo '{{ FOO }} {{ BAR }}' | FOO=123 envtpl\n Error: 'BAR' is undefined\n\nYou can change this behaviour to insert empty strings instead by passing the `--allow-missing` flag.\n\nInstead of reading from stdin and writing to stdout, you can pass the input filename as an optional positional argument,\nand set the output filename with the `--output-file` (`-o`) argument.\n\n envtpl -o whatever.conf whatever.conf.tpl\n\nAs a convenience, if you don't specify an output filename and the input filename ends with `.tpl`, the output filename will be the input filename without the `.tpl` extension, i.e.\n\n envtpl whatever.conf.tpl\n # is equivalent to\n envtpl -o whatever.conf whatever.conf.tpl\n\nBy default, envtpl will **delete** the input template file. You can keep it by passing the `--keep-template` flag.\n\nThere's a special `environment(prefix='')` function that you can use as a kind of wildcard variable. If you have `hello.tpl`\n\n hello = {{ FOO }}\n {% for key, value in environment('MY_') %}{{ key }} = {{ value }}\n {% endfor %}\n\nand compile it using\n\n FOO=world MY_baz=qux MY_foo=bar envtpl hello.tpl\n\nYou end up with\n\n hello = world\n baz = qux\n foo = bar\n\nWhat's the point?\n-----------------\n\nI use this script quite a lot in Docker images. Usually I'll have the CMD execute some file, like /bin/start_container, that sets up the runtime configuration for the container by inserting environment variables into config files before starting the main process. A redis example could look like this\n\n #!/bin/bash\n # start_container\n\n envtpl /etc/redis.conf.tpl\n\n redis-server\n\nThis is the use case I've optimised for, so that's why envtpl by default will delete the original template file.\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/andreasjansson/envtpl", "keywords": "template environment variables parameter substitution shell jinja2 docker", "license": "GPL v3", "maintainer": "", "maintainer_email": "", "name": "envtpl", "package_url": "https://pypi.org/project/envtpl/", "platform": "", "project_url": "https://pypi.org/project/envtpl/", "project_urls": { "Homepage": "https://github.com/andreasjansson/envtpl" }, "release_url": "https://pypi.org/project/envtpl/0.6.0/", "requires_dist": null, "requires_python": "", "summary": "Render jinja2 templates on the command line using shell environment variables", "version": "0.6.0" }, "last_serial": 3551455, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "1dde18835c8f7fc2d67babd80da925bd", "sha256": "97df5363e7c96677fbde27a30c7177fd4528d57e99e0266e1f91552c87996608" }, "downloads": -1, "filename": "envtpl-0.1.0.tar.gz", "has_sig": false, "md5_digest": "1dde18835c8f7fc2d67babd80da925bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3821, "upload_time": "2014-02-19T05:56:57", "url": "https://files.pythonhosted.org/packages/63/2e/6c19f6a2748542a3be83f34f423ec17ff1519f09e01d74517f98ff555c9e/envtpl-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "69e5297c26e5a5f548860537878d77da", "sha256": "60d055a4101723748862d2de43eea26295f18a10de84d97a9e6f77d6b2803595" }, "downloads": -1, "filename": "envtpl-0.1.1.tar.gz", "has_sig": false, "md5_digest": "69e5297c26e5a5f548860537878d77da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3827, "upload_time": "2014-02-19T06:06:10", "url": "https://files.pythonhosted.org/packages/56/04/3e90578d5fef8e4de636cf3fb4a0257358e1fe7acf13180d3a965023cc8c/envtpl-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "d9660a84eecd15de0b3630a6361c8229", "sha256": "0a991fb621e1b91a82e8a84b87544193a13411360c22a8b9d3e03a5132cb529c" }, "downloads": -1, "filename": "envtpl-0.1.2.tar.gz", "has_sig": false, "md5_digest": "d9660a84eecd15de0b3630a6361c8229", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3969, "upload_time": "2014-02-19T06:10:44", "url": "https://files.pythonhosted.org/packages/02/b2/ca3d3d210a0559df0b6ef3003ab5d365403877010e4d18a625782b7a3f9a/envtpl-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "c9bd66fb0fe660e1dfe8e9f55f49b66c", "sha256": "5d258617fe556f9ba3262d926e9d3fa33aed746d027828910245ab40e02e2726" }, "downloads": -1, "filename": "envtpl-0.1.3.tar.gz", "has_sig": false, "md5_digest": "c9bd66fb0fe660e1dfe8e9f55f49b66c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3955, "upload_time": "2014-02-19T06:14:08", "url": "https://files.pythonhosted.org/packages/5f/94/38c507e54a47f102ab70df2e61ad238facde8665e3afea83c3d28b034afc/envtpl-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "1df318df16b1815e14f866620aed9b00", "sha256": "20400b8ada5cd3be1c51ead9e299c17f0dae6c13ee66f5fc594713ec8d2660ac" }, "downloads": -1, "filename": "envtpl-0.2.0.tar.gz", "has_sig": false, "md5_digest": "1df318df16b1815e14f866620aed9b00", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3690, "upload_time": "2014-02-22T07:21:30", "url": "https://files.pythonhosted.org/packages/0b/f4/35050b1b906bc061f315f265e11fc3b9cab436f0396def9fb9c7c080ffa8/envtpl-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "6e19bf0ca83ba28d27f1d164e1d824fe", "sha256": "f424be16a811c85297acd12dec4e7cc5d25adf0fc193814bdccaeb9258071293" }, "downloads": -1, "filename": "envtpl-0.2.1.tar.gz", "has_sig": false, "md5_digest": "6e19bf0ca83ba28d27f1d164e1d824fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3690, "upload_time": "2014-02-27T03:04:41", "url": "https://files.pythonhosted.org/packages/ff/d9/20cbc6adf528b83f1506559d4877dda8e169e2d9b70c77a3f67598422583/envtpl-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "8de5160a3e5b0ceb7e0bdffdbeb5b010", "sha256": "991d757b4267ad6a0e57574525b69c3e3aeac27bf242828c6c1cc06927a52302" }, "downloads": -1, "filename": "envtpl-0.2.2.tar.gz", "has_sig": false, "md5_digest": "8de5160a3e5b0ceb7e0bdffdbeb5b010", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3692, "upload_time": "2014-03-26T23:02:58", "url": "https://files.pythonhosted.org/packages/bc/a9/b32ec0d3dfbe6d57ddeb9060b10c74e41bc4a1e796ff428067519a28a750/envtpl-0.2.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "fbc3b69f633281aad19cc00877975c25", "sha256": "fb3053674c351f62567967ecb1323be1481359baf864a2a1904684aa050ee758" }, "downloads": -1, "filename": "envtpl-0.3.tar.gz", "has_sig": false, "md5_digest": "fbc3b69f633281aad19cc00877975c25", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4067, "upload_time": "2014-04-09T04:56:28", "url": "https://files.pythonhosted.org/packages/e0/15/5bf1267b516c14ce3234906c63b7a86b96f7caa7ec87b9f9017e4cbaebb7/envtpl-0.3.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "a87ec6ce2fbe859c6d47f5e0bb1e6d1a", "sha256": "9b941f48b2660147c490df0f48d59f696c3e2cad56bdbe01bbdc80a1e3aa6cb3" }, "downloads": -1, "filename": "envtpl-0.3.0.tar.gz", "has_sig": false, "md5_digest": "a87ec6ce2fbe859c6d47f5e0bb1e6d1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4063, "upload_time": "2014-04-09T04:56:47", "url": "https://files.pythonhosted.org/packages/ab/8e/3aca67ce46d7922611fb581776a1a26bbc39218574057bcae296b4fb3321/envtpl-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "1dbb198f277ff649b4a23fce351f6a5e", "sha256": "661b6664573213b5cd4b32fc2f00e2c5b9912a36fad144fa6748ecb1cc7b5874" }, "downloads": -1, "filename": "envtpl-0.3.1.tar.gz", "has_sig": false, "md5_digest": "1dbb198f277ff649b4a23fce351f6a5e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4064, "upload_time": "2014-04-09T05:06:26", "url": "https://files.pythonhosted.org/packages/8d/87/e2584491947de7443164b40b340fec7d915ece0e5254d2acad5078fbea8c/envtpl-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "c0939b7d15ffb5d0f0143579a42e6ba5", "sha256": "b17584d1f36e9d6cceb9ae11fda45ad8f3341f5b88185e6b8d2cda4abb659c8a" }, "downloads": -1, "filename": "envtpl-0.3.2.tar.gz", "has_sig": false, "md5_digest": "c0939b7d15ffb5d0f0143579a42e6ba5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3981, "upload_time": "2014-04-28T16:25:41", "url": "https://files.pythonhosted.org/packages/16/fa/16adda834b72a5b64d68b0df9aa684f5d1514af20b8bba74bb6ac5faae35/envtpl-0.3.2.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "1696d449491a879b815fd9dd82386548", "sha256": "4bda190b75ef396353012d6465c76535c1d79e56c297e583a337b25e1ce26cdc" }, "downloads": -1, "filename": "envtpl-0.4.1.tar.gz", "has_sig": false, "md5_digest": "1696d449491a879b815fd9dd82386548", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3975, "upload_time": "2015-05-28T22:17:10", "url": "https://files.pythonhosted.org/packages/ea/12/5ac04f205c8982a5f7dad226b507f70eb59a57942af22a3a60e919a5cfcd/envtpl-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "17034835442c22c68fe921f5e4c74997", "sha256": "eeddebecf8d37151cff1f4a2bd1d6f60b458d725c8a5f4cac7ded2f6723e241d" }, "downloads": -1, "filename": "envtpl-0.5.0.tar.gz", "has_sig": false, "md5_digest": "17034835442c22c68fe921f5e4c74997", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4226, "upload_time": "2015-12-07T01:41:56", "url": "https://files.pythonhosted.org/packages/e3/b7/29fc50de54fb74e9dd0c051aee9dcf9f1b1da8efaa9e4ec1f52b057a54e9/envtpl-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "32cf1597705c892da317206000478a04", "sha256": "02fc28b52c16c4e1057aaea361412db25d67956d42a2c9b6e66b87a3b4ae4c18" }, "downloads": -1, "filename": "envtpl-0.5.1.tar.gz", "has_sig": false, "md5_digest": "32cf1597705c892da317206000478a04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4104, "upload_time": "2016-05-17T19:51:43", "url": "https://files.pythonhosted.org/packages/13/e3/9bff50b1d7905cfd45b6c4c9831dce30887bc1adc525f1c5eb58d38086eb/envtpl-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "525c7bc7bc826c37a93f3894acd89116", "sha256": "aea291572cb29eba5adac45d13d0ea29529ca834d8f1d5b49f98bfd433f5a668" }, "downloads": -1, "filename": "envtpl-0.5.2.tar.gz", "has_sig": false, "md5_digest": "525c7bc7bc826c37a93f3894acd89116", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4128, "upload_time": "2016-05-17T20:44:25", "url": "https://files.pythonhosted.org/packages/12/dc/326c070484599f6b3d56f0c35876b2a8988f99f9ca36317c86e110101a95/envtpl-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "1bae45c27345f2f3e880768fb47fdcc1", "sha256": "f7f9d4733d53a2d9cf5fa70dc1edeb2c26f86d2585f574f8c5447c13f906a914" }, "downloads": -1, "filename": "envtpl-0.5.3.tar.gz", "has_sig": false, "md5_digest": "1bae45c27345f2f3e880768fb47fdcc1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4228, "upload_time": "2016-07-18T07:23:06", "url": "https://files.pythonhosted.org/packages/78/b3/5bdef39c1828d592ba27dd0fa6eb11889643dc60d57c97712d127bc3415e/envtpl-0.5.3.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "0e1273d427a017d5340d846385db6e96", "sha256": "d0ffd89ede7f8221d3b33003146748b3b6bdf98ebf07ca0a63287bf4ad623aca" }, "downloads": -1, "filename": "envtpl-0.6.0.tar.gz", "has_sig": false, "md5_digest": "0e1273d427a017d5340d846385db6e96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4643, "upload_time": "2018-02-04T22:29:30", "url": "https://files.pythonhosted.org/packages/02/d6/c00aac9a35972a6c0fcf55afdf2f61c9316a6b688db01185c948d9d78b26/envtpl-0.6.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0e1273d427a017d5340d846385db6e96", "sha256": "d0ffd89ede7f8221d3b33003146748b3b6bdf98ebf07ca0a63287bf4ad623aca" }, "downloads": -1, "filename": "envtpl-0.6.0.tar.gz", "has_sig": false, "md5_digest": "0e1273d427a017d5340d846385db6e96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4643, "upload_time": "2018-02-04T22:29:30", "url": "https://files.pythonhosted.org/packages/02/d6/c00aac9a35972a6c0fcf55afdf2f61c9316a6b688db01185c948d9d78b26/envtpl-0.6.0.tar.gz" } ] }