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