4 releases (breaking)
0.7.0 | Mar 12, 2022 |
---|---|
0.6.0 | Mar 10, 2022 |
0.2.0 | Feb 25, 2022 |
0.1.0 | Feb 24, 2022 |
#2781 in Command line utilities
15KB
304 lines
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, unzip and add xf to your $PATH.
Usage
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 filesxfile
,xFile
. -
Find the filename that contains the rule filename.
Xfile
can match the filesXfile.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 directory
These 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
:
-
The built-in rule will be
Taskfile: $file $@
-
The default configuration file path will be
$HOME/.task
. -
The environment variable
XF_CONFIG_PATH
will beTASK_CONFIG_PATH
. -
The environment variable for
$file
will beTASK_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.
Dependencies
~150KB