0.2.2 • Published 2 years ago

findx-cli v0.2.2

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

findx-cli

CLI to find and execute command for every glob match

Elegant replacement for each-cli, foreach-cli and *nix find -exec command in very little lines of code. Useful for NPM scripts or CI.

  • Cross-platform
  • Concurrency support
  • Continue on error, then exit with code 1
  • Control output of every execution
  • Automatically show task progress in TTY

Install

$ npm i -g findx-cli

Usage

$ findx '**/*.jpg' -- convert {{path}} {{dir}}/{{name}}.png

This searches for all files matching the glob pattern, then runs the provided command against each match.

See below for more usage examples.

Options

Usage: findx <globs> [options] -- [commands...]

CLI to find and execute command for every glob match

Arguments:
  globs                   globs to match
  commands                commands to execute

Options:
  -C, --concurrent <max>  concurrent number of executions (default: 10)
  --log <level>           log level (choices: "stdout", "stderr", "all",
                          "none", default: "all")
  --sh                    run each execution in new shell
  --cd                    change to path directory for each run
  -V, --version           output the version number
  -h, --help              display help for command

Command Templating

Write your command using mustache syntax. The following tags are exposed:

TagEgDesc
{{path}}/home/user/dir/file.txtFull path of file
{{root}}/Root
{{dir}}/home/user/dirDirectory portion
{{base}}file.txtFile name with extension
{{name}}fileName portion
{{ext}}.txtExtension portion

Examples

Untar each tar file in its own directory

$ findx '**/*.tar' --cd -- tar -xvf {{base}}

Ignore some files and run shell-specific commands

$ findx '**/LICENSE !ignored/**' --sh -- 'cd {{dir}} && cat LICENSE'

Dry-run glob matches

$ findx '**/*.{txt,xml}'

Development

Standard Github contribution workflow applies.

Tests

Test specs are in test/spec.js. To run the tests:

$ npm run test

License

ISC