cmdlink 0.2.0

Rust based CLI tool to add aliases for commands to simplify developer workflow.
# cmdlink

`cmdlink` is a cross-platform command-line application built with Rust that allows you to create and manage aliases for system commands. These aliases are saved in a configuration file and linked to scripts in the `bins` directory. This tool is designed to streamline command management and improve command-line efficiency.


## Features

- **Add Aliases**: Create new command aliases with custom descriptions.
- **Remove Aliases**: Easily delete aliases and their associated binaries.
- **Display Aliases**: View all active aliases and their descriptions.

## Installation

1. Clone the repository:
   ```bash
   git clone https://github.com/ehuff700/cmdlink.git
   cd cmdlink
   ```
2. Build the application using Cargo. During the build process, cmdlink will setup all necessary directories:
   ```bash
   cargo build --release
   ```
3. Run the application by navigating to the build directory:
   ```bash
   ./target/release/cmdlink
   ```

Or, optionally, if you prefer not to build from source:
```bash
cargo install cmdlink
```

## Usage

Run cmdlink with the following commands to manage your aliases:

### **Add a New Alias**

```bash
cmdlink add <alias> -c <command> [--desc <description>] [--force]
```
Arguments:

    <alias>: The name of the alias you wish to create.
    --cmd <command>: The command that the alias will execute.
    --desc <description> (optional): A short description of the alias.
    --force (optional): Forces the alias creation if it already exists.

Example:

```bash
cmdlink add myalias --cmd "echo Hello, World!" --desc "Prints a greeting" --force
```

### **Remove an Alias**

Removes an existing alias and its binary link.

```bash
cmdlink remove <alias>
```

Arguments:

    <alias>: The name of the alias you wish to remove.

Example:

```
cmdlink remove myalias
```

### Display All Aliases

Displays all existing aliases along with their descriptions.

```
cmdlink display
```


### Refresh Links

Refreshes all alias links based on the configuration file, updating binaries in the bins directory.

```
cmdlink refresh
```

View the --help function to see additional information for each subcommand.

## Configuration

Aliases are saved in a configuration file (config.toml) located in the project directory. The structure of this file is as follows:

```toml
[aliases]
myalias = { cmd = "echo Hello, World!", description = "Prints a greeting" }
another_alias = { cmd = "ls -la", description = "Lists all files in long format" }
```

The cmdlink application reads from this file and creates binary links in the bins directory based on the commands specified for each alias.

You **should not** manually edit this file, but if you do, run cmdlink refresh to save your changes to the bin files.

Directory Structure

    config.toml: Stores alias names, commands, and descriptions.
    bins/: Contains the binary files linked to each alias. These binaries are generated by cmdlink when an alias is added or refreshed.

## License
This project is licensed under either of
* Apache License, Version 2.0, ([LICENSE-APACHE]LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT]LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.