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-subdirectoryhook to run command in a subdirectory passed as the first argument.In this example, pre-commit will run the command
npx --no -- prettier -w -uinclientsubdirectory, and the commandpoetry run blackinserversubdirectory: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-subdirectoryhooks to automatically extractfirst,secondorthird-level subdirectory from the last file path, that was passed to the hook by pre-commit.Note that you should set
files,typesand/orexcludeproperties 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-subdirectoryas 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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|