# tyop > **WARNING**: still in prototype stage... Automate your mass typo updates. ## Run/Hack ``` $ python3 -m venv .venv && source .venv/bin/activate $ pip install -r requirements.txt $ python mymigration.py --yaml ``` ## CLI - **--reset**: run `git-checkout` on all of your glob matches and exit - **--validate**: ensure your `Migration` sub-class is valid - **--yaml**: tell `tyop` that it should try to load the YAML with [ruamel.yaml](https://yaml.readthedocs.io/en/latest/) - **--debug**: enable debug logging ## Logic - Match all files specified by the `GLOB` pattern and apply the following - Check out main/master, `git-pull` and `git-checkout` for clean branch - Feed matched file contents into `Migration` sub-class and show the diff - Show a few diffs to make sure things are running smoothly and then apply to all matches - Iterate through all matches and `git-commit`/`git-push` changes (Use `s` to skip changes) ## Example migration ```python from tyop import Migration class InternalTrueMigration(Migration): GLOB = "~/.abra/apps/**/compose*.yml" def migrate(self, compose): try: if "internal" in compose["networks"]: compose["networks"]["internal"] = {"internal": True} return compose except Exception: return compose InternalTrueMigration() ```