# Mem
A simple, terminal-based command saver and searcher.

## 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