From a71b8d12845c501eb5b6e064126670b3b14bc95b Mon Sep 17 00:00:00 2001 From: zawz Date: Sat, 14 Nov 2020 17:57:17 +0100 Subject: [PATCH] Update doc --- README.md | 56 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index ee499c2..6ae6ba6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ # lxsh -Extended shell linker for linking and generating shell code +Extended shell linker for linking, generating and minimizing shell code + +# Installing + +Put the `lxsh` binary in a PATH folder, `/usr/local/bin` is the recommended. # Features @@ -14,36 +18,60 @@ These commands can be placed anywhere within the script like regular commands. > See `lxsh --help-commands` for more details +## Minimize code + +Reduce code size to a minimum without changing functionality with the `-m` option. + +### Further minimizing + +The script can be further minimized by altering code elements. +This can cause some change in execution behavior if you are not careful. + +Variable names can be minimized with `--minimize-var`, +use `--exclude-var` to exclude variables from being minimized (for example environment config). + +Function names can be minimized with `--minimize` + ## Other features ### Output generated code -Output the generated shell code to stdout with either: -- `-o` option -- shebang other than lxsh +By default lxsh outputs generated shell code to stdout. +You can use the `-o` option to output to a file and make this file directly executable. -> Redirect stdout to a file to create a script file.
> The resulting script is not dependent on lxsh ### Live execution -Directly execute an extended shell script with either +Directly execute an extended lxsh script with either - `-e` option - shebang is lxsh -> Direct execution introduces direct dependency on lxsh and overhead, +> Direct execution introduces direct dependency on lxsh and code generation overhead, > therefore it should be avoided outside of development use -### Minimize code +> There may be some issues with direct execution as of now -Reduce code size to minimum without changing functionality with the `-m` option. +# Development + +## Dependencies + +Depends on [ztd](https://github.com/zawwz/ztd) + +## Building + +Use `make -j8` to build.
+You can use environment variables to alter some aspects: +- DEBUG: when set to `true` will generate a debug binary with profiling +- RELEASE: when set to `true`, the version string will be generated for release format +- STATIC: when set to `true` will statically link libraries # Work in progress -lxsh should currently fully support POSIX syntax.
-A POSIX shell script should give a working output. +The full POSIX syntax is supported, +however not all bash syntax is supported yet, +for example `&>` and `|&` will produce unexpected results Some specific features are missing: -- link commands in subshells inside arithmetics are not resolved -- arithmetics cannot be minimized -- link commands placed on the same line as keywords `if`, `then`, `elif`, `else`, `for`, `while`, `do` or `done` are not resolved +- `$(())` arithmetics cannot be minimized +- redirects are not fully minimized