# Scotty
Scotty uses full text search techniques to rapidly go to directories in your shell that you have visited previously. It is implemented in rust, because I wanted to learn the language, but also to minize any latency so that your shell remains snappy.

[![asciicast](https://asciinema.org/a/BmxfCm6RNf4iCX1hhuzYKZPzf.svg)](https://asciinema.org/a/BmxfCm6RNf4iCX1hhuzYKZPzf)

## Installation
`scotty` can be installed in a few different ways. More will be added in the future if it gains any traction.

1. Install the binary

   #### Using Cargo
   If you have a working rust toolchain installed, `scotty` can easily be installed using cargo.

   ```sh
   cargo install scotty
   ```

   #### Using Homebrew
   If you have [homebrew](https://brew.sh) installed, you can install it from our custom tab.
   Packages are provided for Mac and 64bit glibc Linux.

   ```sh
   brew tap wdullaer/scotty
   brew install scotty
   ```

   #### Download from github
   Download the latest release from http://github.com/wdullaer/scotty/releases and extract it to a place on your path.

2. Add the init script to your shell's config file:

   #### Zsh
   Add the following to the end of your `~/.zshrc` file

   ```sh
   source <(scotty init zsh)
   ```

   #### Bash
   Add the following to the end of your `~/.bashrc` file

   ```sh
   source <(scotty init bash)
   ```

## Inspiration
The following projects have been an inspiration for various components in this project:
* [Autojump](https://github.com/wting/autojump): Provides similar functionality, implemented in python
* [Starship](https://starship.rs): A shell prompt implemented in rust
* [Meilisearch](https://www.meilisearch.com/): A full text search server implemented in rust
* [SublimeText Fuzzy Match](https://www.forrestthewoods.com/blog/reverse_engineering_sublime_texts_fuzzy_match/): A reverse engineering of Sublime Text's fuzzy match on files and directories

## License
All the code in this repository is released under the _Mozilla Public License v2.0_, for more information take a look at the [LICENSE](LICENSE) file.
