# gen-shell
![Jenkins](https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fbuild.bhojwani.org%2Fjob%2Fgen-shell%2F)
-A simple way to turn any command into a shell with arrow key/history support. This is a fork of [taskshell](https://github.com/GothenburgBitFactory/taskshell) with a highly reduce codebase.
+A simple way to turn any command into a shell with arrow key/history support (if compiled with libreadline). Forked from [taskshell](https://github.com/GothenburgBitFactory/taskshell).
## Usage
-Just put the command that you want to repeat after the c flag, eg; `gen-shell -c ls`, or even something much more complex like `gen-shell -c "cd /home/armaa/Clone/words && /home/armaa/Clone/words/bin/words` This command was actually the inspiration for gen-shell.
+Just put the command that you want to repeat after the c flag, eg; `gen-shell -c ls`, or even something much more complex like `gen-shell -c "cd /home/armaa/Clone/words && /home/armaa/Clone/words/bin/words"` This command was actually the inspiration for gen-shell.
## Installation
-### Binaries
+### From a binary
Binaries can be downloaded [from here](https://build.bhojwani.org/job/gen-shell/lastSuccessfulBuild/artifact/build/src/gen-shell). NB: these binaries are compiled against libreadline7, so if your system only has libreadline8, you can symlink 8 to 7 with `sudo ln -s /usr/lib/x86_64-linux-gnu/libreadline.so.8.0 /usr/lib/x86_64-linux-gnu/libreadline.so.7`. This isn't a great solution, but it gets the job done.
### From source
- make
- gcc
- g++ (sometimes packaged as gcc-c++ or gcc-g++)
- - cpp (11 or higher)
- - libreadline development files (7 or 8 is fine, 5 is untested)
+ - cpp (any somewhat recent version is fine)
+ - libreadline development files (7 or 8 is fine, 5 is untested) (optional, but highly reccomended)
On a Debian or Ubuntu based distribution, you can install these dependencies with this command:
```bash
sudo apt update && sudo apt install cmake make gcc g++ cpp libreadline-dev
```
-
+Then download and build gen shell:
```bash
git clone --recursive https://codeberg.org/armaan/gen-shell
cd gen-shell
make
sudo cp src/gen-shell /usr/bin/
```
-Or if you don't have root access, you can subsitute the last line with
+Or, if you don't have root access, you can subsitute the last line with
`cp src/gen-shell ~/.local/bin`
### Docker
You can also run gen-shell in docker. Simply use
```bash
-docker run -it -e CMD=<command-to-run> armaanb/gen-shell:latest
+docker run -it -e CMD=<command-to-run> armaanb/gen-shell
```
-Or to build the docker container locally, which ensures that you are using the latest version, or lets you make changes to the source code before building:
+Or to build the docker container locally, run:
```bash
git clone --recursive https:/codeberg.org/armaan/gen-shell
cd gen-shell
-docker build --no-cache -t armaanb/gen-shell:latest .
-docker run -it -e CMD=<command-to-run> armaanb/gen-shell
+docker build --no-cache -t gen-shell:latest .
+docker run -it -e CMD=<command-to-run> gen-shell
```
## License
-Following suit from tasksh, gen-shell is MIT licensed by Armaan Bhojwani, 2020. Gen-shell is forked from tasksh, from which its codebase has been greatly reduced, although the majority of code remaining was written by the tasksh developers [(listed here)](https://github.com/GothenburgBitFactory/taskshell/blob/master/AUTHORS).
+Following suit from taskshell, gen-shell is MIT licensed by Armaan Bhojwani, 2020. Gen-shell is forked from taskshell, which was developed by [these people](https://github.com/GothenburgBitFactory/taskshell/blob/master/AUTHORS).
-Gen-shell uses [Sarge](https://github.com/MayaPosch/Sarge) for parsing command-line arguments. Sarge was written by Maya Posch and is BSD 3-Clause licensed
+Gen-shell uses the [Sarge library](https://github.com/MayaPosch/Sarge) for parsing command-line arguments. Sarge was written by Maya Posch and is BSD 3-Clause licensed. It is added as a submodule in the root folder of this repository.