memplace 0.1.0

command and snippet manager
# Mem

A simple, terminal-based command saver and searcher.

![Demo of Mem](demo.gif)

## What is this?

I built `mem` because I got tired of googling the same `tar`, `ffmpeg`, and `docker` commands over and over again.

It is a straightforward CLI tool written in Rust that lets you:

1. **Save** a command you want to remember.
2. **Add** a quick description for context.
3. **Fuzzy search** for it later using a TUI (Terminal User Interface).

It acts as a personal "cheat sheet" that lives in your terminal. It works well for my workflow, and I'm sharing it in case it helps yours.

---

## Installation

### From crates.io

```bash
cargo install memplace
```

> **Note:** The package name is `memplace`, but the binary command you run is `mem`.

### From source

If you want to modify it or build it locally:

```bash
git clone https://github.com/PET1h/memplace
cd memplace
cargo install --path .
```

---

## Usage

### 1. Save a command

When you find a useful command, save it. You pass the command as an argument, and the tool will prompt you for a description.

```bash
mem save "tar -xvf archive.tar.gz"
```

Example interaction:

```text
Type description for the command (or just hit Enter)
Extract a tarball
```

### 2. Search

When you forget how to do something, search for it. You can search by keywords in the command or the description.

```bash
mem search "extract"
```

This opens a TUI list.

**Controls:**

- **Up/Down** (or `j` / `k`): Navigate the list
- **Enter**: Select the command and print it to stdout (so you can copy it)
- **Esc** or **q**: Exit

---

## How it works

`mem` stores your commands in a simple JSON file located in your system's standard data directory:

- **Linux:** `~/.local/share/memplace/memplace.json`
- **macOS:** `~/Library/Application Support/rs.memplace.memplace/memplace.json`
- **Windows:** `%APPDATA%\memplace\memplace\data\memplace.json`

Because it's just JSON, you can manually back it up or edit it if you make a typo.

---

## Project status

This is currently **v0.1.0**.

I developed this for my own personal use, so it might be missing features (like editing or deleting commands via the UI) or have edge cases I haven't found yet.

If you find a bug or have an idea for a feature that would make it better, feel free to [open an issue](https://github.com/PET1h/memplace/issues) or submit a Pull Request.

---

## License

MIT