Skip to content

recursively minify and concatenate source code into a markdown document for llm prompting

License

Notifications You must be signed in to change notification settings

timschmidt/cargo-prompt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cargo-prompt

Recursively minify and concatenate source code into a markdown document for llm prompting. Optionally remove comments / documentation. Items in .gitignore are automatically excluded.

This can be useful for LLM assisted development when rapidly prompting with updated code, or when there is too much code to fit in the allowed context window.

install

cargo install cargo-prompt

run

cd my_cargo_project/
cargo prompt

remove comments / documentation

cd my_cargo_project/
cargo prompt -r

redirect to a file

cd my_cargo_project/
cargo prompt > saved_prompt.txt

target specific directory

cargo prompt /path/to/src/

other languages

javascript

cargo prompt -j
cargo prompt --javascript

python

cargo prompt -p
cargo prompt --python

java

cargo prompt --java

c / c++

cargo prompt -c
cargo prompt --c-cpp

csharp

cargo prompt -i
cargo prompt --csharp

php

cargo prompt -q
cargo prompt --php

ruby

cargo prompt --ruby

swift

cargo prompt -s
cargo prompt --swift

typescript

cargo prompt -t
cargo prompt --typescript

kotlin

cargo prompt -k
cargo prompt --kotlin

go

cargo prompt -g
cargo prompt --go

r

cargo prompt --r

matlab

cargo prompt -m
cargo prompt --matlab

vb

cargo prompt -v
cargo prompt --vbnet

perl

cargo prompt --perl

scala

cargo prompt --scala

dart

cargo prompt -d
cargo prompt --dart

groovy

cargo prompt --groovy

julia

cargo prompt --julia

haskell

cargo prompt --haskell

shell

cargo prompt --shell

lua

cargo prompt -l
cargo prompt --lua

all languages

cargo prompt -a
cargo prompt --all

example input

fizzbuzz/fizzbuzz.rs:

// Functions that "don't" return a value, actually return the unit type `()`
fn fizzbuzz(n: u32) -> () {
    if is_divisible_by(n, 15) {
        println!("fizzbuzz");
    } else if is_divisible_by(n, 3) {
        println!("fizz");
    } else if is_divisible_by(n, 5) {
        println!("buzz");
    } else {
        println!("{}", n);
    }
}

example output

# fizzbuzz

## ./fizzbuzz.rs

```rust
fn fizzbuzz(n:u32)->(){if is_divisible_by(n,15){println!("fizzbuzz");}else if is_divisible_by(n,3){println!("fizz");}else if is_divisible_by(n,5){println!("buzz");}else{println!("{}",n);}}
```

todo