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.2.0.tar.gz (20.2 kB view details)

Uploaded Source

Built Distribution

multi_repo_automation-1.2.0-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: multi_repo_automation-1.2.0.tar.gz
  • Upload date:
  • Size: 20.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for multi_repo_automation-1.2.0.tar.gz
Algorithm Hash digest
SHA256 c6b5d67c0c3d85f4f8eae81dfbd0e71de0bd5bd06160d20fc5c609b1c1619d7f
MD5 27e6cbc02dc8490e34cfbe7ca4307351
BLAKE2b-256 2e834a37740f3589391816aa079c8cfae2984f0aaafdabed3e4f915d477eb491

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for multi_repo_automation-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d6f6dedfb5cb3b59b9fccd7046735a56406a3c8af4defb46ad96db2640669cb2
MD5 4729aae990376ccbc077c3c595bbbac2
BLAKE2b-256 15dd71f02c8c2c6c39a04dfa82c472334ef27960ce22ffffc0cd9993aa40d2fc

See more details on using hashes here.

Provenance

Supported by

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