Slate

Slate is a snippets manager for your command line.

It helps you to have all those small pieces of code, text, and so on in one place and in your favorite environment: the shell.

Installation

Slate is made with rust, so you will need the latest stable version of it to compile and run the program.

Clone the repository and run cargo install. You can also run cargo build if you want only to play with it:

$ git clone https://github.com/jhbabon/slate.git slate $ cd slate $ cargo install

Usage

You can always check all the commands available with the --help option:

``` $ slate --help Slate: Manage your snippets from your command line.

Note that Slate will use the file ~/.slate to save its contents.

Usage: slate [...] slate [options]

Options: -h --help Show this screen. -v --version Show version.

Commands: set Write a new key and value. get Read a key. list List all keys. rename Rename a key. remove Delete a key. exec Run a key value as a command. snippet Get a key and replace all placeholders with new data. ```

As you can see, Slate is basically a HashMap, so playing with it is straight forward:

```

Basic operations

$ slate set foo bar $ slate get foo bar $ slate list foo $ slate remove foo The key has been removed $ slate list

Renaming

$ slate set bar baz $ slate list bar

$ slate rename bar foo The key has been renamed $ slate list foo

Cleaning up

$ slate remove --all All keys have been removed ```

It also plays nice with other UNIX tools:

``` $ cat redis.conf | slate set redis $ slate get redis daemonize yes dbfilename dump.rdb dir /tmp

$ cd other/project $ slate get redis > redis.conf $ cd other/project/v2 $ slate get redis > redis.conf ```

The ~/.slate file

By default Slate will save all its contents in the file ~/.slate. It is just a plain JSON file for the moment. It is better if you don't touch it and let the program handle it.

Using your own custom file

If you don't want to use the default ~/.slate file or, for example, you want to have a different one per project you can customize the path to the file with the SLATE_FILEPATH env variable:

$ SLATE_FILEPATH=/path/to/the/file/slate.json slate set foo bar $ SLATE_FILEPATH=/path/to/the/file/slate.json slate list foo

If you use a tool like direnv you can easily set different slate files per directory/project.

Experimental

Slate also offers some extra commands to make it a little bit more useful, or not, maybe. But these commands are nice to play with until you find how useful they can be.

exec

If you don't want to clutter your aliases, or you want to save a temporal command, you can use the exec subcommand to run your keys' values as shell programs:

$ slate set echo "echo 'hello world!'" $ slate exec echo hello world!

snippet

You can also save a template and reuse it with different values. A template, or snippet, is composed by text and some placeholders. These placeholders is what you want to substitue with fresh values. A placeholder has the form :placeholder:, where placeholder can be whatever text you want.

You can see a minimum example of how to use here:

$ slate set tepl ':c: :m:' $ slate snippet tepl -r c echo m 'Hello World!' echo Hello World!