cmdlink 0.1.1

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


`cmdlink` is a 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.

> **Note**: Currently, only Windows is supported, but cross-platform compatibility is planned for future releases.

## 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.
- **Refresh Links**: Update binary links based on the latest configuration file.

## Installation


1. Clone the repository:
   ```bash
   git clone https://github.com/yourusername/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 --git "https://github.com/ehuff700/cmdlink.git"
```

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

[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.
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.