command-vault 0.3.0

An advanced command history manager with tagging and search capabilities
Documentation
# Command Vault
[![Crates.io](https://img.shields.io/crates/v/command-vault.svg?style=flat-square)](https://crates.io/crates/command-vault)
[![Documentation](https://docs.rs/command-vault/badge.svg)](https://docs.rs/command-vault)
![example workflow](https://github.com/ozankasikci/command-vault/actions/workflows/test.yml/badge.svg)
[![codecov](https://codecov.io/gh/ozankasikci/command-vault/branch/main/graph/badge.svg)](https://codecov.io/gh/ozankasikci/command-vault)

Command Vault is a command manager for storing, and executing your complex commands. It provides a user-friendly interface to search, list, and delete commands, as well as tag commands for better organization.

## Table of Contents
- [Features]#features
- [Usage]#usage
  - [Add Commands]#add-commands
  - [Search Commands]#search-commands
  - [List Commands]#list-commands
  - [Delete Commands]#delete-commands
  - [Tag Commands]#tag-commands
- [Installation]#installation
  - [From Releases]#from-releases
  - [Shell Integration]#shell-integration
  - [Building from Source]#building-from-source
- [Development]#development
- [Shell Aliases]#shell-aliases
- [License]#license

## Features

- 🔍 Smart search through command history
- 🏷️ Tag commands for better organization
- 🐚 Cross-shell support (Bash, Zsh)
- 💾 Local SQLite database for fast searching
- 🔐 Safe command execution with validation

## Usage

### Add Commands
```bash
# Add a command with tags
command-vault add --tags git,deploy -- git push origin main
command-vault add -- echo "Hello, world!"

# Add a command with parameters
command-vault add "git commit -m @message:Commit message"
command-vault add "curl -X POST @url:API endpoint -d @data:JSON payload"
```
![Add Command](demo/add-command3.gif)

### Parameters
You can add dynamic parameters to your commands using the `@parameter` syntax:
- Simple parameter: `@name`

Examples:
```bash
# Git commit with message parameter
git commit -m "@message"
```

When executing a command with parameters, Command Vault will prompt you to enter values for each parameter.

### Search Commands
```bash
# Search commands
command-vault search "git push"
```
![Search Commands](demo/search-command.gif)

### List Commands
```bash
# List recent commands
command-vault ls
```
![List Commands](demo/ls-command2.gif)

### Delete Commands
```bash
# Delete a command
command-vault delete <command-id>
```
![Delete Commands](demo/delete-command.gif)

### Tag Commands
```bash
# Show tag command
command-vault tag # Show tag related commands
command-vault tag list # List tag related commands
```
![Tag Commands](demo/tag-command.gif)

## Installation

### From Releases

You can download the latest release for your platform from the [releases page](https://github.com/yourusername/command-vault/releases).

#### Linux
```bash
# Download the latest release (replace X.Y.Z with the version number)
curl -LO https://github.com/ozankasikci/command-vault/releases/download/v0.3.0/command-vault-macos-arm64.tar.gz
tar xzf command-vault-macos-arm64.tar.gz
# Make it executable
chmod +x command-vault-linux-amd64
# Move it to your PATH
sudo mv command-vault-linux-amd64 /usr/local/bin/command-vault

# Initialize shell integration (add to your .bashrc or .zshrc)
source "$(command-vault shell-init)"
```

#### macOS
```bash
# Download the latest release (replace X.Y.Z with the version number)
curl -LO https://github.com/ozankasikci/command-vault/releases/download/v0.3.0/command-vault-macos-arm64.tar.gz
tar xzf command-vault-macos-arm64.tar.gz
# Make it executable
chmod +x command-vault-macos-arm64
# Move it to your PATH
sudo mv command-vault-macos-arm64 /usr/local/bin/command-vault
# Initialize shell integration (add to your .bashrc or .zshrc)
source "$(command-vault shell-init)"
```

#### Windows
Download the Windows executable from the releases page and add it to your PATH.

### Shell Integration

Command Vault needs to be integrated with your shell to automatically track commands. Add this to your shell's RC file:

```bash
# For Bash (~/.bashrc)
source "$(command-vault shell-init)"

# For Zsh (~/.zshrc)
source "$(command-vault shell-init)"
```

### Building from Source

If you prefer to build from source, you'll need Rust installed on your system:

```bash
# Clone the repository
git clone https://github.com/yourusername/command-vault.git
cd command-vault

# Build the project
cargo build --release

# The binary will be available in target/release/command-vault
```

Add the following to your shell's configuration file (`~/.bashrc` or `~/.zshrc`):
   ```bash
   source "$(command-vault shell-init)"
   ```

## Development

### Running Tests
```bash
cargo test
```

### Code Coverage
```bash
# Generate coverage report (requires cargo-tarpaulin)
./scripts/coverage.sh

# View the report in your browser
open coverage/tarpaulin-report.html
```

## Shell Aliases

For easier access, you can add aliases to your shell configuration:

### For Bash/Zsh (add to ~/.zshrc or ~/.bashrc)
```bash
# to use as cmdv:
alias cmdv='command-vault'
# or to use as cv:
alias cv='command-vault'
```

After adding the aliases, restart your shell or run:
```bash
source ~/.zshrc  # for Zsh
source ~/.bashrc # for Bash
```

Now you can use shorter commands:
```bash
cv add 'echo Hello'
cmdv ls
```

## License

This project is licensed under the MIT License - see the LICENSE file for details.