Crates.io | xf |
lib.rs | xf |
version | 0.7.0 |
source | src |
created_at | 2022-02-24 08:56:25.932903 |
updated_at | 2022-03-12 01:21:21.063671 |
description | File-aware dynamic command runner |
homepage | https://github.com/sigoden/xf |
repository | https://github.com/sigoden/xf |
max_upload_size | |
id | 538349 |
size | 39,353 |
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.
cargo install xf
Download from Github Releases, unzip and add xf to your $PATH.
Xf loads rules from configuration file.
The default path of configuration file is
$HOME/.xf
, which can be specified with theXF_CONFIG_PATH
environment variable.
Rule format is:
<file>: <command>
<file>
tell xf
what file to find, <command>
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:
Ignore case. Xfile
can match files xfile
, xFile
.
Find the filename that contains the rule filename. Xfile
can match the files Xfile.sh
, Xfile.cmd
.
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
Actually, the command name affect builtin-rule and environment variable prefix.
If you rename executable file xf
to task
:
The built-in rule will be Taskfile: $file $@
The default configuration file path will be $HOME/.task
.
The environment variable XF_CONFIG_PATH
will be TASK_CONFIG_PATH
.
The environment variable for $file
will be TASK_FILE
。
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.