{ "info": { "author": "Zart Software", "author_email": "project-zsft.recipe.cmd@zartsoft.ru", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Framework :: Buildout", "Framework :: Buildout :: Recipe", "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.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "===============\r\nzsft.recipe.cmd\r\n===============\r\n\r\n.. contents::\r\n\r\nThis recipe allows you to run arbitrary shell and python scripts from buildout.\r\nIt's inspired by similar recipes but has few added features.\r\n\r\nRepository: https://github.com/zartsoft/zsft.recipe.cmd\r\n\r\nTo clone:\r\n\r\n `git clone https://github.com/zartsoft/zsft.recipe.cmd`\r\n\r\nIssue tracker: https://github.com/zartsoft/zsft.recipe.cmd/issues\r\n\r\nSupported Python versions: 2.7, 3.3+\r\n\r\nSupported zc.buildout versions: 1.x, 2.x.\r\n\r\n\r\nUsage\r\n=====\r\n\r\n``install``\r\n Commands to execute on install phase.\r\n\r\n``update``\r\n Commands to execute on update phase.\r\n\r\n``shell``\r\n Shell to run script with. If not set uses default system shell.\r\n Special value `internal` means executing as python code from buildout.\r\n\r\n``install-shell``\r\n Can override shell for install phase.\r\n\r\n``update-shell``\r\n Can override shell for update phase.\r\n\r\n``shell-options``\r\n Additional switch to shell, like `-File` for PowerShell, `-f` for Awk, etc.\r\n\r\n``install-shell-options``\r\n Can override shell options for install phase.\r\n\r\n``update-shell-options``\r\n Can override shell options for update phase.\r\n\r\n``env``\r\n List of KEY=VALUE pairs to set environment variables.\r\n\r\n\r\nExamples\r\n========\r\n\r\n.. code:: ini\r\n\r\n [cmmi]\r\n recipe = zsft.recipe.cmd\r\n install =\r\n ./configure --prefix=${buildout:parts-directory}/opt\r\n make\r\n make install\r\n env =\r\n CFLAGS = -g -Wall -O2\r\n LDFLAGS = -lm\r\n LD_RUN_PATH = $ORIGIN/../lib\r\n\r\n [pythonscript]\r\n recipe = zsft.recipe.cmd\r\n shell = internal\r\n install =\r\n os.chdir('${buildout:parts-directory}')\r\n if not os.path.exists('opt'):\r\n os.makedirs('opt')\r\n os.chdir('opt')\r\n check_call(['./config ; make'], shell=True)\r\n\r\n [msbuild:windows]\r\n recipe = zsft.recipe.cmd\r\n configuration = Release\r\n platform = Win32\r\n install =\r\n msbuild.exe /t:Build /p:Configuration=${:configuration} /p:Platform=${:platform}\r\n\r\n [service-restart:windows]\r\n recipe = zsft.recipe.cmd\r\n shell = powershell.exe\r\n shell-options = -File\r\n service = foo\r\n update =\r\n $service = \"${:service}\"\r\n Write-Host -ForegroundColor Yellow \"Restarting service '$service'\"\r\n Restart-Service -Verbose $service\r\n\r\n\r\nDifference from other recipes\r\n=============================\r\n\r\nUnlike other similar recipes this one allows you to specify custom shell on\r\nWindows and environment variables.\r\n\r\n``iw.recipe.cmd``\r\n Does not allow you to have different scripts for install and update.\r\n Specifying shell is POSIX only.\r\n\r\n``collective.recipe.cmd``\r\n Same limitations as in `iw.recipe.cmd`. Has `uninstall_cmds` and python mode.\r\n\r\n``plone.recipe.command``\r\n Has `stop-on-error` option and allows different scripts for install/update.\r\n Does not seem to allow multiline commands or custom shells.\r\n\r\n\r\nChange history\r\n==============\r\n\r\n0.4 (2017-06-21)\r\n------------------\r\n\r\n- Fix environment parser\r\n- Fix conditional section syntax in example\r\n- Cleanup logging\r\n\r\n0.3.1 (2017-06-21)\r\n------------------\r\n\r\n- Fix shell options when no shell is passed.\r\n\r\n0.3 (2017-06-21)\r\n------------------\r\n\r\n- Run shell explicitly. Fixes running on POSIX.\r\n\r\n0.2 (2017-06-20)\r\n------------------\r\n\r\n- Fix for re-running install script.\r\n\r\n0.1 (2017-06-20)\r\n------------------\r\n\r\n- Initial release.\r\n\r\n\r\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/zartsoft/zsft.recipe.cmd/", "keywords": "buildout recipe shell", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "zsft.recipe.cmd", "package_url": "https://pypi.org/project/zsft.recipe.cmd/", "platform": "", "project_url": "https://pypi.org/project/zsft.recipe.cmd/", "project_urls": { "Homepage": "https://github.com/zartsoft/zsft.recipe.cmd/" }, "release_url": "https://pypi.org/project/zsft.recipe.cmd/0.4/", "requires_dist": [ "setuptools", "zc.buildout" ], "requires_python": "", "summary": "Buildout recipe to execute commands via shell or python", "version": "0.4" }, "last_serial": 2964394, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "134c1b9e9d2a5ca1e85ddec8f3b0e144", "sha256": "d03e0029154b37cac2da885d91624717508492fa26a0b89fae98f838edda2119" }, "downloads": -1, "filename": "zsft.recipe.cmd-0.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "134c1b9e9d2a5ca1e85ddec8f3b0e144", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7093, "upload_time": "2017-06-19T23:02:11", "url": "https://files.pythonhosted.org/packages/7b/03/a747a61559c2f4d759c756e22a3c2c814c3b6513f47b1a3d27a2151bd75a/zsft.recipe.cmd-0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4fbb3c6da8985e7d55ac1cfcba8ad95b", "sha256": "b4995f881239d0d2c1d29364dadcdfcf41965bfd8bc6462b0c15e2889b6a32c3" }, "downloads": -1, "filename": "zsft.recipe.cmd-0.1.tar.gz", "has_sig": true, "md5_digest": "4fbb3c6da8985e7d55ac1cfcba8ad95b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4900, "upload_time": "2017-06-19T23:02:17", "url": "https://files.pythonhosted.org/packages/a8/c4/b30457a78bcec976e2db52a9d0a3409afa40ca3495ccfbd33ed63a82c833/zsft.recipe.cmd-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "0b45011c2b943ad74fb6984e857ba5a8", "sha256": "7f031c82efd18769c099f7a3e2957d61906e35ec9b07ac8c5a1f080c80c7fedc" }, "downloads": -1, "filename": "zsft.recipe.cmd-0.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "0b45011c2b943ad74fb6984e857ba5a8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7132, "upload_time": "2017-06-19T23:31:30", "url": "https://files.pythonhosted.org/packages/9a/b0/9aa15fcd3f841e433c51e4bdad4c6b8e43e855a4780230f1f1a47cb68e45/zsft.recipe.cmd-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "74e8265f141747ad664e9dcae0ba6996", "sha256": "f41a6658b521d0b961ad54075d6911000cebccfb73706530cbaad7e15b5d0a3f" }, "downloads": -1, "filename": "zsft.recipe.cmd-0.2.tar.gz", "has_sig": true, "md5_digest": "74e8265f141747ad664e9dcae0ba6996", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4989, "upload_time": "2017-06-19T23:31:36", "url": "https://files.pythonhosted.org/packages/55/e3/4504964343d4592703db7e93d5bcbed21e354321a398e2b23d8c7e12b932/zsft.recipe.cmd-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "a6d1a88545d49bb97f37e255d3bba0cf", "sha256": "37d93a8781816574b548179342c54783f683dd8fe6da8f9a7eea43829768509b" }, "downloads": -1, "filename": "zsft.recipe.cmd-0.3-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "a6d1a88545d49bb97f37e255d3bba0cf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7255, "upload_time": "2017-06-20T23:11:37", "url": "https://files.pythonhosted.org/packages/3b/1e/48dac07d82e2034950587940e8864efb88f4fb0727a6ccea38768c004059/zsft.recipe.cmd-0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0fd3bbb04915d941bc4cee1a44f8cd1", "sha256": "cfb1e17641721a7f55fed41062beaeb06131935ccc123ac3ab9cc09378a04a68" }, "downloads": -1, "filename": "zsft.recipe.cmd-0.3.tar.gz", "has_sig": true, "md5_digest": "f0fd3bbb04915d941bc4cee1a44f8cd1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5079, "upload_time": "2017-06-20T23:11:59", "url": "https://files.pythonhosted.org/packages/95/c4/577983467226822360a588142b33af69b91823f5684520092bea6176bc4e/zsft.recipe.cmd-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "ca2a4b708e6f3b51aa3fe8504f7a510b", "sha256": "b49392b09a7806612e80f87b4f401b1022adab26148a319213b1aaec339f6c17" }, "downloads": -1, "filename": "zsft.recipe.cmd-0.3.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "ca2a4b708e6f3b51aa3fe8504f7a510b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7354, "upload_time": "2017-06-21T08:15:03", "url": "https://files.pythonhosted.org/packages/b6/d9/4b4beba73618c608d5b0f4dba661683fe462a74284774a58d2476312ed8e/zsft.recipe.cmd-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6ef9b02f9aa460b337fa233a9f9b059f", "sha256": "45867bd397d366b8c32afa357c2c18db41280a7e10ab6333f66edbb8c533e60d" }, "downloads": -1, "filename": "zsft.recipe.cmd-0.3.1.tar.gz", "has_sig": true, "md5_digest": "6ef9b02f9aa460b337fa233a9f9b059f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5109, "upload_time": "2017-06-21T08:15:08", "url": "https://files.pythonhosted.org/packages/56/d5/9ed06cbd5525e8f0d46d023d237c1b64a23cf98a2f1b3bf378407edb9bf2/zsft.recipe.cmd-0.3.1.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "e65cbede64bc8d0c6344ba58ba1901a5", "sha256": "3b82553c73890ea3fc72be83eab788c2239cd6a43eccc546ffa7ad718aa400f0" }, "downloads": -1, "filename": "zsft.recipe.cmd-0.4-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "e65cbede64bc8d0c6344ba58ba1901a5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7389, "upload_time": "2017-06-21T09:27:27", "url": "https://files.pythonhosted.org/packages/e4/89/3e73ee8ed3858682dc9cb18fe9d00da268718ba3de1175f32dec289380ca/zsft.recipe.cmd-0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eda53fe0bb042c5ef2f016b689ea1b2c", "sha256": "8813c88157ef612b92814d33a543b3c2028cb92dfb8ea5b4889352f2de26a1ff" }, "downloads": -1, "filename": "zsft.recipe.cmd-0.4.tar.gz", "has_sig": true, "md5_digest": "eda53fe0bb042c5ef2f016b689ea1b2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5178, "upload_time": "2017-06-21T09:27:32", "url": "https://files.pythonhosted.org/packages/2a/8a/e4b565a9ba60b9ff807f6e7e7d74e10fc994fc0ead5a734376deac9dc0b4/zsft.recipe.cmd-0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e65cbede64bc8d0c6344ba58ba1901a5", "sha256": "3b82553c73890ea3fc72be83eab788c2239cd6a43eccc546ffa7ad718aa400f0" }, "downloads": -1, "filename": "zsft.recipe.cmd-0.4-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "e65cbede64bc8d0c6344ba58ba1901a5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7389, "upload_time": "2017-06-21T09:27:27", "url": "https://files.pythonhosted.org/packages/e4/89/3e73ee8ed3858682dc9cb18fe9d00da268718ba3de1175f32dec289380ca/zsft.recipe.cmd-0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eda53fe0bb042c5ef2f016b689ea1b2c", "sha256": "8813c88157ef612b92814d33a543b3c2028cb92dfb8ea5b4889352f2de26a1ff" }, "downloads": -1, "filename": "zsft.recipe.cmd-0.4.tar.gz", "has_sig": true, "md5_digest": "eda53fe0bb042c5ef2f016b689ea1b2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5178, "upload_time": "2017-06-21T09:27:32", "url": "https://files.pythonhosted.org/packages/2a/8a/e4b565a9ba60b9ff807f6e7e7d74e10fc994fc0ead5a734376deac9dc0b4/zsft.recipe.cmd-0.4.tar.gz" } ] }