Skip to main content

Compare development environments

Project description

Build Status

diffenv

Overview

diffenv gathers and compares runtime environments. It defines a simple standard for storing a complete picture of a development environment.

output

Simplified example

$ diffenv
python:
  python-version: Python 3.7.3
shell:
  envvars:
    EDITOR: sublw
    GIT_EDITOR: subl -w
    API_ENDPOINT: http://api.lvh.me:4000
    PRISMA_ENDPOINT: http://prisma:4466
os:
  timezone: 0200
  version: Darwin 18.7.0 x86_64

Full example output.

Simplified diff

git:
  git-user-name:
-    <<-: Stan James
+    +>>: Gabriel Pickard
  version:
-    <<-: git version 2.22.0
+    +>>: git version 2.11.0
os:
  version:
-    <<-: Darwin 18.7.0 x86_64
+    +>>: Linux 4.19.34-04457-g5b63d4390e96 x86_64
python:
  python-version:
-    <<-: Python 3.7.3
+    +>>: Python 2.7.13
  python3-version:
-    <<-: Python 3.7.3
+    +>>: Python 3.5.3
  which-python:
-    <<-: /usr/local/opt/python/libexec/bin/python
+    +>>: /usr/bin/python

Use cases

  • Add environment data to bug reports, even automatically. Example
  • Diagnose what subtle difference in environment is making things fail on your coworker's machine.
  • Compare your current environment against past commits when things worked.

Options

usage: diffenv [-h] [-o OUTPUT] [-c COMPARE] [--add-hooks] [--share] [--issue]
               [--post POST] [--config CONFIG] [--ignore-config] [--no-color]
               [--no-paging] [--version]

Diff your total environment. Run without any params to simply output current
environment state as YAML.

optional arguments:
  -h, --help            show this help message and exit
  -o OUTPUT, --output OUTPUT
                        output to file instead of stdout
  -c COMPARE, --compare COMPARE
                        file or URL to compare against the current env
  --add-hooks           install git hooks in current repo and exit
  --share               store current env and return URL that can be shared
  --issue               create github issue
  --post POST           POST env to specific URL when sharing; must be used
                        with --share
  --config CONFIG       load config from specific file
  --ignore-config       ignore configs and run all facets
  --no-color            don't color diff output
  --no-paging           don't use less for paging output
  --version             display version and exit

Installation

python3 -m pip install diffenv

Currently diffenv only supports Python 3.

Use

To output your current development environment to stderr:

diffenv

To compare your environment with @werg:

diffenv -c https://raw.githubusercontent.com/error-central/diffenv/master/examples/gabe_env.yaml

To share your environment with a coworker for comparison:

diffenv --share

For a complete list of command line options run:

diffenv --help

Customization

diffenv 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.

Custom Facets

Custom facets for a git repo should be saved in .diffenv/facets/<yourfacet>

The facet file itself needs to be excutable (chmod +x <yourfacet>).

Configuration

You can limit which facets are run with a yaml file saved in .diffenv/config.yaml

See example_config.yaml for more information.

Contributing to diffenv

Development install

If you are developing locally, do not install as above, and instead run the following in the repo root directory:

# depending on your setup you may have to prefix sudo to this command
pip3 install --editable .

Now diffenv will always point to your local repo, including any changes.

For testing on docker containers:

docker pull python
docker run -it python bash
# Now e.g. `pip install diffenv`

Testing

python3 -m unittest tests/tests.py

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

diffenv-0.2.6.tar.gz (12.7 kB view hashes)

Uploaded Source

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