{ "info": { "author": "R\u00e9mi Alvergnat", "author_email": "toilal.dev@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "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", "Programming Language :: Python :: 3.7", "Topic :: System :: Filesystems", "Topic :: System :: Networking" ], "description": "Mutagen Helper\n==============\n\n[![Latest Version](http://img.shields.io/pypi/v/mutagen-helper.svg)](https://pypi.python.org/pypi/mutagen-helper)\n![MIT License](http://img.shields.io/badge/license-MIT-blue.svg)\n[![Build Status](http://img.shields.io/travis/gfi-centre-ouest/mutagen-helper.svg)](https://travis-ci.org/gfi-centre-ouest/mutagen-helper)\n[![Coveralls](http://img.shields.io/coveralls/gfi-centre-ouest/mutagen-helper.svg)](https://coveralls.io/github/gfi-centre-ouest/mutagen-helper?branch=develop)\n\nMutagen Helper allow you to define [Mutagen](https://mutagen.io/) synchronisation sessions inside a configuration file \non directories you want to synchronise. Created sessions are marked with a session name and a project name that makes\nthem easier to manage.\n\nAbout mutagen 0.10+\n===================\n\nMutagen was written on earlier version of Mutagen. Mutagen `0.10+` brings a new \n[Orchestration feature](https://mutagen.io/documentation/orchestration/) that makes most mutagen-helper features\nredundant, so you should first give a try to this new feature.\n\nI'm still working with [Mutagen's author Jacob Howard](https://github.com/havoc-io) to embed as much as mutagen-helper \nuse cases as possible into mutagen's core ([mutagen-io/mutagen#109](https://github.com/mutagen-io/mutagen/issues/109)).\n\nInstall\n-------\n\n- Download binaries right from [github release pages](https://github.com/gfi-centre-ouest/mutagen-helper/releases)\n\nor\n\n- run `pip install mutagen-helper` on Python 3.6+\n\nQuickstart\n----------\n\n- Install mutagen as usual (version `0.9+`), and make it available in the user `PATH` or define `MUTAGEN_HELPER_MUTAGEN_BIN` environment \nvariable to the path of the mutagen binary as an alternative (ie: `C:\\tools\\mutagen\\mutagen-helper.exe`).\n\n- Create `.mutagen-helper.yml` file inside some local directory you want to synchronize and set `beta` property to the \ndestination of the synchronisation.\n\n```yaml\nproject_name: 'helper-project' # Optional, it will fallback to directory name if not defined\nbeta: 'root@192.168.1.100:/home/vagrant/projects' # Beta side of the synchronisation\noptions: # Options can be provided\n sync-mode: two-way-resolved\n default-file-mode-beta: 664\n default-directory-mode-beta: 775\n default-owner-beta: vagrant\n default-group-beta: vagrant\n ignore-vcs: True\n ignore:\n - node_modules/\n - vendor/\n```\n\nMutagen Helper appends the `project_name` to the beta URL. It means that this\ndirectory will be synchronised to `/home/vagrant/projects/helper-project`.\n\n- Run `mutagen-helper up` from the project directory.\n\n- Run `mutagen-helper list` to see which sessions are running. Output of this command match `mutagen list` output, \nbut as JSON and with additional synchronisation helper properties like `Project name`, `Session name` and \n`Configuration file`.\n\n- Run `mutagen-helper --help` to check other available commands.\n\nUsage\n-----\n\n```text\nUsage: __main__.py [OPTIONS] COMMAND [ARGS]...\n\n Main command group :return:\n\nOptions:\n --version Show the version and exit.\n -v, --verbose Add more output\n -s, --silent No output at all\n -h, --help Show this message and exit.\n\nCommands:\n up Creates and starts a new synchronization sessions\n down Permanently terminates synchronization sessions\n pause Pauses synchronization sessions\n flush Flush synchronization sessions\n resume Resumes paused or disconnected synchronization sessions\n list Lists existing synchronization sessions and their statuses\n```\n\nMultiple projects support\n-------------------------\n\nYou may `up` multiple projects at the same time if all your projects lies in the same directory.\n\n```text\nC:\\workspace\n |- project1\n |- .mutagen-helper.yml\n |- ...\n |- project2\n |- .mutagen-helper.yml\n |- ...\n |- project3\n |- .mutagen-helper.yml\n |- ...\n```\n\n```bash\nmutagen-helper up --path C:\\workspace\n```\n\nor\n\n```bash\ncd C:\\workspace\nmutagen-helper up\n```\n\nor \n\n```bash\nexport MUTAGEN_HELPER_PATH=C:\\workspace\nmutagen-helper up\n```\n\nThose command will create all mutagen sessions defined in `.mutagen-helper.yml` of each subdirectories of `C:\\workspace`.\n\nAdvanced configuration\n----------------------\n\nYou may use environment variable expansion, with `${VARIABLE}` syntax like in bash. Your can set a default value if \nvariable is not defined with `${VARIABLE:-default}`.\n\nYour may also define multiple sessions under a `sessions` key. Properties defined at root of the configuration file \nwill be inherited by each session.\n\nYou may also give names to sessions for them to be identified with precision, but keep in mind that changing name\non running sessions could cause problem as they are used to find out the real mutagen session id.\n\n```yaml\nbeta: '${DOCKER_DEVBOX_MUTAGEN_BETA:-root@192.168.1.100:/home/vagrant/projects}'\nsessions:\n - options:\n name: 'partial-watch-alpha'\n sync-mode: two-way-resolved\n default-file-mode-beta: 664\n default-directory-mode-beta: 775\n default-owner-beta: vagrant\n default-group-beta: vagrant\n ignore-vcs: True\n ignore:\n - node_modules/\n - vendor/\n max-staging-file-size: 1MB\n watch-mode-beta: no-watch\n - options:\n name: 'full-no-watch'\n sync-mode: two-way-resolved\n default-file-mode-beta: 664\n default-directory-mode-beta: 775\n default-owner-beta: vagrant\n default-group-beta: vagrant\n max-staging-file-size: 1MB\n watch-mode: no-watch\n```\n\nIt's possible to define a single configuration file for multiple projects with `projects` key. It supports the same \ninheritance mechanism as with `sessions`.\n\n```yaml\nbeta: '${DOCKER_DEVBOX_MUTAGEN_BETA:-root@192.168.1.100:/home/vagrant/projects}'\noptions:\n sync-mode: two-way-resolved\n default-file-mode-beta: 664\n default-directory-mode-beta: 775\n default-owner-beta: vagrant\n default-group-beta: vagrant\nprojects:\n - path: C:\\workspace\\project1\n - path: C:\\workspace\\project2\n - path: C:\\workspace\\project3\n beta: beta: 'vagrant@192.168.1.100:/home/vagrant/projects'\n options:\n sync-mode: two-way-resolved\n default-file-mode-beta: 600\n default-directory-mode-beta: 700\n```\n\n\nAutomatic configuration\n-----------------------\n\nYou can automate the configuration of a directory containing many project. Create a `.mutagen-helper.yml` file inside\nthe parent of those directories, and set `auto_configure`.\n\n```yaml\nauto_configure: True\n``` \n\n```text\nC:\\workspace\n |- .mutagen-helper.yml # Auto configure YAML file\n |- project-dev1 # Projects without any mutagen-helper configuration file\n |- ...\n |- project-dev2\n |- ...\n |- project-dev2-stage\n |- ...\n |- project-prod1\n |- ...\n```\n\nThis will create synchronisation projects for each subdirectory (`project-dev1`, `project-dev2`, `project-dev2-stage` and \n`project-prod1`).\n\nYou can set `include` and `exclude` to disable auto configure feature for some subdirectories only, and other property\nyou can normally use on `projects` and `sessions`\n\n```yaml\nbeta: '${DOCKER_DEVBOX_MUTAGEN_BETA:-root@192.168.1.100:/home/vagrant/projects}'\nauto_configure: \n include: \n - '*-dev*'\n exclude:\n - '*-stage'\noptions:\n sync-mode: two-way-resolved\n default-file-mode-beta: 644\n default-directory-mode-beta: 755\n default-owner-beta: vagrant\n default-group-beta: vagrant\n``` \n\nthis will create a synchronisation project for `project-dev1` and `project-dev2` (`include` has priority other `exclude`).\n\nBy default, if a configuration file is present in a project directory, it is still used to create the \nsynchronisation project. You can ignore those configuration files with `ignore_project_configuration` to let auto \nconfigure create the synchronisation project on his own.\n\n```yaml\nbeta: '${DOCKER_DEVBOX_MUTAGEN_BETA:-root@192.168.1.100:/home/vagrant/projects}'\nauto_configure: \n ignore_project_configuration: True # It can also be a list of glob for project names to ignore\noptions:\n sync-mode: two-way-resolved\n default-file-mode-beta: 644\n default-directory-mode-beta: 755\n default-owner-beta: vagrant\n default-group-beta: vagrant\n```\n\nEnvironment variables and default values\n----------------------------------------\n\nSome properties have default values, based on environment variables if defined.\n\n - `alpha`\n - `MUTAGEN_HELPER_ALPHA` environment variable, *or*\n - Directory when the `.mutagen-helper.yml` resides\n - `beta`: \n - `MUTAGEN_HELPER_BETA` environment variable, *or*\n - mandatory in the `.mutagen-helper.yml`\n - `append_project_name_to_beta`: \n - `MUTAGEN_HELPER_APPEND_PROJECT_NAME_TO_BETA`, *or*\n - `True`\n\n`MUTAGEN_HELPER_PATH` environment variable can be set to a path to make mutagen-helper load \nconfiguration from this path by default instead of current working directory. (`--path` option can still be used)", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/gfi-centre-ouest/mutagen-helper", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/gfi-centre-ouest/mutagen-helper", "keywords": "havoc mutagen sync", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "mutagen-helper", "package_url": "https://pypi.org/project/mutagen-helper/", "platform": "", "project_url": "https://pypi.org/project/mutagen-helper/", "project_urls": { "Download": "https://github.com/gfi-centre-ouest/mutagen-helper", "Homepage": "https://github.com/gfi-centre-ouest/mutagen-helper" }, "release_url": "https://pypi.org/project/mutagen-helper/1.1.0/", "requires_dist": null, "requires_python": ">=3.6", "summary": "Mutagen Helper to help you manage sessions", "version": "1.1.0" }, "last_serial": 5599990, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "0a99f4f81829062cea7d76ce5c032356", "sha256": "d0e1c28d3c8b104d9040c4a460ffaa6eaa904ff5bab86638084d638f3e76c2ed" }, "downloads": -1, "filename": "mutagen-helper-1.0.0.tar.gz", "has_sig": false, "md5_digest": "0a99f4f81829062cea7d76ce5c032356", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 27206, "upload_time": "2019-06-14T13:56:52", "url": "https://files.pythonhosted.org/packages/e4/8e/e69cc573ee3ca3e7e372b022343d8af87af98b93c07f5b403b409ae5bdfc/mutagen-helper-1.0.0.tar.gz" } ], "1.0.0a1": [ { "comment_text": "", "digests": { "md5": "c9a02014e63122aac8583cd28fbb1849", "sha256": "9d237a856571ca87c8b27f4051208c1c8439d551cf30e35609058346aac6fbf9" }, "downloads": -1, "filename": "mutagen-helper-1.0.0a1.tar.gz", "has_sig": false, "md5_digest": "c9a02014e63122aac8583cd28fbb1849", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 20116, "upload_time": "2019-05-23T18:43:12", "url": "https://files.pythonhosted.org/packages/3b/e9/ccc42506e3671c3202478ceeb69a6caa0bfd3bfcce4d23c9fd8fe022c1a3/mutagen-helper-1.0.0a1.tar.gz" } ], "1.0.0a2": [ { "comment_text": "", "digests": { "md5": "4aaf7ac12aae9f9d54ce1b80f1986717", "sha256": "084efde73f4b8abe1471b27fb789c2a76e1c90044ae41b50ae3181e0b4f4a7c4" }, "downloads": -1, "filename": "mutagen-helper-1.0.0a2.tar.gz", "has_sig": false, "md5_digest": "4aaf7ac12aae9f9d54ce1b80f1986717", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 21595, "upload_time": "2019-05-25T12:31:32", "url": "https://files.pythonhosted.org/packages/53/2a/b6f7c1ae2bbac85c399c29e7e76b0824fff337c8e298565f9c6c171e60a4/mutagen-helper-1.0.0a2.tar.gz" } ], "1.0.0b1": [ { "comment_text": "", "digests": { "md5": "56efe2ac62a31cdf86e772b258e1089e", "sha256": "e97c42fb65a9fb8431e11e9036e827a6f55ba5f3cb2f1a77ff4a4f71b9b3cb22" }, "downloads": -1, "filename": "mutagen-helper-1.0.0b1.tar.gz", "has_sig": false, "md5_digest": "56efe2ac62a31cdf86e772b258e1089e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 21944, "upload_time": "2019-05-26T22:01:46", "url": "https://files.pythonhosted.org/packages/30/b1/b1dae14da1231d37efe019d59acc15a3d8945019a147f32d3eebfe756831/mutagen-helper-1.0.0b1.tar.gz" } ], "1.0.0b2": [ { "comment_text": "", "digests": { "md5": "7179e825bf6e5ea019f4489586162259", "sha256": "0d13e07a42739cb9e0807eaf51cc1c58535ff90f8c370b050f50b0a2a4a0ad2b" }, "downloads": -1, "filename": "mutagen-helper-1.0.0b2.tar.gz", "has_sig": false, "md5_digest": "7179e825bf6e5ea019f4489586162259", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 22481, "upload_time": "2019-05-27T13:58:58", "url": "https://files.pythonhosted.org/packages/e7/1a/7e4df5515bd3630323f42714b47c535a795fa5fa762a3095efd8d1eb685f/mutagen-helper-1.0.0b2.tar.gz" } ], "1.0.0b3": [ { "comment_text": "", "digests": { "md5": "c8cb9386b3265dfd6c77d10c443115be", "sha256": "747ea1f8fc46b292989738c94b1b1ecbdbc93b9954ee3ce449269fbd645b3ec8" }, "downloads": -1, "filename": "mutagen-helper-1.0.0b3.tar.gz", "has_sig": false, "md5_digest": "c8cb9386b3265dfd6c77d10c443115be", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 22956, "upload_time": "2019-05-27T15:08:43", "url": "https://files.pythonhosted.org/packages/e6/8d/7d20fcf379fad6a571591c9fe2cb9989c83cdd6cc0ce0b40fea8f7963094/mutagen-helper-1.0.0b3.tar.gz" } ], "1.0.0b4": [ { "comment_text": "", "digests": { "md5": "ae4d0911a94cec213a6e6a85fdf9da4c", "sha256": "b1f60219d366d9847b389fb9db4f69ce9a117264b75c6655239ac015b4e47f15" }, "downloads": -1, "filename": "mutagen-helper-1.0.0b4.tar.gz", "has_sig": false, "md5_digest": "ae4d0911a94cec213a6e6a85fdf9da4c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 22989, "upload_time": "2019-05-27T15:18:37", "url": "https://files.pythonhosted.org/packages/22/36/3da9452e2a02731b2abb6fd570249c1f6782b8631d281b6e7cedc0ac380f/mutagen-helper-1.0.0b4.tar.gz" } ], "1.0.0rc1": [ { "comment_text": "", "digests": { "md5": "b097c0c674247f69d16398e410c905e7", "sha256": "1841e86e68d76a00829c30356f7f0af19a60192663e02f0eb9ed945ea77c623c" }, "downloads": -1, "filename": "mutagen-helper-1.0.0rc1.tar.gz", "has_sig": false, "md5_digest": "b097c0c674247f69d16398e410c905e7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 26719, "upload_time": "2019-05-28T13:35:54", "url": "https://files.pythonhosted.org/packages/11/5c/a25b7145da3ed4759fafcf542efe276c356ff0cc238813e0e3ddb8a57838/mutagen-helper-1.0.0rc1.tar.gz" } ], "1.0.0rc2": [ { "comment_text": "", "digests": { "md5": "de09c3f3678094ed5b9897b75e0153ab", "sha256": "65f7cc956d6c5e4de66a4e96d7990a097adc9225b6485b61e44ffbf446e17929" }, "downloads": -1, "filename": "mutagen-helper-1.0.0rc2.tar.gz", "has_sig": false, "md5_digest": "de09c3f3678094ed5b9897b75e0153ab", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 26787, "upload_time": "2019-05-28T13:54:33", "url": "https://files.pythonhosted.org/packages/85/63/80242047a6d14a56a0868c59dc237f0604584cfca440285229c0f04df64d/mutagen-helper-1.0.0rc2.tar.gz" } ], "1.0.0rc3": [ { "comment_text": "", "digests": { "md5": "4016a75c29d5ed93557af1d754f69c31", "sha256": "5317e9153c0b150940036a148233db066b8727ff10a97195861c80a336188b72" }, "downloads": -1, "filename": "mutagen-helper-1.0.0rc3.tar.gz", "has_sig": false, "md5_digest": "4016a75c29d5ed93557af1d754f69c31", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 26806, "upload_time": "2019-05-28T14:14:31", "url": "https://files.pythonhosted.org/packages/1f/51/c30d605ff2fba5d572d0a7d92cc98f95fbf963a0f706e5c832d30a4c417d/mutagen-helper-1.0.0rc3.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "abb493994f4f083abd1ddd4a03871a68", "sha256": "8613aafe7e9f2c2048aeb3670cf7a6be07b9d62b505112bf63771af6dafa2c31" }, "downloads": -1, "filename": "mutagen-helper-1.1.0.tar.gz", "has_sig": false, "md5_digest": "abb493994f4f083abd1ddd4a03871a68", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 27830, "upload_time": "2019-07-29T15:04:37", "url": "https://files.pythonhosted.org/packages/4e/0c/d2151512cac08cf9d3ec69268b9f38cf7b9d5a7ae2bcae9fa19d20be1b5e/mutagen-helper-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "abb493994f4f083abd1ddd4a03871a68", "sha256": "8613aafe7e9f2c2048aeb3670cf7a6be07b9d62b505112bf63771af6dafa2c31" }, "downloads": -1, "filename": "mutagen-helper-1.1.0.tar.gz", "has_sig": false, "md5_digest": "abb493994f4f083abd1ddd4a03871a68", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 27830, "upload_time": "2019-07-29T15:04:37", "url": "https://files.pythonhosted.org/packages/4e/0c/d2151512cac08cf9d3ec69268b9f38cf7b9d5a7ae2bcae9fa19d20be1b5e/mutagen-helper-1.1.0.tar.gz" } ] }