Skip to main content

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.

Metadata

Release files for repo-stream 1.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for repo-stream 1.3.1
File Size Uploaded
repo_stream-1.3.1.tar.gz 14.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for repo-stream 1.3.1
File Interpreter ABI Platform
repo_stream-1.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 28.6 kB

Release files / repo_stream-1.3.1.tar.gz

Download URL repo_stream-1.3.1.tar.gz
Size 14.7 kB
Tags Source
SHA-256 checksum
How to use checksums
3fc63217a6a7716a1497d4cdaa3278abda76515bb4cd8b8a2c3688237ccb10fa
BLAKE2b-256 checksum
How to use checksums
360383daddde158653b0cd09f29785fc957c3f3f2f3102ca45c5c37e24bbe097
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / repo_stream-1.3.1-py3-none-any.whl

Download URL repo_stream-1.3.1-py3-none-any.whl
Size 13.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a7a6e0200d86845b2e0d90a703ce4cc566670bb27317ebf8dbe37d33daa19866
BLAKE2b-256 checksum
How to use checksums
af896d00e896ac465f4694736fa32e867942f0f185c0b6a1b621bd6c2881e95b
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

1.3.1 This release

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.0.3

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page