A command-line utility for running commands in subdirectories (e.g. in a monorepo) with a set of pre-commit hooks
Project description
run-in-subdirectory
A command-line utility for running commands in subdirectories (e.g. in a monorepo) with a set of pre-commit hooks
Usage
As a pre-commit hook
-
Use
run-in-subdirectory
hook to run command in a subdirectory passed as the first argument.In this example, pre-commit will run the command
npx --no -- prettier -w -u
inclient
subdirectory, and the commandpoetry run black
inserver
subdirectory:repos: - repo: https://github.com/egormkn/run-in-subdirectory rev: 1.0.1 hooks: - id: run-in-subdirectory alias: prettier name: Format client code with Prettier args: ["client", "npx --no -- prettier -w -u"] types: [ text ] files: ^client/ - id: run-in-subdirectory alias: black name: Format server code with Black args: ["server", "poetry run black"] types: [ python ] files: ^client/
-
Use one of
run-in-...-level-subdirectory
hooks to automatically extractfirst
,second
orthird
-level subdirectory from the last file path, that was passed to the hook by pre-commit.Note that you should set
files
,types
and/orexclude
properties so that the hook only runs for files in that subdirectory.repos: - repo: https://github.com/egormkn/run-in-subdirectory rev: 1.0.1 hooks: - id: run-in-first-level-subdirectory alias: prettier name: Format client code with Prettier args: ["npx --no -- prettier -w -u"] types: [ text ] files: ^client/ - id: run-in-first-level-subdirectory alias: black name: Format server code with Black args: ["poetry run black"] types: [ python ] files: ^client/
-
If the available hooks are not enough for your task, use a custom Python hook and execute
run-in-subdirectory
as a command-line utility). Also, please open an issue to report such cases.repos: - repo: local hooks: - id: prettier name: Format client code with Prettier language: python additional_dependencies: - "run-in-subdirectory==1.0.1" entry: run-in-subdirectory -d client npx --no -- prettier -w -u types: [ text ] files: ^client/
As a command-line utility
run-in-subdirectory
can also be used as a command-line utility:
pip install run-in-subdirectory
usage: run-in-subdirectory [-h] [-v] (-l LEVEL | -d DIRECTORY) executable [args ...]
Runs the command in a subdirectory and fixes paths in arguments.
positional arguments:
executable Executable to run
args Sequence of program arguments
options:
-h, --help show this help message and exit
-v, --verbose Print information about a command to be called
-l LEVEL, --level LEVEL
Subdirectory level (0 for top-level directory)
-d DIRECTORY, --directory DIRECTORY
Subdirectory within which the subprocess will be executed
example:
When this program is executed with the following command:
run-in-subdirectory -d client npx --no prettier client/src/index.ts
Then the command will be executed:
npx --no prettier src/index.ts
with the current working directory set to `client`.
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
Built Distribution
File details
Details for the file run_in_subdirectory-1.0.1.tar.gz
.
File metadata
- Download URL: run_in_subdirectory-1.0.1.tar.gz
- Upload date:
- Size: 8.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3fb900d71e91a827e78e92169f551206def054a43918d25190b7bd8e46ed398d |
|
MD5 | c255930a01bf52de2b3c58c24d95c3a7 |
|
BLAKE2b-256 | 588543f2a94180b2fde7e0670a8465ed06ca461e9bf3eac46009d3e2a0b5083d |
File details
Details for the file run_in_subdirectory-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: run_in_subdirectory-1.0.1-py3-none-any.whl
- Upload date:
- Size: 10.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd8fd52a5754d539d6edede24e9383bd63e32df408f65351ccfb993e3a129fa7 |
|
MD5 | f2be39e82f88e644e42fd26c4581c9ee |
|
BLAKE2b-256 | 834f104ded58c59efda58530bc41f654520eea66325e6d0872f6c6782022fada |