Mutagen Helper allow you to define Mutagen synchronisation sessions inside a configuration file on directories you want to synchronise. Created sessions are marked with a session name and a project name that makes them easier to manage.
Project description
Mutagen Helper
Mutagen Helper allow you to define Mutagen synchronisation sessions inside a configuration file on directories you want to synchronise. Created sessions are marked with a session name and a project name that makes them easier to manage.
About mutagen 0.10+
Mutagen was written on earlier version of Mutagen. Mutagen 0.10+ brings a new
Orchestration feature that makes most mutagen-helper features
redundant, so you should first give a try to this new feature.
I'm still working with Mutagen's author Jacob Howard to embed as much as mutagen-helper use cases as possible into mutagen's core (mutagen-io/mutagen#109).
Install
- Download binaries right from github release pages
or
- run
pip install mutagen-helperon Python 3.6+
Quickstart
-
Install mutagen as usual (version
0.10+), and make it available in the userPATHor defineMUTAGEN_HELPER_MUTAGEN_BINenvironment variable to the path of the mutagen binary as an alternative (ie:C:\tools\mutagen\mutagen-helper.exe). -
Create
.mutagen-helper.ymlfile inside some local directory you want to synchronize and setbetaproperty to the destination of the synchronisation.
project_name: 'helper-project' # Optional, it will fallback to directory name if not defined
beta: 'root@192.168.1.100:/home/vagrant/projects' # Beta side of the synchronisation
options: # Options can be provided
sync-mode: two-way-resolved
default-file-mode-beta: 664
default-directory-mode-beta: 775
default-owner-beta: vagrant
default-group-beta: vagrant
ignore-vcs: True
ignore:
- node_modules/
- vendor/
Mutagen Helper appends the project_name to the beta URL. It means that this
directory will be synchronised to /home/vagrant/projects/helper-project.
-
Run
mutagen-helper upfrom the project directory. -
Run
mutagen-helper listto see which sessions are running. Output of this command matchmutagen listoutput, but as JSON and with additional synchronisation helper properties likeProject name,Session nameandConfiguration file. -
Run
mutagen-helper --helpto check other available commands.
Usage
Usage: __main__.py [OPTIONS] COMMAND [ARGS]...
Main command group :return:
Options:
--version Show the version and exit.
-v, --verbose Add more output
-s, --silent No output at all
-h, --help Show this message and exit.
Commands:
up Creates and starts a new synchronization sessions
down Permanently terminates synchronization sessions
pause Pauses synchronization sessions
flush Flush synchronization sessions
resume Resumes paused or disconnected synchronization sessions
list Lists existing synchronization sessions and their statuses
Multiple projects support
You may up multiple projects at the same time if all your projects lies in the same directory.
C:\workspace
|- project1
|- .mutagen-helper.yml
|- ...
|- project2
|- .mutagen-helper.yml
|- ...
|- project3
|- .mutagen-helper.yml
|- ...
mutagen-helper up --path C:\workspace
or
cd C:\workspace
mutagen-helper up
or
export MUTAGEN_HELPER_PATH=C:\workspace
mutagen-helper up
Those command will create all mutagen sessions defined in .mutagen-helper.yml of each subdirectories of C:\workspace.
Advanced configuration
You may use environment variable expansion, with ${VARIABLE} syntax like in bash. Your can set a default value if
variable is not defined with ${VARIABLE:-default}.
Your may also define multiple sessions under a sessions key. Properties defined at root of the configuration file
will be inherited by each session.
You may also give names to sessions for them to be identified with precision, but keep in mind that changing name on running sessions could cause problem as they are used to find out the real mutagen session id.
beta: '${DOCKER_DEVBOX_MUTAGEN_BETA:-root@192.168.1.100:/home/vagrant/projects}'
sessions:
- options:
name: 'partial-watch-alpha'
sync-mode: two-way-resolved
default-file-mode-beta: 664
default-directory-mode-beta: 775
default-owner-beta: vagrant
default-group-beta: vagrant
ignore-vcs: True
ignore:
- node_modules/
- vendor/
max-staging-file-size: 1MB
watch-mode-beta: no-watch
- options:
name: 'full-no-watch'
sync-mode: two-way-resolved
default-file-mode-beta: 664
default-directory-mode-beta: 775
default-owner-beta: vagrant
default-group-beta: vagrant
max-staging-file-size: 1MB
watch-mode: no-watch
It's possible to define a single configuration file for multiple projects with projects key. It supports the same
inheritance mechanism as with sessions.
beta: '${DOCKER_DEVBOX_MUTAGEN_BETA:-root@192.168.1.100:/home/vagrant/projects}'
options:
sync-mode: two-way-resolved
default-file-mode-beta: 664
default-directory-mode-beta: 775
default-owner-beta: vagrant
default-group-beta: vagrant
projects:
- path: C:\workspace\project1
- path: C:\workspace\project2
- path: C:\workspace\project3
beta: beta: 'vagrant@192.168.1.100:/home/vagrant/projects'
options:
sync-mode: two-way-resolved
default-file-mode-beta: 600
default-directory-mode-beta: 700
Automatic configuration
You can automate the configuration of a directory containing many project. Create a .mutagen-helper.yml file inside
the parent of those directories, and set auto_configure.
auto_configure: True
C:\workspace
|- .mutagen-helper.yml # Auto configure YAML file
|- project-dev1 # Projects without any mutagen-helper configuration file
|- ...
|- project-dev2
|- ...
|- project-dev2-stage
|- ...
|- project-prod1
|- ...
This will create synchronisation projects for each subdirectory (project-dev1, project-dev2, project-dev2-stage and
project-prod1).
You can set include and exclude to disable auto configure feature for some subdirectories only, and other property
you can normally use on projects and sessions
beta: '${DOCKER_DEVBOX_MUTAGEN_BETA:-root@192.168.1.100:/home/vagrant/projects}'
auto_configure:
include:
- '*-dev*'
exclude:
- '*-stage'
options:
sync-mode: two-way-resolved
default-file-mode-beta: 644
default-directory-mode-beta: 755
default-owner-beta: vagrant
default-group-beta: vagrant
this will create a synchronisation project for project-dev1 and project-dev2 (include has priority other exclude).
By default, if a configuration file is present in a project directory, it is still used to create the
synchronisation project. You can ignore those configuration files with ignore_project_configuration to let auto
configure create the synchronisation project on his own.
beta: '${DOCKER_DEVBOX_MUTAGEN_BETA:-root@192.168.1.100:/home/vagrant/projects}'
auto_configure:
ignore_project_configuration: True # It can also be a list of glob for project names to ignore
options:
sync-mode: two-way-resolved
default-file-mode-beta: 644
default-directory-mode-beta: 755
default-owner-beta: vagrant
default-group-beta: vagrant
Environment variables and default values
Some properties have default values, based on environment variables if defined.
alphaMUTAGEN_HELPER_ALPHAenvironment variable, or- Directory when the
.mutagen-helper.ymlresides
beta:MUTAGEN_HELPER_BETAenvironment variable, or- mandatory in the
.mutagen-helper.yml
append_project_name_to_beta:MUTAGEN_HELPER_APPEND_PROJECT_NAME_TO_BETA, orTrue
MUTAGEN_HELPER_PATH environment variable can be set to a path to make mutagen-helper load
configuration from this path by default instead of current working directory. (--path option can still be used)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mutagen-helper-2.0.0.tar.gz.
File metadata
- Download URL: mutagen-helper-2.0.0.tar.gz
- Upload date:
- Size: 20.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e640a3d2e0d55b8f2e87e6dbde7d7a2679a4f92c90b05d13966e6c055b16e513
|
|
| MD5 |
a5c79423055066c76919d2983be331fe
|
|
| BLAKE2b-256 |
ad31d26f94da46b1d3d86a909192914d6b1bb75b25dc52e3bff34eeb0f8a36f7
|
File details
Details for the file mutagen_helper-2.0.0-py3-none-any.whl.
File metadata
- Download URL: mutagen_helper-2.0.0-py3-none-any.whl
- Upload date:
- Size: 25.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2038eb01582bb1599db0abeb8e2d6120f0c7f35caef462504ba687c7b679c335
|
|
| MD5 |
8687e9860eb190a3a47e230daa3a1683
|
|
| BLAKE2b-256 |
f2ed2c2da342a9222eb07d238206083042515153a954e938989d3c454a8f25c0
|