shitbox/README.md
2023-01-16 23:44:21 -05:00

81 lines
2.0 KiB
Markdown

Contents
========
* [Introduction](#introduction)
* [Provided Commands](#provided_commands)
* [Scope](#scope)
* [Installation](#installation)
## Introduction
*Shitbox* is inspired by the project [busybox](https://busybox.net/) but with a
much more limited scope. While Busybox aims to be "*The swiss army knife of
embedded linux*" you can think of shitbox as being more like "*The box store
multi tool of embedded linux*".
All joking aside the utilities which are present function mostly as expected and
the code aims to be robust. It's written in Rust, not C, for whatever that's
worth. Like Busybox it is a multi-call binary which is therefore able to share
code between applets, making for an overall smaller binary.
## Provided Commands
- base32
- base64
- basename
- bootstrap
- clear
- cut
- dirname
- echo
- false
- factor
- fold
- groups
- head
- hostname
- link
- mountpoint
- nologin
- nproc
- rev
- rmdir
- sleep
- shitbox
- sync
- true
- unlink
- which
- whoami
- yes
## Scope
*Shitbox* does not aim to supply an entire system of utilities, but rather a
subset of the most common Unix shell utilities. Things which are out of scope
for the project include:
- Shells
- Network servers
- Kernel module handling utilities
- Anything requiring suid or sgid bits such as `su` or `sudo`
The code aims to be portable across **Unix** variants, ie Linux and BSD, but not
MacOS or Windows. Development occurs on Linux, so if your OS is more exotic then
YMMV.
## Installation
Building is done using the official Rust toolchain. It is recommended that you
install your toolchain using Rustup rather than distro packages, as old compiler
versions are not supported.
```Sh
cargo build --release
```
The `bootstrap` applet provides facility for installing the binary, creating all
required symlinks and installing some nice to haves such as **Unix man pages**
and **shell completions** [see below].
```Sh
target/release/shitbox help bootstrap
```
### Supported shells for completions
- Bash
- Fish
- NuShell
- PowerShell
- Zsh