Skip to main content

epew (ExternalProgramExecutionWrapper) is a tool to wrap program-calls with some useful functions like getting stdout, stderr, exitcode and the ability to set a timeout.

Project description

General PyPI

epew (ExternalProgramExecutionWrapper) is a tool to wrap program-calls with some useful functions.

Features

epew is a commandline-tool. There is no gui. The main-advantage of epew is to be used when

  • it is difficult to pass special characters (backslashs, quotes, etc.) from commandline to another program (use epew with the --ArgumentIsBase64Encoded-switch).
  • it is difficult to get stdout, stderr or the exitcode of the program (use epew with the --StdOutFile- or --StdErrFile- or --ExitCodeFile-switch).
  • you want to have a simple timeout when running a program (use epew with the --TimeoutInMilliseconds-switch).
  • you want to print the output to the console but also log the output into a file when running a program. Both (console and logfile) can of course have timestamps and a distinction between stderr and stdout.

Other features:

  • epew is available for Linux and Windows.
  • epew resolves environment-variables (e. g. you can set git as program instead of C:\Program Files\Git\cmd\git.exe (which would also be possible)).

Get epew

Installation via pip (Linux and Windows)

pip install epew

pip requires Python 3.8. See the pypi-site of epew for more information.

Download sourcecode using git (Linux and Windows)

git clone https://github.com/anionDev/externalProgramExecutionWrapper
cd externalProgramExecutionWrapper
dotnet build  ExternalProgramExecutionWrapper.sln

Installation via winget (Windows, planned)

Coming as soon as possible. winget is new for all of us, that's why epew is not instant available via winget.

Usage

>epew
  -p, --Program                     Required. Program which should be executed
  -a, --Argument                    Argument for the program which should be
                                    executed
  -b, --ArgumentIsBase64Encoded     (Default: false) Specifiy whether Argument
                                    is base64-encoded
  -w, --Workingdirectory            Workingdirectory for the program which
                                    should be executed
  -v, --Verbosity                   (Default: Normal) Verbosity of
                                    ExternalProgramExecutionWrapper
  -i, --PrintErrorsAsInformation    (Default: false) Treat errors as information
  -h, --AddLogOverhead              (Default: false) Add log overhead
  -l, --LogFile                     Logfile for ExternalProgramExecutionWrapper
  -o, --StdOutFile                  File for the stdout of the executed program
  -e, --StdErrFile                  File for the stderr of the executed program
  -x, --ExitCodeFile                File for the exitcode of the executed
                                    program
  -d, --TimeoutInMilliseconds       (Default: 2147483647) Maximal duration of
                                    the execution process before it will by
                                    aborted by ExternalProgramExecutionWrapper
  -t, --Title                       Title for the execution-process
  -n, --NotSynchronous              (Default: false) Run the program
                                    asynchronously
  --help                            Display this help screen.
  --version                         Display version information.

Exitcodes:

2147393801: If no program was executed 2147393802: If a fatal error occurred 2147393803: If the executed program was aborted due to the given timeout 2147393881: If executed on MacOS (applies only to the pip-package) 2147393882: If executed on an unknown OS (applies only to the pip-package) 2147393883: If an (unexpected) exception occurred (applies only to the pip-package)

If the executed program terminated then its exitcode will be set as exitcode of epew.

Technical details

The pip-package

Installing epew via pip does really install epew. It does not install another implementation of epew with same behavior. The pip-package of epew takes the binary-files of epew (which are written in C# and compiled for the runtimes win-x64 and linux-x64), wraps them to a bundle and simple calls the correct one dependent on your OS.

Strong name

The officially released epew.dll-file is always signed with the key with the short-id 79cae7246084aa22. Do not trust any epew.dll-file which are not signed with this key. Only epew.dll will be signed with this key. All other files contained in a binary-release of epew are not signed by this key. You can verify the key using sn with sn -T epew.dll.

License

epew is licensed under the terms of MIT. The concrete license-text can be found here.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

epew-3.4.2-py3-none-any.whl (62.7 MB 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