Skip to main content

A command-line utility for running commands in a subdirectory (e.g., linters on a monorepo) with a set of pre-commit hooks

Project description

run-in-subdirectory

A command-line utility for running commands in a subdirectory (e.g., linters on a monorepo) with a set of pre-commit hooks

PyPI - Version PyPI - License PyPI - Python Version pre-commit Code style: black Imports: isort Linting: ruff

Usage

pre-commit

  • Use run-in-subdirectory hook to run command in a subdirectory passed as the first argument:

    repos:
      - repo: https://github.com/egormkn/run-in-subdirectory
        rev: main
        hooks:
          - id: run-in-subdirectory
            alias: prettier
            name: Format code with Prettier
            args: ["client", "npx --no -- prettier -w -u"]
            types: [ text ]
            files: ^client/
    
  • Use one of run-in-...-level-subdirectory hooks to automatically extract first, second or third-level subdirectory from the file path passed as the last positional argument.

    Note that you should set files, types and exclude properties so that the hook only runs for files in that subdirectory.

    repos:
      - repo: https://github.com/egormkn/run-in-subdirectory
        rev: main
        hooks:
          - id: run-in-first-level-subdirectory
            alias: prettier
            name: Format code with Prettier
            args: ["npx --no -- prettier -w -u"]
            types: [ text ]
            files: ^client/
    

command-line

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 eslint client/src/index.ts
  Then the command will be executed:
    npx --no eslint src/index.ts
  and the current working directory will be 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

run_in_subdirectory-0.2.0.tar.gz (4.6 kB view hashes)

Uploaded Source

Built Distribution

run_in_subdirectory-0.2.0-py3-none-any.whl (5.7 kB view hashes)

Uploaded Python 3

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