{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Environment :: Plugins", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", "Topic :: Database", "Topic :: Software Development", "Topic :: System", "Topic :: Terminals" ], "description": "ShYml: write shell in sh.yml\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSometimes gnu make reminds me how old I am, shyml makes me feel like a baby again.\n\nGetting started\n===============\n\nInstall\n-------\n\nInstall with ``pip install shyml``.\n\n.. note:: Use ``pip install --user`` for non-root install in ~/.local/bin.\n\nExecutable and shebang\n----------------------\n\nCreate a executable yaml file in your repo (name it ``sh.yml`` by convention)\nwith shyml in the shebang as such::\n\n #!/usr/bin/env shyml\n\nThen, start adding a YAML document in it.\n\nExample\n-------\n\n.. code-block:: yaml\n\n #!/usr/bin/env shyml\n name: foo\n help: bar\n requires:\n - other\n script:\n - ./super\n long\n line\n - shyml_otherjob # call another job as a bash function\n ---\n name: otherjob\n script: |\n your code here\n\nDocument model\n--------------\n\nEach YAML document (separated by `---`) should contain a `name` key.\n\nOther keys it can define:\n\n- script: a bash script in list or string format, arguments will be proxied\n- help: a help text to describe the job\n- color: a color to render the job name\n- requires: the list of other jobs to execute prior to this job\n- hook: set to `before` toautomatically execute before any other\n- env: a YAML hash of env var\n\nCLI Usage\n---------\n\n.. code-block:: bash\n\n ./sh.yml # lists jobs\n ./sh.yml jobname # run a job in a local bash shell\n shell=xonsh ./sh.yml jobname # apparently you your sh.yml contains xonsh instead of bash ^^\n ./sh.yml debug jobname # print a job script code\n ./sh.yml test jobname # print a job help\n\nExamples\n========\n\nReplace tox.ini\n---------------\n\nSo, initially shyml was born because I wanted to get too much out of tox.\nNamely, centralizing test automation and eventually deployment (for integration\ntesting) in a single multi-script file, for usage in various contexts:\n\n- in the system python environment, ie. in a built container\n- in the user python environment, that is where i have checked out all\n development source code I want to hack at the version that I develop with\n (and I try hard to stick to upstream and have forward-compatible code)\n- in a virtualenv, to test against released module versions.\n\nTo address this, I use such shyml job, that will make a venv with python3 by\ndefault, not setup any venv if venv=none, and use the user environment if\nvenv=user.\n\n.. code-block:: yaml\n\n ---\n name: install\n help: |\n Setup and activate a venv for a python executable\n\n If venv=none, it will not do any venv.\n If venv=user, it will use pip install --user.\n script: |\n if [ \"${venv-}\" = \"user\" ]; then\n pip_install=\"pip install --user\"\n elif [ \"${venv-}\" != \"none\" ]; then\n export python=\"${python-python3}\"\n export path=\"${path-.venv.$python}\"\n test -d $path || virtualenv --python=$python $path\n set +eux; echo activating $path; source $path/bin/activate; set -eux\n fi\n ${pip_install-pip install} -Ue .[test]\n\n ---\n name: test\n help: Run test in a python3 venv by default.\n script: shyml_install && py.test -vv --cov src --strict -r fEsxXw ${@-src}\n\nThen, I can run:\n\n.. code-block::\n\n venv=user ./sh.yml test # in my home\n venv=none ./sh.yml test # in a built container\n ./sh.yml test # just run tests in the default venv tox-like\n\nEmbed docker-compose.yml\n------------------------\n\n::\n\n ---\n name: compose\n script: |\n docker-compose -p $(pwd) -f <(cat <=3", "summary": "write shell in sh.yml", "version": "1.0.3" }, "last_serial": 5506421, "releases": { "0.6.4": [ { "comment_text": "", "digests": { "md5": "d40ea0ec68784ca5ad0cc949550d214d", "sha256": "6ded652cd85fb3f7eb45546f03dec7e694b6b3a6e7fa63fa5f760659c0aa6d39" }, "downloads": -1, "filename": "shyml-0.6.4.tar.gz", "has_sig": false, "md5_digest": "d40ea0ec68784ca5ad0cc949550d214d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3833, "upload_time": "2019-01-27T22:45:55", "url": "https://files.pythonhosted.org/packages/7d/4c/11491166874a10198c590fc04d4a8d29f126c618e67dd9277106d5188768/shyml-0.6.4.tar.gz" } ], "0.6.4.dev1": [ { "comment_text": "", "digests": { "md5": "7db0f16a2dfd129d5bcb2993ada7a8a1", "sha256": "e297a254117562600c501b77323c99b2d02d5eb46a9d232274f7359bf4c41548" }, "downloads": -1, "filename": "shyml-0.6.4.dev1.tar.gz", "has_sig": false, "md5_digest": "7db0f16a2dfd129d5bcb2993ada7a8a1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3339, "upload_time": "2019-01-27T22:13:22", "url": "https://files.pythonhosted.org/packages/3e/63/b37d57a6ed524b8d9f71ed9da701c4afa0eed8040d4c86a4e19dafa06d64/shyml-0.6.4.dev1.tar.gz" } ], "0.6.4.dev2": [ { "comment_text": "", "digests": { "md5": "412cd442f02fb612eec49477b23ebdcf", "sha256": "858b0dccb62189270942bb9d21389b2abca599d37ec354ea72c541176364f909" }, "downloads": -1, "filename": "shyml-0.6.4.dev2.tar.gz", "has_sig": false, "md5_digest": "412cd442f02fb612eec49477b23ebdcf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3338, "upload_time": "2019-01-27T22:22:37", "url": "https://files.pythonhosted.org/packages/86/cc/6bcb8b248c10706738328997801dae83aac68a25d796ca0bb97a8fe33096/shyml-0.6.4.dev2.tar.gz" } ], "0.6.4.dev3": [ { "comment_text": "", "digests": { "md5": "16a062f603fecd8925c616e75c13f497", "sha256": "79e7b8fe988763101ed76549a74e34025ed34b08599c162406d1197928e5acd2" }, "downloads": -1, "filename": "shyml-0.6.4.dev3.tar.gz", "has_sig": false, "md5_digest": "16a062f603fecd8925c616e75c13f497", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3837, "upload_time": "2019-01-27T22:38:08", "url": "https://files.pythonhosted.org/packages/63/e0/f5d1777b347e7da35b205eed4b13b2811e2781ca939832494f4188da0fc7/shyml-0.6.4.dev3.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "663009959946926e71eec12240ec2f49", "sha256": "dbc68985c4bf0edec5d38ddce24a46267706878f1d59e569f1bc4e2565998f84" }, "downloads": -1, "filename": "shyml-0.7.0.tar.gz", "has_sig": false, "md5_digest": "663009959946926e71eec12240ec2f49", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3822, "upload_time": "2019-01-27T22:57:44", "url": "https://files.pythonhosted.org/packages/43/48/623c4683f745d6339819a6d367804f2c9095f11f491d89c339251cb3607e/shyml-0.7.0.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "6ce2d6eadf24564a61f4e968a4a001c5", "sha256": "e81de9745deaf4e46b93922fdd53a64dc87081ffb4bb4e71605384de78910720" }, "downloads": -1, "filename": "shyml-0.7.2.tar.gz", "has_sig": false, "md5_digest": "6ce2d6eadf24564a61f4e968a4a001c5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3834, "upload_time": "2019-01-30T12:07:12", "url": "https://files.pythonhosted.org/packages/ea/bb/d8bfdbe20dc8b39a83141fcebca50691b3d11905a1ec8b006b01ec1c5052/shyml-0.7.2.tar.gz" } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "c6341a319ca619a03f5c6c14d41affc2", "sha256": "eee3e16452dc736a107ad8bf1e75be2ba6abaf41e2f2c5b169610121a56beaab" }, "downloads": -1, "filename": "shyml-0.7.3.tar.gz", "has_sig": false, "md5_digest": "c6341a319ca619a03f5c6c14d41affc2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3824, "upload_time": "2019-01-30T13:13:47", "url": "https://files.pythonhosted.org/packages/5c/f2/78ef795ea3a159caab9df767de924550585705547529718c83fead62ec60/shyml-0.7.3.tar.gz" } ], "0.7.4": [ { "comment_text": "", "digests": { "md5": "2a9b2401b51a4b0066b58727e530d009", "sha256": "909c89baac305af2ac408ebb7cd9ac4fe5c208f74f745c82ff0b78ca7ca4f8a7" }, "downloads": -1, "filename": "shyml-0.7.4.tar.gz", "has_sig": false, "md5_digest": "2a9b2401b51a4b0066b58727e530d009", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3991, "upload_time": "2019-01-30T13:40:35", "url": "https://files.pythonhosted.org/packages/0c/e4/40f98e1593c0693bc7f3b0fcd0307982647d5aa90e7867f10ace5c8ec703/shyml-0.7.4.tar.gz" } ], "0.7.4.dev1": [ { "comment_text": "", "digests": { "md5": "4a1f010237fde9d3e4d05e076aeb1a67", "sha256": "84920f779c029d42dbd07d23776305526e3515e1421421ecf50bbf57c7451a4c" }, "downloads": -1, "filename": "shyml-0.7.4.dev1.tar.gz", "has_sig": false, "md5_digest": "4a1f010237fde9d3e4d05e076aeb1a67", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3868, "upload_time": "2019-01-30T13:21:16", "url": "https://files.pythonhosted.org/packages/79/4b/e9c0dc40111db3699a3d806b3c8032dd84c00cebbb4a51811d45e0acd845/shyml-0.7.4.dev1.tar.gz" } ], "0.7.5": [ { "comment_text": "", "digests": { "md5": "0d2bc3941172e87628d375365c67e08f", "sha256": "bc01e46ecd11fc374d0d1eca1a7a9a159fbf0c4d6adada6ad861516f31f19edf" }, "downloads": -1, "filename": "shyml-0.7.5.tar.gz", "has_sig": false, "md5_digest": "0d2bc3941172e87628d375365c67e08f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3994, "upload_time": "2019-01-30T13:54:15", "url": "https://files.pythonhosted.org/packages/bf/e5/8117282427bef7886f165b2742b5470d08377935aadba8291f688923c5c7/shyml-0.7.5.tar.gz" } ], "0.7.5.dev1": [ { "comment_text": "", "digests": { "md5": "14c56958e430677e10c0fd8bc1371a5b", "sha256": "9e0cc879839cd3a1a0881cfdfff8a5fb8bb15e3d0fdd4d7b2b6b93e0a74297ee" }, "downloads": -1, "filename": "shyml-0.7.5.dev1.tar.gz", "has_sig": false, "md5_digest": "14c56958e430677e10c0fd8bc1371a5b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4002, "upload_time": "2019-01-30T13:41:51", "url": "https://files.pythonhosted.org/packages/3c/f4/4a4d943537ea3fe313018602192c1fbe9a1a59ec9929a3e90599bd62779b/shyml-0.7.5.dev1.tar.gz" } ], "0.7.6.dev7": [ { "comment_text": "", "digests": { "md5": "ba81bb2f577ffab0c97db3bfe2155ba2", "sha256": "d8bb7ec2cd6484c2424842bcded52c59edd06d8067ee44d2bdf34835ed3badc4" }, "downloads": -1, "filename": "shyml-0.7.6.dev7.tar.gz", "has_sig": false, "md5_digest": "ba81bb2f577ffab0c97db3bfe2155ba2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3914, "upload_time": "2019-01-30T15:29:15", "url": "https://files.pythonhosted.org/packages/f6/73/f206a5420425a7f69bb92b5df4a0db60e093ee4db0920d33b1917ea3a8fc/shyml-0.7.6.dev7.tar.gz" } ], "0.7.7": [ { "comment_text": "", "digests": { "md5": "8e260e9d2e74695399b154bf4366983e", "sha256": "f06e84a003aeb5d29aa162a1a77af7b3f2a593654ce3be2eff539dd13c6fcc0a" }, "downloads": -1, "filename": "shyml-0.7.7.tar.gz", "has_sig": false, "md5_digest": "8e260e9d2e74695399b154bf4366983e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3898, "upload_time": "2019-01-30T15:30:30", "url": "https://files.pythonhosted.org/packages/58/ae/32d1807dfbe670a9d43a60e313e13514518ccbfeea8997fdee0f1158df9d/shyml-0.7.7.tar.gz" } ], "0.7.8.dev1": [ { "comment_text": "", "digests": { "md5": "2db061ddb09bd4e05ae0d42adbb5b010", "sha256": "262efa8cd2f50a589ed49d1e4a6d650311f55823b56ed2c9f76615f017d3c0ec" }, "downloads": -1, "filename": "shyml-0.7.8.dev1.tar.gz", "has_sig": false, "md5_digest": "2db061ddb09bd4e05ae0d42adbb5b010", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4191, "upload_time": "2019-03-26T11:16:35", "url": "https://files.pythonhosted.org/packages/aa/78/308b1ab454178f6fc4c6e4cdaee305c244e6dacda97f6008981140a74856/shyml-0.7.8.dev1.tar.gz" } ], "0.7.8.dev2": [ { "comment_text": "", "digests": { "md5": "d34dc99969098200984ccc1bfb5d9c4a", "sha256": "6c4c482f846d272fe9bd6f79ee84a72f6f00c9e32fc06c40a4f23fae9313e3b7" }, "downloads": -1, "filename": "shyml-0.7.8.dev2.tar.gz", "has_sig": false, "md5_digest": "d34dc99969098200984ccc1bfb5d9c4a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4192, "upload_time": "2019-03-26T11:18:11", "url": "https://files.pythonhosted.org/packages/62/61/3b6d38457177075ddcfc4e7c8083e00fda94ac3c7296700a34085831a09e/shyml-0.7.8.dev2.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "3634941999dce289e51acf63895d2e45", "sha256": "4484ae4f4e180e0169456a912455f811d83524f3abe9a9044f5882588ad8c381" }, "downloads": -1, "filename": "shyml-0.8.0.tar.gz", "has_sig": false, "md5_digest": "3634941999dce289e51acf63895d2e45", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4251, "upload_time": "2019-03-26T11:19:20", "url": "https://files.pythonhosted.org/packages/8b/d4/dd13d8c63406bf77d7e9e1f26aa080564617ae457318ffdc02a14d6218d8/shyml-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "8902ba72227e7bc40dc094668a65578a", "sha256": "03a3c14982f353bacf9bf28f1613acc3172431ce2370a5c1be88eb0b65dfacff" }, "downloads": -1, "filename": "shyml-0.8.1.tar.gz", "has_sig": false, "md5_digest": "8902ba72227e7bc40dc094668a65578a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4233, "upload_time": "2019-03-26T14:39:55", "url": "https://files.pythonhosted.org/packages/ba/c5/eb40415d8a8c66fe558fed726122dd689f82e418d627f568f3ee46695fd8/shyml-0.8.1.tar.gz" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "4914faa9becce1a3c789e850a480328f", "sha256": "3f1137f6745d6b8c1396c11e2e9aea931e3710c140dc6e0a89812e5e7c905314" }, "downloads": -1, "filename": "shyml-0.8.2.tar.gz", "has_sig": false, "md5_digest": "4914faa9becce1a3c789e850a480328f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4237, "upload_time": "2019-03-26T16:33:29", "url": "https://files.pythonhosted.org/packages/e1/f4/605ca76f20a0dbe700726ff3c736a6f0f1b4edde13fb0cd8b912146de50d/shyml-0.8.2.tar.gz" } ], "0.8.3.dev3": [ { "comment_text": "", "digests": { "md5": "bc9f40d576a2d93683f896dd7a5bf6c8", "sha256": "5438d6adf991b848e346cc4c9bc5a77d5c899421a290f2efea67f0c582b598d6" }, "downloads": -1, "filename": "shyml-0.8.3.dev3.tar.gz", "has_sig": false, "md5_digest": "bc9f40d576a2d93683f896dd7a5bf6c8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4174, "upload_time": "2019-04-24T23:59:26", "url": "https://files.pythonhosted.org/packages/b4/7b/0f4885fa5657b916496eea75e8de7edec0eb183b55725559f79b3acf68ee/shyml-0.8.3.dev3.tar.gz" } ], "0.8.3.dev4": [ { "comment_text": "", "digests": { "md5": "531cbb0f038228a78eadf608a8c79485", "sha256": "8ecb10901a0f757a083f3b05f413eb3e3f94eb0df0c8c4b99b6da403d04d2831" }, "downloads": -1, "filename": "shyml-0.8.3.dev4.tar.gz", "has_sig": false, "md5_digest": "531cbb0f038228a78eadf608a8c79485", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4178, "upload_time": "2019-04-24T23:58:45", "url": "https://files.pythonhosted.org/packages/32/6c/dd18a84cad1c1c9d44cf10f2256143a90fa12f3c7089846d101106c055d2/shyml-0.8.3.dev4.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "6f16a6dce544abfac122f138d5edeb78", "sha256": "edd9052d9ea2a0cb9b66a4cf85bf24afaf7b85559c4c4ccbe369cfc7fba973ea" }, "downloads": -1, "filename": "shyml-0.9.0.tar.gz", "has_sig": false, "md5_digest": "6f16a6dce544abfac122f138d5edeb78", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4176, "upload_time": "2019-04-25T00:07:51", "url": "https://files.pythonhosted.org/packages/e5/37/024d3ee0a229ad50ae4600d81c609382372956d5cfc1b2d08dc95acdc167/shyml-0.9.0.tar.gz" } ], "0.9.1.dev1": [ { "comment_text": "", "digests": { "md5": "9816afac5742a2ff98bfc7d6d8a956cf", "sha256": "ab24f89775526fa5a1318d8794fef46e8ab590a291a6f51a924c9243d3403af1" }, "downloads": -1, "filename": "shyml-0.9.1.dev1.tar.gz", "has_sig": false, "md5_digest": "9816afac5742a2ff98bfc7d6d8a956cf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5323, "upload_time": "2019-05-09T13:55:45", "url": "https://files.pythonhosted.org/packages/65/c7/44d05e5d74b9dc50cfb3ec94fdc62e8def0f398990a4a99a5b68f0862b34/shyml-0.9.1.dev1.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "549b125387f3e81ac918842a0ff35489", "sha256": "fd71b416bc746fa9566ce497820b176cc2439546bc61374a5069a9aeeb9d7e4a" }, "downloads": -1, "filename": "shyml-1.0.1.tar.gz", "has_sig": false, "md5_digest": "549b125387f3e81ac918842a0ff35489", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 6820, "upload_time": "2019-06-11T12:45:18", "url": "https://files.pythonhosted.org/packages/e0/4d/ac43750a05f7869a57e920c8edd641254f881c79bb500bdb59a34190a363/shyml-1.0.1.tar.gz" } ], "1.0.1.dev1": [ { "comment_text": "", "digests": { "md5": "46ab83a44ffd36c357432e74ce4dffe5", "sha256": "aa53cfd45c159d7959428e56c80be5275aa870f1e7ce34204f32259af109ea7c" }, "downloads": -1, "filename": "shyml-1.0.1.dev1.tar.gz", "has_sig": false, "md5_digest": "46ab83a44ffd36c357432e74ce4dffe5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 6846, "upload_time": "2019-05-30T10:26:52", "url": "https://files.pythonhosted.org/packages/a4/d7/a2826c4a6fb32d1bc858595323851ce36b3c3fb6f4358d45710db28db1ea/shyml-1.0.1.dev1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "96cffac52caee9ff625831e5fa24b082", "sha256": "1eee8b86658b2f05228bfb397a6b18365baa0271cee0dcf047615c1502f41fe2" }, "downloads": -1, "filename": "shyml-1.0.2.tar.gz", "has_sig": false, "md5_digest": "96cffac52caee9ff625831e5fa24b082", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 6845, "upload_time": "2019-06-18T05:46:26", "url": "https://files.pythonhosted.org/packages/8f/07/c01a0edae75fe58baf077c11dd0d3840b776e42b0a11cc9e6d1051dd2b8a/shyml-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "3b90f1486dd0929b6b50636cf28b6c4d", "sha256": "d520006ba8b35fa64e31e3932f7b1f0150ad1498f8abce4161778a527fedb66d" }, "downloads": -1, "filename": "shyml-1.0.3.tar.gz", "has_sig": false, "md5_digest": "3b90f1486dd0929b6b50636cf28b6c4d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 6840, "upload_time": "2019-06-18T14:43:03", "url": "https://files.pythonhosted.org/packages/b7/01/15f3b7d4a73390d3fd71cf11a8ffc18ac9327e7919add4c06e10fc6a151e/shyml-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3b90f1486dd0929b6b50636cf28b6c4d", "sha256": "d520006ba8b35fa64e31e3932f7b1f0150ad1498f8abce4161778a527fedb66d" }, "downloads": -1, "filename": "shyml-1.0.3.tar.gz", "has_sig": false, "md5_digest": "3b90f1486dd0929b6b50636cf28b6c4d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 6840, "upload_time": "2019-06-18T14:43:03", "url": "https://files.pythonhosted.org/packages/b7/01/15f3b7d4a73390d3fd71cf11a8ffc18ac9327e7919add4c06e10fc6a151e/shyml-1.0.3.tar.gz" } ] }