magic-school-bus 0.7.0

Cross-platform TUI filesystem browser with Vi-like keybinds
# Magic School Bus
![Current crates.io version](https://img.shields.io/crates/v/magic-school-bus.svg)
> Seatbelts, everyone!

Magic School Bus is a terminal UI filesystem browser with Vi-inspired keybindings.

It's a work in progress, but runs on Windows, MacOS, and Linux!

## Installation

### Windows
Pre-built binaries are available on the [GitHub Releases page](https://github.com/LPGhatguy/magic-school-bus/releases).

### Other Platforms and Rust Developers
Magic School Bus needs **Rust 1.31** or newer to build.

If you already have Rust installed, you can grab Magic School Bus with:

```sh
cargo install magic-school-bus

# To upgrade, add --force to overwrite your current installation
cargo install --force magic-school-bus
```

## Usage
To start up Magic School Bus, just run:

```sh
# Start in the current directory
msb

# You can also pass a directory to start in
msb ../some-directory
```

This will start you on an educational adventure in your current directory:

![Example of Magic School Bus](images/demo.gif)

For detailed information on all options and flags, run:

```sh
msb --help
```

### Actions
Actions marked with '(repeatable)' can be prefixed by a number, which will repeat the command N times.

- `q`: Exit
- `j` or `<down arrow>`: Move down in the list (repeatable)
- `k` or `<up arrow>`: Move up in the list (repeatable)
- `g`: Move to the top of the list
- `G`: Move to the bottom of the list
- `<return>`: Activate an item in the list
	- If the item is a folder, it'll become the focus
	- If the item is a file, it will be opened according to your operating system preferences
- `f`: Find an entry starting with the given input
	- Use `<tab>` to cycle between options matching the current input
	- Use `<return>` or `<escape>` to exit find mode
- `;`: Jump to the next entry matching the most recent find command (repeatable)
- `,`: Jump to the previous entry matching the most recent find command (repeatable)
- `n`: Create a new file, prompted for the name
	- Use `<escape>` to cancel
- `N`: Create a new directory, prompted for the name
	- Use `<escape>` to cancel
- `x`: Prompt to delete the selected entry
	- Press `y` to confirm or `<escape>` to cancel
- `r`: Refresh the directory list, useful for when an outside program modifies the directory

### Changing shell working directory on exit
Magic School Bus has a special mode intended to help move your shell to the location you navigated to when you exit!

Passing `--pwd` will cause the last working directory to be printed to stderr. You can set up an alias or function to capture stderr and `cd` to it if `msb` exited successfully!

The function I have configured in my `.profile` for Bash is:

```bash
function brw() {
	{ error=$(msb --pwd "$@" 2>&1 1>&$out); } {out}>&1

	if [ "$?" -eq 0 ]
	then
		cd "$error"
	fi
}
```

I can type `brw` anywhere to be dropped into a filesystem explorer, navigate around, and when I pop out, I'll be in the right spot!

## License
This project is available under the MIT license. Details are available in [LICENSE.txt](LICENSE.txt).