exit-pipe
exit-pipe: a command-line utility to pipe the exit code from a subprocess through one or more modifiers.
Background
This utility executes a specified subprocess, captures its exit code, and exits with the result of piping the exit code through a conditional exit code modifier.
The motivation for this slightly obtuse solution was to work around limitations
imposed by build utilities which execute configurable subprocesses without
exposing full shell access (e.g. tox) while also maintaining reasonable
portability across multiple operating system environments (thus eliminating the
option of executing an explicit shell within tox).
As of this release, one style of exit code modifier pipeline exists: bitfield.
The bitfield exit code pipeline (activated via the --bitfield argument)
evaluates the exit code against one or more bitfield masks and either replaces
the exit code with the mapping specified by the first matching bitfield mask or
passes through the unmodified exit code if no bitfield masks match.
Supported Platforms
This utility has been tested on macOS Catalina 10.15.
Usage
Development Environment
Initialize a development environment by executing tox; the exit-pipe utility
will be installed in the .tox/py38 Python virtual environment binary path.
Examples
Remap non-fatal, non-error pylint exit codes to 0
As of pylint 2.4.3, the utility's exit code is a bitfield that may
be decoded as:
| Bit | Meaning |
|---|---|
0 |
No error |
1 |
Fatal message issued |
2 |
Error message issued |
4 |
Warning message issued |
8 |
Refactor message issued |
16 |
Convention message issued |
32 |
Usage error |
To remap the exit code for pylint src such that it exits with:
1for fatal (1) and error (2) exit codes, and0for warning (4), refactor (8), convention (16), and usage (32) exit codes,
you may pass pylint through exit-pipe as follows:
exit-pipe --bitfield "3:1;60:0" -- pylint src
The equivalent bitfield masks may be specified individually as follows:
exit-pipe --bitfield "1,2:1;4,8,16,32:0" -- pylint src
As niche as this example may be, it serves as a generic workaround to cases
where you may wish to log all pylint messages while only interpreting a few
classes of messages as build errors. Disabling or ignoring classes of messages
would result in them not being logged.
Release files for exit-pipe 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| exit-pipe-1.0.0.tar.gz | 4.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| exit_pipe-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 9.7 kB
Release files / exit-pipe-1.0.0.tar.gz
| Download URL | exit-pipe-1.0.0.tar.gz |
|---|---|
| Size | 4.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5c1847982d4c917be7c33bd40c686ce1c66fd934d73cf4ca08381da5d3256848
|
|
BLAKE2b-256 checksum How to use checksums |
fb63f4d8f7b69fc13311ce6839aa248f195882f6ffaf43ddd9b98af39c6662cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.8.0
|
Release files / exit_pipe-1.0.0-py3-none-any.whl
| Download URL | exit_pipe-1.0.0-py3-none-any.whl |
|---|---|
| Size | 5.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
37424ebb9407d9b3d6c70182b167de2ee4ce3dd5a23107393fcf0e95a91b5557
|
|
BLAKE2b-256 checksum How to use checksums |
262cb41dbba097bc02fc7d8dee1febb38452b78bc1961b3cd40bee2f8a521525
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.8.0
|