{ "info": { "author": "Steven Arcangeli", "author_email": "steven@highlig.ht", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3" ], "description": "Devbox\n======\n.. image:: https://travis-ci.org/mathcamp/devbox.png?branch=master\n :target: https://travis-ci.org/mathcamp/devbox\n\nThis is a tool for quickly setting up repositories for development. It was\ncreated specifically for python projects, but has some features that should be\nuniversally useful.\n\nCreate a Box\n============\nFirst install devbox using pip. Then run ``dcreate python path/to/repository``.\nThere are different templates which provide different base configurations for\nyour repo. For more information run ``dcreate -h``.\n\nAfter running the create command, your repository will have a bunch of new\nfiles that provide some default behavior. Alter them as you desire, then add\nand commit them.\n\nUnboxing\n========\nIf devbox is installed, you can run ``dunbox git@github.com:user/repo.git``. If\ndevbox is not installed, run::\n\n wget https://raw.github.com/mathcamp/devbox/master/devbox/unbox.py && \\\n python unbox.py git@github.com:user/repo.git\n\nIf you have already cloned the repository you want to unbox, just\npass in the path to the repository and devbox will complete the setup::\n\n wget https://raw.github.com/mathcamp/devbox/master/devbox/unbox.py && \\\n python unbox.py path/to/repo\n\nFeatures\n========\nDevbox makes it easy to manage **pre-commit hooks**. It creates a directory\ncalled ``git_hooks`` and links that to your ``.git/hooks`` directory during\nsetup. Additionally, it provides an easy way to run pre-commit commands on your\nproject or certain modified files in your project. See the ``modified`` and\n``all`` fields for more detail.\n\nDevbox allows you to run arbitrary **setup commands** when setting up a\nrepository for development. Useful for installing dependencies, creating\nsymlinks, etc.\n\nDevbox allows you to specify **project dependencies**, which makes it easy to\nbundle multiple projects together. If your project depends on several libraries\nthat you also frequently edit, you can set the libraries as dependencies and\neasily set those up for development at the same time as the main project.\n\nPython-specific Features\n------------------------\nDevbox provides a simple interface for creating and installing into a\n**virtualenv** automatically during setup.\n\nDevbox optionally includes ``version_helper.py``, a utility for automatically\ngenerating package versions based on git tags.\n\nFor linking to other projects, investigate the ``parent`` and ``dependencies``\noptions in the conf file. Those will be respected in the virtualenv.\n\nFormat of Devbox conf\n=====================\n.devbox.conf is a json-encoded dictionary with several fields::\n\n dependencies : list\n List of git urls to also clone and set up when unboxing this repo (run\n after pre_setup, before post_setup)\n pre_setup : list\n List of commands to run at the start of unboxing. Instead of a system\n command, you may also specify the url of a script (e.g.\n https://raw.github.com/user/repo/master/path/to/script.sh). That script\n will be downloaded and run.\n post_setup : list\n List of commands to run after any dependencies have been handled. Can\n specify a url, same as pre_setup.\n hooks_all : list\n List of commands to run during the pre-commit hook.\n hooks_modified : list\n A list of (pattern, command) pairs. The pattern is a glob that will\n match modified files. During the pre-commit hooks, each modified file\n that matches the pattern will be passed as an argument to the command.\n (ex. [[\"*.py\", \"pylint --rcfile=.pylintrc\"], [\"*.js\", \"jsl\"]])\n\nPython-specific fields::\n\n env : dict\n path : str\n The path to a virtualenv relative to repository root.\n args : list\n List of flags to pass to the virtualenv command (e.g.\n [\"--system-site-packages\"])\n parent : str or None\n When unboxing this repo, look for a directory of this name at the same\n level in your directory structure. If it exists, devbox will make a\n symbolic link to that virtualenv instead of constructing one for this\n repo.\n\nPre-Commit in-depth\n===================\nThere is a problem with na\u00efve pre-commit hooks. To illustrate this, here is a trivial example.\n\n**Expected**:\n\n* modify files A and B, putting syntax error in B\n* git add A\n* git commit\n* git add B\n* git commit BLOCKED by pre-commit hook failure on B\n* fix and git add B\n* git commit\n* smiles all around\n\n**Actual**:\n\n* modify files A and B, putting syntax error in B\n* git add A\n* git commit BLOCKED by pre-commit hook failure on B\n* sadness\n\nThis is a simple example, but it's very easy to do this to yourself frequently.\nThere's a much worse variant where the hooks can pass even though you're\ncommitting a broken build. The ``hook.py`` file is designed to fix this and\nother issues. It performs a git checkout-index into a temporary folder, copies\nover any git submodules, and then runs the hooks on those temporary files.\n\n\n0.2.0\n-----\n* First release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/mathcamp/devbox", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "devbox", "package_url": "https://pypi.org/project/devbox/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/devbox/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/mathcamp/devbox" }, "release_url": "https://pypi.org/project/devbox/0.2.0/", "requires_dist": null, "requires_python": null, "summary": "Developer environment candy", "version": "0.2.0" }, "last_serial": 973149, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "39c8cb717e17e6f8db7394854ee50315", "sha256": "a1e7b9014389346e5bf380608871bf4cf24665331060801415aca09cb36d869b" }, "downloads": -1, "filename": "devbox-0.2.0.tar.gz", "has_sig": false, "md5_digest": "39c8cb717e17e6f8db7394854ee50315", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23062, "upload_time": "2014-01-18T08:21:46", "url": "https://files.pythonhosted.org/packages/e8/e7/c80538e776b106bde9c2a4d93f83a7f0016bcb917fbe6e61326c155bab91/devbox-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "39c8cb717e17e6f8db7394854ee50315", "sha256": "a1e7b9014389346e5bf380608871bf4cf24665331060801415aca09cb36d869b" }, "downloads": -1, "filename": "devbox-0.2.0.tar.gz", "has_sig": false, "md5_digest": "39c8cb717e17e6f8db7394854ee50315", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23062, "upload_time": "2014-01-18T08:21:46", "url": "https://files.pythonhosted.org/packages/e8/e7/c80538e776b106bde9c2a4d93f83a7f0016bcb917fbe6e61326c155bab91/devbox-0.2.0.tar.gz" } ] }