Library for automation updates on multiple repositories.
Project description
Multi repo automation
Configuration
To be able to apply your changes on multiple repository you should create a file with something like this:
- dir: /home/user/src/my-repo
name: user/my-repo
types: ['javascript', 'python', 'docker']
master_branch: master
stabilization_branches: [1.0, 1.1]
folders_to_clean: []
The main configuration is a YAML file ~/.config/multi-repo-automation.yaml
with the following options:
repos_filename
: the filename of the files with the repositories definitions create above, default is repos.yaml
.
browser
: the browser to use to open the pull requests, default is xdg-open
.
editor
: the editor to use to edit files, default is xdg-open
.
Migration script base
#!/usr/bin/env python3
import multi_repo_automation as mra
def _do() -> None:
# Your actions
if __name__ == "__main__":
mra.main(
_do,
config={
# pull_request_on_stabilization_branches: To apply the action on all stabilization (including master) branches.
# pull_request_title: The pull request title.
# pull_request_body: The pull request body.
# branch: The created branch branch name.
# pull_request_branch_prefix: The created branch prefix (used when we run it on all the stabilization branches).
},
)
Use the --help
option to see the available options.
Utilities
import multi_repo_automation as mra
# Test if a file exists
if mra.run(["git", "ls-files", "**/*.txt"], stdout=subprocess.PIPE).stdout.strip() != "":
print("Found")
# Get all YAML files:
mra.all_filenames_identify("yaml")
# Test if a file exists and contains a text
if mra.git_grep(file, r"\<text\>"]):
print("Found")
# Edit a files manually
mra.edit(["file"])
Edit file programmatically
with mra.Edit('my-file.txt') as edit:
edit.content = edit.content.replace('<from>', '<to>')
Edit YAML file programmatically
with mra.EditYAML('my-file.yaml') as edit:
edit.setdefault('dict', {})['prop'] = 'value'
Edit TOML file programmatically
with mra.EditTOML('my-file.toml') as edit:
edit.setdefault('dict', {})['prop'] = 'value'
Edit Config file programmatically
with mra.EditConfigL('my-file.ini') as edit:
edit.setdefault('dict', {})['prop'] = 'value'
Contributing
Install the pre-commit hooks:
pip install pre-commit
pre-commit install --allow-missing-config
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
Close
Hashes for multi_repo_automation-1.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 436c5522a7500a90627a0400d9716cf32f4971e8625956e74116761fe58d4e9d |
|
MD5 | 3d9e873e4e91d14113622cf064312286 |
|
BLAKE2b-256 | be75b13da49fe850e54c258c8218b45283a1b21cb17b37dbec2081d579fc31cb |
Close
Hashes for multi_repo_automation-1.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 77c829174902f7e3ce36360c7ec8b03a6689535d8987b616e42831faff385074 |
|
MD5 | c568952765ed1d75e12d98c9cd8dc5a8 |
|
BLAKE2b-256 | 9cfa282cc7f9d51c07292f12875b8d1b3b558b9b76e19ec444d30eb2ed10eabf |