injm 0.3.1

A CLI tool that injects content into marked regions in source files.
injm-0.3.1 is not a library.

injm

A CLI tool that injects content into marked regions in source files.

Table of Contents

Installation

Cargo

cargo install injm

Nix

nix profile install github:Fovir-GitHub/injm

Download Binary

Download the latest binary for your platform from GitHub Releases.

Usage

Mark a region in your source file with injm begin and injm end comments:

dest.rs

fn main() {
    // injm begin
    // injm end
}

Then pipe content into injm:

echo -n 'println!("Hello, world!")' | injm --output dest.rs

Result:

dest.rs

fn main() {
    // injm begin
println!("Hello, world!");
    // injm end
}

Running injm again will replace the content between the markers:

cat src.txt | injm --output dest.rs

Inject into a Specific Region

Use :id to name a region:

dest.rs

fn main() {
    // injm begin :greeting
    // injm end :greeting

    // injm begin :farewell
    // injm end :farewell
}

Inject into a specific region with --id:

echo -n 'println!("Hello!")' | injm --output dest.rs --id greeting

Inject into multiple regions at once:

echo -n 'println!("Hello!")' | injm --output dest.rs --id greeting --id farewell

If --id is not specified, all regions without an ID will be injected.

Dry Run

Preview the result without writing to the file:

cat src.txt | injm --output dest.rs --dry-run

Supported Languages

injm uses tree-sitter to parse source files, so markers are detected from actual comment nodes — not from string literals or other non-comment content.

Supports any language recognized by tree-sitter-language-pack, including:

  • Rust, C, C++
  • Python, Ruby
  • JavaScript, TypeScript
  • Go, Java
  • And 300+ more

Roadmap

See ROADMAP.md.

License

MIT

Acknowledgement

  • clap-rs/clap: A full featured, fast Command Line Argument Parser for Rust
  • xberg-io/tree-sitter-language-pack: Comprehensive tree-sitter grammar compilation with polyglot bindings — Rust, Python, Node.js, Go, Java, Ruby, Elixir, PHP, C#, WASM, Dart, Kotlin-Android, Swift, Zig, and CLI. 306+ languages.