Skip to main content

Perform bulk updates across repositories

Project description

auto-pr logo

CI Publish PyPI version PyPI downloads Code style: black

auto-pr

A command line tool to perform bulk updates across multiple GitHub repositories.

How to install

With pipx (recommended):

pipx install auto-pr

With pip:

pip install auto-pr

Usage

Usage

Init

First initialise the project directory by running the init command within an empty directory.

auto-pr init --api-key=<github_token> --ssh-key-file=<path-to-ssh-key>

Where <github_token> is a GitHub personal access token which has repo and user:user:email scope.

Next modify the generated config.yaml file with your desired configurations.

credentials:
  api_key: <github_token>
  ssh_key_file: /path/to/ssh/key/to/push/.ssh/id_rsa
pr:
  body: >
    Body of the PR that will be generated

    Can be multi-line :)
  branch: auto-pr # The branch name to use when making changes
  message: Replace default pipelines with modules # Commit message
  title: 'My awesome change' # Title of the PR
repositories: # Rules that define what repos to update
  - mode: add
    match_owner: <org/user>
update_command:
  - touch
  - my-file

Repositories

You can define the list of repositories to pull and build into the database to update using a list of rules.

  • mode - either add or remove - used to either match or negate
  • public (optional) - pull only public or private, leave out for both
  • archived (optional) - archived or non-archived, leave out for both
  • match_owner (optional) - the owner or user to pull
  • match_name (optional) - a list of regular expressions to match against to pull

The flags of the filter rules are optional not specifying will run the command on all repositories that the token has access too.

Update Command

This is the list containing the command to be executed along with the arguments passed to it. It will be executed from the root of each repository that is processed.

If an error occurs during the execution it will be displayed in the output but will not halt the execution.

See example commands

Pull

After you have configured the project you can now pull the repositories down that match your rules.

auto-pr pull

This will generate a db.json file within your workdir containing a list of mapped repositories and their state.

This command can be run multiple times, if there are new matching repositories found they will be merged into the existing database.

If you would like to use your globally set config, you can pass the option --use-global-git-config when pulling the repos. If you had already pulled the repos before this and you would like to change the config for those repos, you would also need to pass --update-repos alongside the global-git-config option when pulling.

Test

Once the pull command has finished setting up the work directory you can now run test to check what the changes that will be made by the script will yield.

Run

When you're confident with the changes output from the test command you can finally execute run.

auto-pr run

This will perform the changes to a branch on the locally cloned repository and push the branch upstream with the information you provided within config.yaml.

By default, the commits will be associated with your primary email and name, which were set on the repo level for those repos when you ran auto-pr pull. If you would like to use your global git config for the repos that you already pulled, you need to run pull again with:

auto-pr pull --update-repos --use-global-git-config

See --help for more information about other commands and their usage.

Reset

You can reset the list of repos in db.json using auto-pr reset all, or auto-pr reset from FILE

When using auto-pr reset from FILE, the list of repos should be provided as a newline separated list of repos like <owner>/<name>, e.g:

getyourguide/test
getyourguide/auto-pr

Security

For sensitive security matters please contact security@getyourguide.com.

Legal

Copyright 2021 GetYourGuide GmbH.

auto-pr is licensed under the Apache License, Version 2.0. See LICENSE for the full text.

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

auto_pr-1.0.7.tar.gz (17.8 kB view details)

Uploaded Source

Built Distribution

auto_pr-1.0.7-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file auto_pr-1.0.7.tar.gz.

File metadata

  • Download URL: auto_pr-1.0.7.tar.gz
  • Upload date:
  • Size: 17.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.9

File hashes

Hashes for auto_pr-1.0.7.tar.gz
Algorithm Hash digest
SHA256 293870929df086f00d27986e9c35a5a47e9bc5551fe88dc5ad50527c6c99aa66
MD5 c21bc8246c8c018a4cfc71361b5f0f2c
BLAKE2b-256 bb1ea4c95c415a16933adc0a96b8f09397bcd26d1cb571ce9706bdcf83be3109

See more details on using hashes here.

File details

Details for the file auto_pr-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: auto_pr-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.9

File hashes

Hashes for auto_pr-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 57a3601a097526ab5ca4546264f0f1df83284b532e68793a27c2bbc8919e44f6
MD5 4a782eea1d12ea8775f59f14d253c611
BLAKE2b-256 e524558cf12ac7360b0c3f760fa497a6ee594e3897dd60e7c1fb9b0a298aebfe

See more details on using hashes here.

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