Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

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

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
  -r, --RunAsAdministrator          (Default: false) Run program as
                                    administrator
  -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
  --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 is the 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.

Files for epew, version 3.4.0
Filename, size File type Python version Upload date Hashes
Filename, size epew-3.4.0-py3-none-any.whl (62.7 MB) File type Wheel Python version py3 Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page