{ "info": { "author": "Bj\u00f6rn Andersson", "author_email": "ba@sanitarium.se", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ], "description": "radish\r\n======\r\n\r\n|CircleCI| |Latest Version| |Python versions|\r\n\r\nRadish is a task runner that understands version control.\r\n\r\nYou define a command that applies to multiple subprojects in your\r\nrepository and thenradish will figure out which projects have changed\r\nand run the command for just those projects. Radish isn't a replacement\r\nfor make, gulp, gradle, rake, or any other task runner. It's a\r\nsupplement for orchestrating other runners and scripts with some smarts\r\nfrom your version control repository.\r\n\r\nIf you're using a\r\n`CI `__/`CD `__\r\nserver like `Concourse `__ or\r\n`GoCD `__ which supports pipelines as first-class\r\ncitizens you probably have no need for radish on your CI/CD server. It\r\nmight still be useful on your dev machine, though.\r\n\r\nInstallation\r\n------------\r\n\r\nRadish is available on PyPi as\r\n`radish-run `__ and can be\r\ninstalled on most systems with pip:\r\n\r\n.. code:: shell\r\n\r\n $ pip install radish-run\r\n\r\nHow to use\r\n----------\r\n\r\nAn example invocation of radish:\r\n\r\n.. code:: shell\r\n\r\n $ radish command tests --from 19abc023 --to 2514ecb1\r\n Changed paths:\r\n - extensions/cool-extension/\r\n - frontend/js/\r\n\r\n Running tests for extensions/cool-extension/:\r\n ...........\r\n OK\r\n\r\n Running tests for frontend/js/:\r\n ..........................\r\n OK\r\n\r\n All commands ended successfully and ran in 9.75s.\r\n\r\nConfiguration\r\n-------------\r\n\r\nradish configuration is a yaml file named ``Radishfile``, because I can.\r\n\r\n.. code:: yaml\r\n\r\n paths:\r\n - extensions/*/ # Mark each subdirectory in extensions as a path\r\n - frontend/js/\r\n\r\n commands: # Runs from the directory denoted by paths above\r\n tests:\r\n default: bin/rspec spec\r\n frontend/js/: npm test\r\n\r\nAn example use case\r\n-------------------\r\n\r\nTake that you're building a single page web app, it consists of two\r\nparts: - The backend that delivers JSON - The frontend that holds all\r\nthe clicky bits that end-users see\r\n\r\nBecause cross-functional teams this project is in one repository, which\r\nis a great win for productivity. But it has a downside: when there are\r\nonly changes to the backend, then all the tests for the frontend is\r\nstill run. Finally, after running all tests it can get deployed, but\r\nthen both sites get deployed despite nothing changing on the frontend.\r\n\r\nSo this is a crazy situation. It shouldn't be. So this is where radish\r\ncomes in. You tell radish about ``test`` and ``deploy``, and what that\r\nmeans for both the backend and the frontend, then on your CI server you\r\nrun the commands with the last green commit. Radish then figures out\r\nwhat has changed from the current commit and the last one, and only runs\r\nthe command for those projects.\r\n\r\nContributing\r\n------------\r\n\r\nRoadmap\r\n~~~~~~~\r\n\r\n- Define a path/project to always run, no matter whether there are\r\n changes or not\r\n- Run a different command if there are changes to the project\r\n- Allow for changed files to be passed in to commands. Primarily a\r\n feature for local dev boxes, so you only run the command against\r\n changed files.\r\n- Dependencies between projects. If the ``frontend-payment`` project\r\n changes then run the command in the ``frontend`` project as well.\r\n- Custom differs for Ci systems so they can smartly figure out what the\r\n last green commit was, instead of relying on ``HEAD~1`` as the poor\r\n mans \"what was the last change?\"\r\n\r\nLocal development\r\n~~~~~~~~~~~~~~~~~\r\n\r\nTo get started make with your current global version of Python do:\r\n\r\n.. code:: shell\r\n\r\n $ git clone https://github.com/gaqzi/radish.git\r\n $ cd radish/\r\n $ make develop\r\n $ make test\r\n\r\nThis will install all dependencies, check out the test repo, and then\r\nrun all the tests.\r\n\r\nLicense\r\n-------\r\n\r\nBeerware License\r\n\r\n.. |CircleCI| image:: https://circleci.com/gh/gaqzi/radish.svg?style=shield\r\n :target: https://circleci.com/gh/gaqzi/radish\r\n.. |Latest Version| image:: https://img.shields.io/pypi/v/gocd-cli.svg\r\n :target: https://pypi.python.org/pypi/radish-run/\r\n.. |Python versions| image:: https://img.shields.io/pypi/pyversions/gocd-cli.svg\r\n :target: https://pypi.python.org/pypi/radish-run/", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/gaqzi/radish/", "keywords": "", "license": "Beerware license", "maintainer": "", "maintainer_email": "", "name": "radish-run", "package_url": "https://pypi.org/project/radish-run/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/radish-run/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/gaqzi/radish/" }, "release_url": "https://pypi.org/project/radish-run/0.1.0/", "requires_dist": null, "requires_python": null, "summary": "A task runner that understands version control", "version": "0.1.0" }, "last_serial": 2342448, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "862ff1411d540d40918ea3c27ad44d84", "sha256": "1f72ffcabec543b06e2b845b1e5d082036ecbbb4762a66e1691907a93c47ce1f" }, "downloads": -1, "filename": "radish_run-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "862ff1411d540d40918ea3c27ad44d84", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9109, "upload_time": "2016-09-14T14:38:15", "url": "https://files.pythonhosted.org/packages/27/15/093c6438e98b612fb4c7ea0bd3428d063136b3d2090590fecb981bbdbf5d/radish_run-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6139089046d07c76070ef663b8d03bd0", "sha256": "ff2286251532326acaceb1341b5267d5761dae89152c882a0273b843ee94aa38" }, "downloads": -1, "filename": "radish-run-0.1.0.tar.gz", "has_sig": false, "md5_digest": "6139089046d07c76070ef663b8d03bd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7962, "upload_time": "2016-09-14T14:38:17", "url": "https://files.pythonhosted.org/packages/1e/68/8561a33553941b68c889840296a46bc3df14ad119854843a0328f5a2c025/radish-run-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "862ff1411d540d40918ea3c27ad44d84", "sha256": "1f72ffcabec543b06e2b845b1e5d082036ecbbb4762a66e1691907a93c47ce1f" }, "downloads": -1, "filename": "radish_run-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "862ff1411d540d40918ea3c27ad44d84", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9109, "upload_time": "2016-09-14T14:38:15", "url": "https://files.pythonhosted.org/packages/27/15/093c6438e98b612fb4c7ea0bd3428d063136b3d2090590fecb981bbdbf5d/radish_run-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6139089046d07c76070ef663b8d03bd0", "sha256": "ff2286251532326acaceb1341b5267d5761dae89152c882a0273b843ee94aa38" }, "downloads": -1, "filename": "radish-run-0.1.0.tar.gz", "has_sig": false, "md5_digest": "6139089046d07c76070ef663b8d03bd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7962, "upload_time": "2016-09-14T14:38:17", "url": "https://files.pythonhosted.org/packages/1e/68/8561a33553941b68c889840296a46bc3df14ad119854843a0328f5a2c025/radish-run-0.1.0.tar.gz" } ] }