#command #parallel #directories #execute-command #multiple #lets #pattern

yanked inn2

🍺 INN2 lets you execute parallel commands in multiple directories

2 releases

0.1.6 Mar 4, 2024
0.0.2 Mar 4, 2024
0.0.1 Mar 4, 2024

#19 in #lets

MIT license

1MB
283 lines

Contains (DOS exe, 1MB) target/release/INN2.exe

🍺 Inn2

Inn2 is a command-line tool designed to execute a specified command in all directories that match a certain pattern within a given root directory. It provides flexibility and efficiency in running commands across multiple directories with customizable patterns.

Benchmark

Command: Time:
Inn -P .git ls
real    0m9.441s
user    0m0.030s
sys     0m0.046s
find -iname .git -type d -execdir ls \;
real    0m14.293s +5s
user    0m4.645s +4s
sys     0m8.937s +8s
Inn -P .git git status
real    0m24.146s
user    0m0.030s
sys     0m0.062s
find -iname .git -type d -execdir ls \;
real    0m28.584s +4s
user    0m4.695s +4s
sys     0m8.354s +8s
Inn -P .git 'git add . && git commit -m "squash!" && git sync'
real    0m33.813s
user    0m0.015s
sys     0m0.060s
find -iname .git -type d -execdir \
bash -c 'git add . && git commit -m "squash!" && git sync' \;
real    0m53.122s +20s
user    0m9.449s +9s
sys     0m14.442s +14s

Installation

cargo install innkeeper

Usage

Inn .git git fetch upstream

This command will fetch from upstream for all the .git repositories inside the current directory. Essentially, it replaces the following shell command:

find -iname .git -type d -execdir git fetch upstream \;

To specify a --File argument or -F, if you would like to search for a file instead of a directory, use:

Inn -F astro.config.ts npx astro add astro-compress

Additionally, you can provide a --Root argument or -R to set the current working directory to a different folder. The default is ..

Inn -R D:\Developer .git git fetch upstream

Specify a --Parallel argument or -P if you would like to run commands in parallel. The default is sequential.

Inn -P -R D:\Developer .git git fetch upstream

Dependencies

The code imports several crates:

  • clap - For parsing command-line arguments.
  • tokio - Enables parallel execution of tasks.
  • walkdir - Facilitates filesystem traversal.

Changelog

See CHANGELOG.md for a history of changes to this CLI.

Dependencies

~4–12MB
~129K SLoC