Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sigoden/xf
File-aware dynamic command runner.
https://github.com/sigoden/xf
command-line command-runner dynamic-aliases dynamic-commands rust
Last synced: 25 days ago
JSON representation
File-aware dynamic command runner.
- Host: GitHub
- URL: https://github.com/sigoden/xf
- Owner: sigoden
- License: apache-2.0
- Created: 2022-02-24T11:13:18.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2022-03-15T07:03:12.000Z (almost 3 years ago)
- Last Synced: 2024-11-27T21:38:31.626Z (about 1 month ago)
- Topics: command-line, command-runner, dynamic-aliases, dynamic-commands, rust
- Language: Rust
- Homepage:
- Size: 48.8 KB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# xf
[![CI](https://github.com/sigoden/xf/actions/workflows/ci.yaml/badge.svg)](https://github.com/sigoden/xf/actions/workflows/ci.yaml)
[![Crates](https://img.shields.io/crates/v/xf.svg)](https://crates.io/crates/xf)File-aware dynamic command runner.
Xf try to find a file from the current directory and upwards, and execute different command according to the different file found.
## Install
### With cargo
```
cargo install xf
```### Binaries on macOS, Linux, Windows
Download from [Github Releases](https://github.com/sigoden/xf/releases), unzip and add xf to your $PATH.
## UsageXf loads rules from configuration file.
> The default path of configuration file is `$HOME/.xf`, which can be specified with the `XF_CONFIG_PATH` environment variable.
Rule format is:
```
:
````` tell `xf` what file to find, `` tell `xf` what command to execute if found.
> `xf` has a built-in lowest priority rule: `Xfile: $file $@`
Configure the following rules:
```
Taskfile: bash $file $@
```Run `xf foo`.
`xf` try to find for `Taskfile` file in the current directory, and if found, execute `bash $file foo` .
If not found, continue finding for `Xfile` file in the current directory, if found, execute `Xfile foo` (built-in rule).
If not found, enter the parent directory to continue this process.
File matching rules:1. Ignore case. `Xfile` can match files `xfile`, `xFile`.
2. Find the filename that contains the rule filename. `Xfile` can match the files `Xfile.sh`, `Xfile.cmd`.
## Variables
The following built-in variables can be used in the command part of rule.
- `$@` - pass-through command line parameters
- `$file` - file path
- `$fileDir` - file directory, process's cwd will be set to this value
- `$currentDir` - the current directoryThese variables(exclude `$@`) are also synced to environment variables:
- `$file` => `XF_FILE`
- `$fileDir` => `XF_FILE_DIR`
- `$currentDir` => `XF_CURRENT_DIR`## Command Name
Actually, the command name affect builtin-rule and environment variable prefix.
If you rename executable file `xf` to `task`:
1. The built-in rule will be `Taskfile: $file $@`
2. The default configuration file path will be `$HOME/.task`.
3. The environment variable `XF_CONFIG_PATH` will be `TASK_CONFIG_PATH`.
4. The environment variable for `$file` will be `TASK_FILE`。
## License
Copyright (c) 2022 xf-developers.
argc is made available under the terms of either the MIT License or the Apache License 2.0, at your option.
See the LICENSE-APACHE and LICENSE-MIT files for license details.