Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multi_repo_automation-1.9.0.tar.gz (27.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

multi_repo_automation-1.9.0-py3-none-any.whl (29.9 kB view details)

Uploaded Python 3

File details

Details for the file multi_repo_automation-1.9.0.tar.gz.

File metadata

  • Download URL: multi_repo_automation-1.9.0.tar.gz
  • Upload date:
  • Size: 27.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for multi_repo_automation-1.9.0.tar.gz
Algorithm Hash digest
SHA256 48a81f3850f2b2cbaf31d951f7f43280cad395e0b7d5963c770f6970dfbc468a
MD5 64c79332b12bc1bda2c69c4f00bce865
BLAKE2b-256 dc651047c8ffc3bfee45aac433fd58f7c47cbb28c56f2021a4e781d6e160f619

See more details on using hashes here.

File details

Details for the file multi_repo_automation-1.9.0-py3-none-any.whl.

File metadata

File hashes

Hashes for multi_repo_automation-1.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f3709d69afb1645d45386dd375f6dc0dc0bbd9d069f8e2f898272dc666c3ce16
MD5 64f83e01f3375c87fd3eb7038a688476
BLAKE2b-256 45ba437596f3bea9526438ff95f3d6a5d6d3c540f83418b76f27783b74171ae5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page