Cron-based remote pre-commit executions by opening pull requests.
Project description
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.
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
-
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 atupdater
underconfig
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 theupdater
argument. -
Create your
repo-stream
configuration files repository, for example athttps://github.com/<your-username>/repo-stream-config
. -
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.
-
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for repo_stream-1.3.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7a6e0200d86845b2e0d90a703ce4cc566670bb27317ebf8dbe37d33daa19866 |
|
MD5 | 6ba03e7bb5aa649eee9e1017a9d70577 |
|
BLAKE2b-256 | af896d00e896ac465f4694736fa32e867942f0f185c0b6a1b621bd6c2881e95b |