{ "info": { "author": "Peter Zhang", "author_email": "pzmosquito@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# tuliptask\nSimple task runner supports running multiple tasks in parallel.\n\n## Installation\n```sh\npip install tuliptask\n```\n\n## Basic Usage\n- Create a tulip task file: `tulipfile.py`\n- Add a simple task\n```python\nfrom tuliptask import TulipTask\n\n@TulipTask.task(\"dev\") # use decorator to define a task\nclass Dev:\n def run(self, args): # tuliptask will call `run()` function to run the task.\n print(\"start development\")\n\nTulipTask.start()\n```\n- run the command in terminal:\n```sh\ntulip dev\n```\n\n## add arguments to the task\n```python\nfrom tuliptask import TulipTask\n\n@TulipTask.task(\"dev\")\nclass Dev:\n def setup(self, parser): # tuliptask will call `setup()` function to add arguments.\n parser.add_argument(\"--container\") # use Python built-in `argparse` to add arguments\n\n def run(self, args):\n print(f\"start development for container: {args.container}\")\n\nTulipTask.start()\n```\n\n## run shell command\n```python\ndef run(self, args):\n tulip.proc.run(\"docker build\")\n # or use docker command shortcut\n tulip.proc.d(\"build\")\n```\navailable command shortcuts:\n- `proc.d()` = `proc.run(\"docker\")`\n- `proc.dc()` = `proc.run(\"docker-compose\")`\n- `proc.k()` = `proc.run(\"kubectl\")`\n- `proc.mk()` = `proc.run(\"minikube\")`\n\n## extend base task\nTuliptask provides several base tasks for convenience.\n\n```python\nfrom tuliptask import TulipTask\nfrom tuliptask.tasks import KubeTask\n\n@TulipTask.task(\"dev\")\nclass Dev(KubeTask):\n def setup(setup, parser):\n super().setup(parser)\n\n def run(self, args):\n super().run(args)\n print(\"start development\")\n\nTulipTask.start()\n```\nbase task will add base `setup()`, `run()` and other convenient functions.\n\n### KubeTask\n- `setup(parser)`:\n - `--context`: kubernetes context\n - `--namespace`: kubernetes namespace\n- `k(cmdstr, **kwargs)`: kubectl command shortcut with `--context` and `--namespace` args appended if available\n- `kube_info()`: print namespace and context info\n\n## multi-run\nWhen we have multiple tasks or services that do not depend on each other, it's waste of time to run them in serial. For example, if you need to build backend and frontend images, they can be run in parallel to speed up the process.\n```python\nfrom tuliptask import TulipTask, MultiRun, proc\n\n@TulipTask.task(\"dev\")\nclass Dev:\n def run(self, args):\n mr = MultiRun()\n mr.add(proc.d, args=(\"build api\", ))\n mr.add(proc.d, args=(\"build ui\", ))\n mr.run()\n\nTulipTask.start()\n```\n\n## WIP", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pzmosquito/tuliptask", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "tuliptask", "package_url": "https://pypi.org/project/tuliptask/", "platform": "", "project_url": "https://pypi.org/project/tuliptask/", "project_urls": { "Homepage": "https://github.com/pzmosquito/tuliptask" }, "release_url": "https://pypi.org/project/tuliptask/0.0.2/", "requires_dist": null, "requires_python": "", "summary": "Simple task runner for applications set up with docker and kubernetes", "version": "0.0.2" }, "last_serial": 5645496, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "7a541f22a0928e6200c88f76d6b5792d", "sha256": "a3c49c0af02792234e51e46827bd987ec8aa01cb5a0411edbc76f06048672d7a" }, "downloads": -1, "filename": "tuliptask-0.0.1.tar.gz", "has_sig": false, "md5_digest": "7a541f22a0928e6200c88f76d6b5792d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4352, "upload_time": "2019-08-07T14:52:04", "url": "https://files.pythonhosted.org/packages/97/df/0b8ecdc274f69b482f58fcbb9ef11b6c4e591be3d0a74a759d429e83da97/tuliptask-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "c7fd10898f21329725b1a12ecfcf3304", "sha256": "dd9d7572993837ae0fbe0c8211757c2881a6daf3c511372b7aa270625699053f" }, "downloads": -1, "filename": "tuliptask-0.0.2.tar.gz", "has_sig": false, "md5_digest": "c7fd10898f21329725b1a12ecfcf3304", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4356, "upload_time": "2019-08-07T15:07:25", "url": "https://files.pythonhosted.org/packages/64/9b/90ae706354a7f84cf3eac46753bedd851a6b3d753f2b54c1675ab52dc068/tuliptask-0.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c7fd10898f21329725b1a12ecfcf3304", "sha256": "dd9d7572993837ae0fbe0c8211757c2881a6daf3c511372b7aa270625699053f" }, "downloads": -1, "filename": "tuliptask-0.0.2.tar.gz", "has_sig": false, "md5_digest": "c7fd10898f21329725b1a12ecfcf3304", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4356, "upload_time": "2019-08-07T15:07:25", "url": "https://files.pythonhosted.org/packages/64/9b/90ae706354a7f84cf3eac46753bedd851a6b3d753f2b54c1675ab52dc068/tuliptask-0.0.2.tar.gz" } ] }