{ "info": { "author": "Stan James, Gabriel Pickard", "author_email": "wanderingstan@gmail.com, wergomat@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "[![Build Status](https://travis-ci.com/error-central/diffenv.svg?branch=master)](https://travis-ci.com/error-central/diffenv)\n\n# diffenv\n\n## Overview\n\ndiffenv gathers and compares development environments. It defines \na simple standard for storing a complete picture of an environment\nas a structured collection of facets such as \"python\", \"shell\",\n\"git\", etc.\n\n![output](https://user-images.githubusercontent.com/673455/62836101-182d1200-bc60-11e9-95c7-1f52dfb197b7.gif)\n\n\n### Output your current environment\n```yaml\n#$ diffenv\npython:\n python-version: Python 3.7.3\nshell:\n envvars:\n EDITOR: sublw\n GIT_EDITOR: subl -w\n PRISMA_ENDPOINT: http://prisma:4466\n GOOGLE_API_KEY(HASHED): 603ade004ce4bb13c3f66bc1644164ca(HASH)\nos:\n timezone: 0200\n version: Darwin 18.7.0 x86_64\n\n# ...trimmed\n```\n(Simplified example. See [full example](https://raw.githubusercontent.com/error-central/diffenv/master/examples/gabe_env.yaml) here)\n\nYou can also get just specific facets:\n\n```bash\n# Get all python-relevant information\ndiffenv --facet python\n\n# List environment variables\ndiffenv -f shell:envvars\n```\n\n### Share your environment with co-worker\n```\n#$ diffenv --share\n\nYour env was uploaded to: https://transfer.sh/P1gQZ/env.yaml\n\nRun the following line on comparison environment:\n\ndiffenv --compare https://transfer.sh/P1gQZ/env.yaml\n```\n\n### Diff your environment with co-worker\n```diff\n#$ diffenv --compare https://transfer.sh/P1gQZ/env.yaml\ngit:\n git-user-name:\n- <<-: Stan James\n+ +>>: Gabriel Pickard\n version:\n- <<-: git version 2.22.0\n+ +>>: git version 2.11.0\nos:\n version:\n- <<-: Darwin 18.7.0 x86_64\n+ +>>: Linux 4.19.34-04457-g5b63d4390e96 x86_64\npython:\n python-version:\n- <<-: Python 3.7.3\n+ +>>: Python 2.7.13\n python3-version:\n- <<-: Python 3.7.3\n+ +>>: Python 3.5.3\n which-python:\n- <<-: /usr/local/opt/python/libexec/bin/python\n+ +>>: /usr/bin/python\n\n# ...trimmed\n```\n\n### Include environment in submitted issues\n\nIf you are an open-source project maintainer you can use diffenv to structure the submission of bug reports. Tell your users to specify the conditions under which their bug occurs by sending along their diffenv output. This way you can get significantly more detailed insight from the get-go without having to go back and forth with the reporter of the bug.\n\nFor github issues we provide a handy way to submit a new issue and include a local diffenv dump directly from the command line.\n\n```bash\n#$ diffenv --issue\n\n# Browser will open a Github issue with env data automatically added:\n```\n\n\"Screen\n\n\n### Compare with past commits\n\n```diff\n#$ diffenv --compare .diffenv/commits/2b19c9e47af0828c8775ee231768631e0b06ae0f.diffenv\ngit:\n version:\n- <<-: git version 2.11.0\n+ +>>: git version 2.22.0\npython:\n python-version:\n- <<-: Python 3.7\n+ +>>: Python 3.7.3\n```\n\nNote this requires the git commit hooks to have been installed, so that diffenv is run on each commit.\n```\n#$ diffenv --add-hooks\n```\n\n\n## Installation\n\n```bash\npython3 -m pip install diffenv\n```\nCurrently diffenv only supports Python 3.\n\n## Use\n\nTo output your current development environment to stderr:\n```\ndiffenv\n```\n\nTo compare your environment with @werg:\n```bash\ndiffenv -c https://raw.githubusercontent.com/error-central/diffenv/master/examples/gabe_env.yaml\n```\n\nTo share your environment with a coworker for comparison:\n```bash\ndiffenv --share\n```\n\nFor a complete list of command line options run:\n```bash\n$ diffenv --help\n\nusage: diffenv [-h] [-o OUTPUT] [-c COMPARE] [--add-hooks] [--share] [--issue]\n [--post POST] [--config CONFIG] [--ignore-config] [--no-color]\n [--no-paging] [--version] [-f FACET]\n\nDiff your total environment. Run without any params to simply output current\nenvironment state as YAML.\n\noptional arguments:\n -h, --help show this help message and exit\n -o OUTPUT, --output OUTPUT\n output to file instead of stdout\n -c COMPARE, --compare COMPARE\n file or URL to compare against the current env\n --add-hooks install git hooks in current repo and exit\n --share store current env and return URL that can be shared\n --issue create github issue\n --post POST POST env to specific URL when sharing; must be used\n with --share\n --config CONFIG load config from specific file\n --ignore-config ignore configs and run all facets\n --no-color don't color diff output\n --no-paging don't use less for paging output\n --version display version and exit\n -f FACET, --facet FACET\n run a specific facet\n\nMore information and source code at https://github.com/error-central/diffenv\n\n```\n\n## Customization\n\ndiffenv can be customized for a user or for a repo. Customizations are put in a directory named `.diffenv` in the user's home directory or the git repos top directory.\n\n### Custom Facets\n\nCustom facets for a git repo should be saved in `.diffenv/facets/`\n\nThe facet file itself needs to be excutable (`chmod +x `).\n\n### Configuration\n\nYou can limit which facets are run with a yaml file saved in `.diffenv/config.yaml`\n\nHere's an example config:\n\n```yaml\n# Currently there is only one relevant part of the config, facets.\nfacets:\n # If you give the name of a directory, it will run all facets in it.\n # In this case, we'll run every facet within `python`.\n python:\n \n # ...or you can list all the way down to the facet within a directory.\n # Here we'll only run the `node-version` facet.\n nodejs:\n node-version:\n \n git:\n \n os:\n \n shell:\n # You can also provide command line arguments as list to the facet.\n # In this case we pass the `shell` facet a whitelist of environment \n # variables to show.\n envvars:\n - DISPLAY\n - USER\n - PATH\n - PWD\n - HOME\n - SHELL\n - COLORTERM\n - TERM\n directory:\n # In this case we restrict how deep we recur into child directories\n listing: 1\n```\n\n\n## Contributing to diffenv\n\n### Development install\n\nIf you are developing locally, do _not_ install as above, and instead run the following in the repo root directory:\n\n```bash\n# Remove global installation of diffenv, if present\npip3 uninstall diffenv\n\n# depending on your setup you may have to prefix sudo to this command\npip3 install --editable .\n```\n\nNow `diffenv` will always point to your local repo, including any changes.\n\n\n### Testing\n\n```bash\npython3 -m unittest tests/tests.py\n```\n\nFor testing on docker containers:\n```bash\ndocker pull python\ndocker run -it python bash\n# Now e.g. `pip install diffenv`\n```\n\n### Creating a release\n\nFirst edit `setup.py` and bump the version, then:\n\n```bash\npython3 setup.py sdist\n# modify the below to match the file of the version you just created\ntwine upload dist/diffenv-\n```", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/error-central/diffenv", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "diffenv", "package_url": "https://pypi.org/project/diffenv/", "platform": "", "project_url": "https://pypi.org/project/diffenv/", "project_urls": { "Homepage": "http://github.com/error-central/diffenv" }, "release_url": "https://pypi.org/project/diffenv/0.2.7/", "requires_dist": null, "requires_python": "", "summary": "Compare development environments", "version": "0.2.7" }, "last_serial": 5968842, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "6eb8cff3f1c0cde7f0c9dde6c0b5b1e1", "sha256": "fce76992f0fdafa239152e6bc9f29cc91433233e5b304162a95c42d8c179cc1c" }, "downloads": -1, "filename": "diffenv-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6eb8cff3f1c0cde7f0c9dde6c0b5b1e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4559, "upload_time": "2019-07-26T10:26:44", "url": "https://files.pythonhosted.org/packages/6a/a2/3046a884d7db632ad4d6b8e7ea119c1dd8361a49cbbf9cfff14b38661ab0/diffenv-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "092a30beb33b5be1eb1765b5105d5f1c", "sha256": "76e34709b17391b5d3be8986ca2407dfd8a40b7b97e0dc52d6e5cd5e59d19a62" }, "downloads": -1, "filename": "diffenv-0.1.tar.gz", "has_sig": false, "md5_digest": "092a30beb33b5be1eb1765b5105d5f1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3040, "upload_time": "2019-07-26T10:26:46", "url": "https://files.pythonhosted.org/packages/2c/ee/04076540be78536fc1795a7643147bedf2547a28403eb897ca0e20234609/diffenv-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "579f0df85651510789b154084a573920", "sha256": "c262188507c3e6cfca8299c205c51cd02e30b910dad151bd68ad56741a64f792" }, "downloads": -1, "filename": "diffenv-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "579f0df85651510789b154084a573920", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6911, "upload_time": "2019-08-01T13:02:32", "url": "https://files.pythonhosted.org/packages/80/f2/6d5142e1356067a6a0b55762df4a84a344ad9a70cbc4fb10f5d622e58910/diffenv-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9b7bc3e324aa4f6a7abe3a1795a9c057", "sha256": "2a2e429bf70908ef65101f5ceceba9af5c9435bbda5b394549488327783baa9e" }, "downloads": -1, "filename": "diffenv-0.1.1.tar.gz", "has_sig": false, "md5_digest": "9b7bc3e324aa4f6a7abe3a1795a9c057", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5025, "upload_time": "2019-08-01T13:02:35", "url": "https://files.pythonhosted.org/packages/e5/77/8ca7a1f9d46d77f61038fcd78fc22bbc177c1c723df666dfa5b38ddf7fad/diffenv-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "eedb060b59097e94e47550b9ef38724f", "sha256": "7728aa4c307bbfc8960b9afea1d989d0e13586a1e9430cb68eab7d18c18874dd" }, "downloads": -1, "filename": "diffenv-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "eedb060b59097e94e47550b9ef38724f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9915, "upload_time": "2019-08-11T12:15:41", "url": "https://files.pythonhosted.org/packages/1c/6a/248b0ccb75c1d36bbc368eebc152e9a6c4be88d4c8e9b836e651b4023cce/diffenv-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e05c8bdf13e00c96d455d69c9720a358", "sha256": "98c8c292ad075f56c997839f355843f71ee7217d4d08d54a7485e1a524addcfd" }, "downloads": -1, "filename": "diffenv-0.2.0.tar.gz", "has_sig": false, "md5_digest": "e05c8bdf13e00c96d455d69c9720a358", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7918, "upload_time": "2019-08-11T12:15:42", "url": "https://files.pythonhosted.org/packages/9d/dd/9e56ebcfca86f141004980cd0f91060b48c4684d5633da552676605583bd/diffenv-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "95b779c10138620a828738bc5a18083e", "sha256": "677d5c047c0104ba789e638b82ad9205985dfe43485bc2d307fdeb96b1f89bfe" }, "downloads": -1, "filename": "diffenv-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "95b779c10138620a828738bc5a18083e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11399, "upload_time": "2019-08-12T15:38:10", "url": "https://files.pythonhosted.org/packages/e2/6d/e40a782a4b680e6ee12da3e036d01698bbc3fce29e80d32fc55af7a683a0/diffenv-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4f424cedbef7aa987c4df83e2e42ce83", "sha256": "d34798a947bfb2c3cee203c4f0c626c6ae8746099793616707db96475c427afb" }, "downloads": -1, "filename": "diffenv-0.2.1.tar.gz", "has_sig": false, "md5_digest": "4f424cedbef7aa987c4df83e2e42ce83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8251, "upload_time": "2019-08-12T15:38:13", "url": "https://files.pythonhosted.org/packages/71/d6/930df1263b531f739b40279044de8ef08449ec5a07ffeae090a1ac5c7ece/diffenv-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "129a3a8d28839c598d2a726cfa928021", "sha256": "518aa81417c1ae88aefddd07a92faed5df4442a364188407a1e89380cc827a26" }, "downloads": -1, "filename": "diffenv-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "129a3a8d28839c598d2a726cfa928021", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11402, "upload_time": "2019-08-12T15:55:18", "url": "https://files.pythonhosted.org/packages/49/07/c8eb93170d36ea47ee82555c71ba76bca6d2ae239fdb5dc144b71c483fc2/diffenv-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd3eee7b050bd1416db031db0a57df76", "sha256": "7aa7e7125b1f11b6744f155cff9188a466f09d1bdf3676733a234a22a49ea283" }, "downloads": -1, "filename": "diffenv-0.2.2.tar.gz", "has_sig": false, "md5_digest": "cd3eee7b050bd1416db031db0a57df76", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11683, "upload_time": "2019-08-12T15:55:22", "url": "https://files.pythonhosted.org/packages/46/fc/6a28f2c896bca3498640247adb1035a654c0ffa9794c5194596fe6188ea7/diffenv-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "20f9dc4746956cba86ca992733967030", "sha256": "99b73636fc18d7418c0c11cbfa8e1cea3936ed39ac050c6c64ddadac0ca323c2" }, "downloads": -1, "filename": "diffenv-0.2.3.tar.gz", "has_sig": false, "md5_digest": "20f9dc4746956cba86ca992733967030", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11684, "upload_time": "2019-08-12T16:09:37", "url": "https://files.pythonhosted.org/packages/3f/22/4da21e2c79e2b2a1b3661e858b12a6ed81f7b436fc9a26dadf6c1d8ea1c6/diffenv-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "54776b8e2fc4b3cc8532fea802297bea", "sha256": "9068b034a271e6a266020a007b62c827394902871f39d9c402b3924aeaf625e0" }, "downloads": -1, "filename": "diffenv-0.2.4.tar.gz", "has_sig": false, "md5_digest": "54776b8e2fc4b3cc8532fea802297bea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10741, "upload_time": "2019-08-12T16:21:46", "url": "https://files.pythonhosted.org/packages/67/d3/e35fec0f5f3d0e1a2fad7156963bb5ff6cf2201ba67c0d659f44e5cd9ba0/diffenv-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "17e678c7d7810f73db8b3a58efc02fc0", "sha256": "e37207f70aa5cdc8d86d5c6b6edba4cd258fe7d0c4bc44f4d931ecd3dd87fda1" }, "downloads": -1, "filename": "diffenv-0.2.5.tar.gz", "has_sig": false, "md5_digest": "17e678c7d7810f73db8b3a58efc02fc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11503, "upload_time": "2019-08-13T08:50:13", "url": "https://files.pythonhosted.org/packages/c8/d9/1dfbf1cce610b8ab0ef033ac3406e3985228eaef5f8abdec75a63356d969/diffenv-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "9d241796a269b106d9829c6acd48a92b", "sha256": "1fc2b92fd681531fd21bc716a245bbcb0656ff7be88145824f7438ceee3410ef" }, "downloads": -1, "filename": "diffenv-0.2.6.tar.gz", "has_sig": false, "md5_digest": "9d241796a269b106d9829c6acd48a92b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12681, "upload_time": "2019-08-14T16:19:18", "url": "https://files.pythonhosted.org/packages/83/de/46e74ab4b63d645c9a3a0fbcd7587ae60daaca163eaca1a2e35da1480a87/diffenv-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "68f69846852442e9f951603b7204772a", "sha256": "a212135bd5ec9a6dfcbe19282fba958c1d03eec7ab3101d9c3f8fc9d6353308b" }, "downloads": -1, "filename": "diffenv-0.2.7.tar.gz", "has_sig": false, "md5_digest": "68f69846852442e9f951603b7204772a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14370, "upload_time": "2019-10-13T21:34:50", "url": "https://files.pythonhosted.org/packages/30/72/cfe3a49517feddc1eadc797a4e938dccd053cff97a5e44b4b125f2eea79d/diffenv-0.2.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "68f69846852442e9f951603b7204772a", "sha256": "a212135bd5ec9a6dfcbe19282fba958c1d03eec7ab3101d9c3f8fc9d6353308b" }, "downloads": -1, "filename": "diffenv-0.2.7.tar.gz", "has_sig": false, "md5_digest": "68f69846852442e9f951603b7204772a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14370, "upload_time": "2019-10-13T21:34:50", "url": "https://files.pythonhosted.org/packages/30/72/cfe3a49517feddc1eadc797a4e938dccd053cff97a5e44b4b125f2eea79d/diffenv-0.2.7.tar.gz" } ] }