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
File details
Details for the file multi_repo_automation-1.3.0.tar.gz
.
File metadata
- Download URL: multi_repo_automation-1.3.0.tar.gz
- Upload date:
- Size: 20.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f9fdbd78f83a3a71d61515dcda6309ad84529eec662107b52642d038f2fca4a8 |
|
MD5 | c80ab4e5a886134df48370faf9ee017b |
|
BLAKE2b-256 | e9d4a87783c9323136247a9e7741773c8e8c7584387de1b6303f61cc31a5534f |
Provenance
File details
Details for the file multi_repo_automation-1.3.0-py3-none-any.whl
.
File metadata
- Download URL: multi_repo_automation-1.3.0-py3-none-any.whl
- Upload date:
- Size: 21.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aea5b368bfcab3ccf488d55066d88ace08d709d16b8d7e9f72a15b0512e729a6 |
|
MD5 | cf67316ea310f31ef7e1585c2c2572c3 |
|
BLAKE2b-256 | 982caf4ca87ade731f374770a8b797254652737b2ec0def485c5c7d320267943 |