{ "info": { "author": "Sorin Sbarnea", "author_email": "sorin.sbarnea@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8" ], "description": "rmux\n====\n\n``rmux`` allows you to run your local project on multiple remote machines in\nparallel.\n\nThe command names comes from remote-tmux as it allows multiplexing commands\non multiple remote machines, synchronized.\n\nThe original purpose was to allow testing local changes to a project on other\nplatforms, like running tox on another distribution.\n\n![](https://raw.githubusercontent.com/pycontribs/rmux/master/docs/movie.gif)\n\nUsage\n-----\n\n```bash\n# run df locally\nrmux df\n\n# close tmux session\nexit\n\n# run df on two remote hosts, syncronized windows\nHOSTS=\"node1 node2\" rmux df\n\n# run a script downloaded from the web (installs pip)\nrmux -w https://bootstrap.pypa.io/get-pip.py\n\n```\n\nIf you fail to define the ``HOSTS`` variable the tool will default to localhost\nbut it will still use its logic of doing a rsync and running commands using\ntmux and ssh.\n\nHow it works\n------------\n\n``rmux`` will detect current project by looking for the ``.git`` folder\nit in current directory or its parents. If it fails to find\nany ``.git`` folder, it will skip the rsync part.\n\nThe script will not rsync ``.gitignored`` files but it will sync untracked\nfiles.\n\nThe destination folder on remote machines is ``~/.cache/.rmux/``\nwhich will also become default directory.\n\nThe remote user is based on host names or your ssh configuration.\n\nInstallation\n------------\n\n```bash\npip install rmux\n```\n\nWhile ``rmux`` is currently only a pure bash script, I used pip wheel as a way\nto distribute it as it cross platform and easy to use. In addition, it allows\nme to easily upgrade it.\n\nIf you prefer you can\njust download the shell script and add it to your path.\n\nSee also\n--------\n\n* [tmux](https://github.com/tmux/tmux/wiki) - terminal multiplexer\n* [tmux-xpanes](https://github.com/greymd/tmux-xpanes) - auto-window layout\n for tmux, a current requirement for rmux. Still, it should be possible to\n avoid using it if you have only one remote host, just make a feature request\n and I can implement it.\n* [direnv](https://direnv.net/) - define environment variables specific to current directory. This can be very handy if you want to have different set of HOSTS\n for each project and avoid mentioning them on the command line.\n* [rtox](https://pypi.org/project/rtox/) which allows running tox on remote\n machines this being the original project. With rmux you will no longer need\n rtox as you can just do `rmux tox` instead of `rtox`, the big difference\n being that the session is not closed automatically and that you can now\n run on multiple remote hosts instead of just one.\n\nLinks\n-----\n* Free software: Apache license\n* Source: https://github.com/pycontribs/rmux\n* Bugs: https://github.com/pycontribs/rmux/issues\n\n\n\n", "description_content_type": "text/markdown; charset=UTF-8; variant=GFM", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pycontribs/rmux/", "keywords": "", "license": "Apache", "maintainer": "", "maintainer_email": "", "name": "rmux", "package_url": "https://pypi.org/project/rmux/", "platform": "any", "project_url": "https://pypi.org/project/rmux/", "project_urls": { "Homepage": "https://github.com/pycontribs/rmux/" }, "release_url": "https://pypi.org/project/rmux/1.0.6/", "requires_dist": [ "pbr (>=2.0)" ], "requires_python": "", "summary": "remux allows you to run your local project on multiple remote machines in parallel", "version": "1.0.6" }, "last_serial": 5331593, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "25df6fef087278cac77dd14244e07d16", "sha256": "b23715b71f45828b0b621deddf3500997b1a90367ba9ca6c3c1845cd397f9cc9" }, "downloads": -1, "filename": "rmux-0.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "25df6fef087278cac77dd14244e07d16", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9041, "upload_time": "2018-12-29T11:18:41", "url": "https://files.pythonhosted.org/packages/b1/72/43aab9419a00bad3c6af723c95a26a18a7a6908d31e87409861443fa3bc5/rmux-0.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5f4f127f1f946b9d8261e0e2c89d3c5c", "sha256": "de2e5e3372e91b2b3e52860655ca0faf5ae73a8d0025c3a7cdb03b1413f530ef" }, "downloads": -1, "filename": "rmux-0.0.0.tar.gz", "has_sig": false, "md5_digest": "5f4f127f1f946b9d8261e0e2c89d3c5c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8466, "upload_time": "2018-12-29T11:18:43", "url": "https://files.pythonhosted.org/packages/74/9e/ec26c00e6e5e458879e70364e3bf814476f1bb59691925e4bce697cbfb4d/rmux-0.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "a985201f5e5907a74163c4d836ddb5fa", "sha256": "f209e9e4c12cd1658bde2df33dfda5ac9b86967c47149b5fc0dc958395337fa7" }, "downloads": -1, "filename": "rmux-1.0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "a985201f5e5907a74163c4d836ddb5fa", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10468, "upload_time": "2018-12-30T11:47:00", "url": "https://files.pythonhosted.org/packages/59/7a/b0a8b5059f811ec7776d1468b0a50460e316ccf334874a900841cf59f296/rmux-1.0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e196a360760a3d8ce9ec256581cee6e2", "sha256": "e238d07490d893f98fe8e3b0810561408288a65365af1d645ee248ea7f74b143" }, "downloads": -1, "filename": "rmux-1.0.1.tar.gz", "has_sig": false, "md5_digest": "e196a360760a3d8ce9ec256581cee6e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 375974, "upload_time": "2018-12-30T11:47:02", "url": "https://files.pythonhosted.org/packages/b5/9b/70ba6d74c3777afe1fb81f4689b4e4ee53c78ef9b15e5b18c79fe37cf777/rmux-1.0.1.tar.gz" } ], "1.0.1.dev1": [ { "comment_text": "", "digests": { "md5": "9bd9c15814d6e53c886bb4fcab876595", "sha256": "92bb8ad31e766e208a3dc60452014242f315c2a3d54f225710e013eca585a49f" }, "downloads": -1, "filename": "rmux-1.0.1.dev1-py2-none-any.whl", "has_sig": false, "md5_digest": "9bd9c15814d6e53c886bb4fcab876595", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10799, "upload_time": "2018-12-30T11:31:34", "url": "https://files.pythonhosted.org/packages/34/e1/ed9343a17a6ef1b2ba1ff8d6c7d61d36402974bdda3136ec620dc997c59d/rmux-1.0.1.dev1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "73d88e87e661b553cca429553fa439ce", "sha256": "edab3c565560ef95b82d9ee3fa5f2a94573b6f74f5e92a8c0e5b114e68f7ba35" }, "downloads": -1, "filename": "rmux-1.0.1.dev1.tar.gz", "has_sig": false, "md5_digest": "73d88e87e661b553cca429553fa439ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 375947, "upload_time": "2018-12-30T11:31:35", "url": "https://files.pythonhosted.org/packages/25/13/871b091b0c2bc6ef37c2247e4449dec4f0dbd8f6816221218307b09c38fd/rmux-1.0.1.dev1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "ec58fd6d42b377a7ff922107c605d378", "sha256": "5b460cf0037431876599e7d9dea18ede678cae8ebc9af9fcb7b48f753a6bed61" }, "downloads": -1, "filename": "rmux-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "ec58fd6d42b377a7ff922107c605d378", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10465, "upload_time": "2018-12-30T12:15:04", "url": "https://files.pythonhosted.org/packages/cd/c8/9d2106b01e87f5e5661e50ce1be3c07046cc45754c7f63bb1c67933df701/rmux-1.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "07056544e152cf07750307d3c725c67b", "sha256": "dd70ad893aced5b4eb122793ef9307ec6813aa3fe3adf877b7eb50c9a96e2920" }, "downloads": -1, "filename": "rmux-1.0.2.tar.gz", "has_sig": false, "md5_digest": "07056544e152cf07750307d3c725c67b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 376028, "upload_time": "2018-12-30T12:15:06", "url": "https://files.pythonhosted.org/packages/d0/6b/64655f7213fcf8a3818d65417a41f629c616f45166c8f9bc3d98ab523723/rmux-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "5011fe38487fecea8e1658b03d237038", "sha256": "3f0684cf05257d32ddfc819eaa9c8647d1a9588e46f4ce32bc2a4c9ad4423944" }, "downloads": -1, "filename": "rmux-1.0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "5011fe38487fecea8e1658b03d237038", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10486, "upload_time": "2018-12-30T12:21:36", "url": "https://files.pythonhosted.org/packages/8b/78/cbe018eec589886ddbd965b6b03a01e96caf71eff713dd7d01733a0c1287/rmux-1.0.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b4787c297341192e3465fbd127428b6", "sha256": "41e4ac402f522d33c9ce726feb3b5138291cce09b94602f8f753820daae13023" }, "downloads": -1, "filename": "rmux-1.0.3.tar.gz", "has_sig": false, "md5_digest": "2b4787c297341192e3465fbd127428b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 376111, "upload_time": "2018-12-30T12:21:38", "url": "https://files.pythonhosted.org/packages/21/11/2504432d95095d544f4bbcd430e80b776069657bfafbddfa2e3af0068fcd/rmux-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "8e18259953d73caab2e08ec10b26c1f0", "sha256": "f64a6cb63c854281478a910b0e25e86be63e9b0a0400d7ab967de13d8cb89ee1" }, "downloads": -1, "filename": "rmux-1.0.4-py2-none-any.whl", "has_sig": false, "md5_digest": "8e18259953d73caab2e08ec10b26c1f0", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10469, "upload_time": "2019-01-02T10:13:35", "url": "https://files.pythonhosted.org/packages/94/dc/03c21a93e87d491133623b94f1f521016b85bbac85ca2234c88edf53a4f9/rmux-1.0.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7f1180425eb68c8f08873c942ef45081", "sha256": "60f2591fa9bb953d010611d3d5472b0d7ac1cb4da0d81c578e35cf0cde1a1a26" }, "downloads": -1, "filename": "rmux-1.0.4.tar.gz", "has_sig": false, "md5_digest": "7f1180425eb68c8f08873c942ef45081", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 456784, "upload_time": "2019-01-02T10:13:37", "url": "https://files.pythonhosted.org/packages/0c/b8/5a659ee12ec1d9442808e93748c6e17b134b798d1a8b30922363209098c4/rmux-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "524f6ed680b1eaa45011425992467118", "sha256": "decd914230f4b518c12f0c6b7a5d133d181901d3d4a30719e729b91e9b536fd7" }, "downloads": -1, "filename": "rmux-1.0.5-py2-none-any.whl", "has_sig": false, "md5_digest": "524f6ed680b1eaa45011425992467118", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10236, "upload_time": "2019-01-02T10:19:49", "url": "https://files.pythonhosted.org/packages/56/1d/fc4a3ff8148a04c60fc7c4fc1a1f89cefcc1d7a444dbb9445c2de79fab4f/rmux-1.0.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7b6a87fe7b643f5635f445073e5e88fd", "sha256": "08130a03eb241fc7379228505d6f6370992a61400b9d0d311ef1147cb19a8ab1" }, "downloads": -1, "filename": "rmux-1.0.5.tar.gz", "has_sig": false, "md5_digest": "7b6a87fe7b643f5635f445073e5e88fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 456713, "upload_time": "2019-01-02T10:19:51", "url": "https://files.pythonhosted.org/packages/7f/b6/6b70a880ee8166350bba6aabe1aab55914a5d0424b127b2cf76ec8cb9624/rmux-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "9118b8e8754387dbc8f7088c9c920b21", "sha256": "55c3abb4d1b74f6a8471541a0eddceff49c3dd4069bd606a1f88616358578bb9" }, "downloads": -1, "filename": "rmux-1.0.6-py2-none-any.whl", "has_sig": false, "md5_digest": "9118b8e8754387dbc8f7088c9c920b21", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10412, "upload_time": "2019-01-02T10:49:01", "url": "https://files.pythonhosted.org/packages/29/fc/f68f9f18f51fa84d12ec2efe19b76b1b5416b30821ef64e1d7d81e8c5e0f/rmux-1.0.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2f6143caa02337543be0acde65385275", "sha256": "0d141792cffa5881960c1cdd3798c56c779da5c0134fbb2544784814be89c8d9" }, "downloads": -1, "filename": "rmux-1.0.6.tar.gz", "has_sig": false, "md5_digest": "2f6143caa02337543be0acde65385275", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 456902, "upload_time": "2019-01-02T10:49:03", "url": "https://files.pythonhosted.org/packages/99/83/b4b97d46e5088123c0c0c8fd48115a0483191b69b4c87af2c06b363f666d/rmux-1.0.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9118b8e8754387dbc8f7088c9c920b21", "sha256": "55c3abb4d1b74f6a8471541a0eddceff49c3dd4069bd606a1f88616358578bb9" }, "downloads": -1, "filename": "rmux-1.0.6-py2-none-any.whl", "has_sig": false, "md5_digest": "9118b8e8754387dbc8f7088c9c920b21", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10412, "upload_time": "2019-01-02T10:49:01", "url": "https://files.pythonhosted.org/packages/29/fc/f68f9f18f51fa84d12ec2efe19b76b1b5416b30821ef64e1d7d81e8c5e0f/rmux-1.0.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2f6143caa02337543be0acde65385275", "sha256": "0d141792cffa5881960c1cdd3798c56c779da5c0134fbb2544784814be89c8d9" }, "downloads": -1, "filename": "rmux-1.0.6.tar.gz", "has_sig": false, "md5_digest": "2f6143caa02337543be0acde65385275", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 456902, "upload_time": "2019-01-02T10:49:03", "url": "https://files.pythonhosted.org/packages/99/83/b4b97d46e5088123c0c0c8fd48115a0483191b69b4c87af2c06b363f666d/rmux-1.0.6.tar.gz" } ] }