Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/slai11/goto

gt your desired path with minimal keystrokes
https://github.com/slai11/goto

cli command-line-tool goto jump rust

Last synced: 6 days ago
JSON representation

gt your desired path with minimal keystrokes

Awesome Lists containing this project

README

        

# goto (gt)

[![CI Status](https://img.shields.io/github/workflow/status/slai11/goto/ci/master?label=ci&logo=github&style=for-the-badge)](https://github.com/slai11/goto/actions)
[![Crates.io](https://img.shields.io/crates/v/goto?style=for-the-badge)](https://crates.io/crates/goto-rs)
[![License: MIT](https://img.shields.io/github/license/slai11/goto?style=for-the-badge)](https://opensource.org/licenses/MIT)

*gt* is a simple and user-friendly way to jump to your indexed directories.

*gt* is short for "goto", which is basically what you want to do with minimal
keystrokes.

## Features

* Convenient syntax `gt XXX` to jump to XXX's path
* Easy indexing of sub-directories by using `gt add -a`
* Pretty tree-like index listing using `gt ls`

## Demo

![Demo](doc/demo.png)

## Installation

Step 1. Getting the binary
```
wget https://github.com/slai11/goto/releases/download/v0.3.0/goto-rs-v0.3.0-x86_64-apple-darwin.tar.gz
tar -xvf goto-rs-v0.3.0-x86_64-apple-darwin.tar.gz
cp goto-rs-v0.3.0-x86_64-apple-darwin/goto-rs /usr/local/bin
```

Or you could clone the project and build from source. You will need rust (`brew
install rust`) to do so.
```
git clone https://github.com/slai11/goto.git
cd goto
cargo build --release
cp target/release/goto-rs /path/to/modules/
```

Step 2. Setting up your bash/zsh
Paste `eval "$(goto-rs init)"` in your bashrc or zshrc.

The binary's name is `goto-rs` while the command you should be using is `gt`.

A shell-based workaround inspired by https://github.com/ajeetdsouza/zoxide and
https://github.com/gsamokovarov/jump is used as it is not possible to change the
working directory of your shell programmatically. The awkward naming of the
binary is due to lack of namespace.

Coming Soon: Brew install!

## Command-Line Options

```
❯ gt help
gt

USAGE:
goto-rs [name]... [SUBCOMMAND]

FLAGS:
-h, --help Prints help information
-V, --version Prints version information

ARGS:
... Refers to name of index. Must be specific for now.

SUBCOMMANDS:
add Add directories and sub-directories to index.
help Prints this message or the help of the given subcommand(s)
init Initialises bash-script and database.
ls List all indexed directories.
prune Removes invalid indexes in the database.
rm Remove directories and sub-directories to index.

```

## Guide

#### Jumping to an indexed directory
Use `gt ` to jump to your desired folder. The `` is the folder name.
For example to jump to `Users/xxx/project/personal`, the command `gt personal`
will change your shell directory to the desired path.

#### Indexing a directory
To add the current working directory into your indexs:
```
gt add
```

To add the current directory with its subdirectories (`-a` for all subdirectories):

```
gt add -a
```

To add multiple levels of subdirectory, use the following command, where `n` is
the levels of subdirectories to add.
```
gt add -r n
```

#### List indexed directories
If you wish to list and inspect your current indexed directories.
```
gt ls
```

#### Cleaning up index to ensure all paths are valid
Use `gt prune` to update and remove non-existent directories.

#### Removing indexes
Removing indexes works the same way as `gt add` but in the reverse manner.

To remove the directory you are in from the indexes:
```
gt rm
```

To remove the current directory with its subdirectories:
```
gt rm -a
```

To add multiple levels of subdirectory, use the following command, where `n` is
the levels of subdirectories to add.
```
gt rm -r n
```