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.
Important: epew is not ready for usage yet.
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 ofC:\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.