Skip to main content

Cron-based remote pre-commit executions by opening pull requests.

Project description

repo-stream

Cron-based remote pre-commit executions by opening pull requests.

  • Do you've a lot of old projects that are using deprecated configuration?
  • Do you want to test a small change in a lot of projects at the same time without adding them one by one?

Those are the reasons behind repo-stream.

PyPI version Test Coverage status

How does it work?

Scans your repositories looking for pre-commit repo-stream hooks and run pre-commit using another remote configuration file, which location is specified in this hook. If this execution edits file contents, opens a pull request against the repository.

So you can use repo-stream to run one-time pre-commit hooks for all your repositories without have to define them inside the configuration of each one.

Usage

  1. Create a repo-stream hook in the pre-commit configuration of your project. If this is found, repo-stream will search a pre-commit configuration file at updater under config repository arguments and will run pre-commit using that configuration against the current repository.

    - repo: https://github.com/mondeja/repo-stream
      rev: v1.3.1
      hooks:
        - id: repo-stream
          args:
            - -config=https://github.com/<your-username>/repo-stream-config
            - -updater=upstream
    

    You don't need to specify the extension .yaml in the updater argument.

  2. Create your repo-stream configuration files repository, for example at https://github.com/<your-username>/repo-stream-config.

  3. Create the pre-commit configuration file, following this example would be at upstream.yaml, for example:

    repos:
      - repo: https://github.com/mondeja/pre-commit-hooks
        rev: v1.5.2
        hooks:
          - id: add-pre-commit-hook
            args: 
              - -repo=https://github.com/mondeja/pre-commit-hooks
              - -id=dev-extras-required
              - -rev=v1.5.2
    

    For more information about this hook see add-a-pre-commit-hook.

  4. Create the cron task using some platform like Github Actions:

    name: repo-stream update
    
    on:
      schedule:
        - cron: 0 4 1/7 * *
      workflow_dispatch:
    
    jobs:
      repo-stream-update:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v2
          - name: Set up Python
            uses: actions/setup-python@v2
            with:
              python-version: 3.x
          - name: Install repo-stream
            run: pip install repo-stream
          - name: Run repo-stream update
            run: repo-stream <your-username>
            env:
              GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
              GITHUB_USERNAME: <your-username>
    
  • GH_TOKEN must be a secret configured for the repository with the Github user token of <your-username> user.
  • If you want to update other repositories not published under your user, pass them as parameters of repo-stream <your-username> <other-username>.

Consult repo-stream --help for documentation about valid arguments.

Usage as Github Action

name: repo-stream update

on:
  schedule:
    - cron: 0 4 1/7 * *
  workflow_dispatch:

jobs:
  repo-stream-update:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-python@v2
        with:
          python-version: 3.x
      - uses: mondeja/repo-stream@v1.3.1
        with:
          usernames: <your-username> <other-username>
          args: --dry-run
        env:
          GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
          GITHUB_USERNAME: <your-username>

Common workflows

Add a pre-commit hook

You can use the pre-commit hook mondeja/pre-commit-hooks#add-pre-commit-hook to add a new pre-commit hook to the pre-commit configuration of a project.

Note that this hook only makes sense executed from outside, using a workflow like repo-stream. So repo-stream allows you to create pre-commit hooks for other things than its main workflow mechanism.

For example:

# upstream.yaml
repos:
  - repo: https://github.com/mondeja/pre-commit-hooks
      rev: v1.5.2
      hooks:
        - id: add-pre-commit-hook
          args: 
            - -repo=https://github.com/mondeja/pre-commit-hooks
            - -id=dev-extras-required
            - -rev=v1.5.2

This would add the hook dev-extras-required to the pre-commit configuration of your project, if it isn't already defined.

Current limitations

  • Only works with Github repositories.

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

repo_stream-1.3.1.tar.gz (14.7 kB view details)

Uploaded Source

Built Distribution

repo_stream-1.3.1-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

Details for the file repo_stream-1.3.1.tar.gz.

File metadata

  • Download URL: repo_stream-1.3.1.tar.gz
  • Upload date:
  • Size: 14.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for repo_stream-1.3.1.tar.gz
Algorithm Hash digest
SHA256 3fc63217a6a7716a1497d4cdaa3278abda76515bb4cd8b8a2c3688237ccb10fa
MD5 92fd6000fcc80061f2976e49f19ac990
BLAKE2b-256 360383daddde158653b0cd09f29785fc957c3f3f2f3102ca45c5c37e24bbe097

See more details on using hashes here.

File details

Details for the file repo_stream-1.3.1-py3-none-any.whl.

File metadata

  • Download URL: repo_stream-1.3.1-py3-none-any.whl
  • Upload date:
  • Size: 13.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for repo_stream-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a7a6e0200d86845b2e0d90a703ce4cc566670bb27317ebf8dbe37d33daa19866
MD5 6ba03e7bb5aa649eee9e1017a9d70577
BLAKE2b-256 af896d00e896ac465f4694736fa32e867942f0f185c0b6a1b621bd6c2881e95b

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