#merge #file #output #multiple #single #token #command-line-tool

bin+lib codemerge

A command-line tool for merging multiple code files into a single output file

8 unstable releases (3 breaking)

0.5.0 Nov 5, 2024
0.4.2 Nov 4, 2024
0.3.3 Oct 20, 2024
0.2.2 Oct 20, 2024

#1190 in Command line utilities

Download history 215/week @ 2024-10-18 27/week @ 2024-10-25 420/week @ 2024-11-01 65/week @ 2024-11-08 5/week @ 2024-11-15 2/week @ 2024-11-22

492 downloads per month

MIT license

38KB
843 lines

CodeMerge

CodeMerge is a command-line tool for merging multiple code files into a single output file. It provides an easy way to combine code from different files while ignoring certain files/directories and calculating token counts.

Features

  • Merge multiple code files into one output file
  • Specify files/directories to ignore during merging
  • Calculate token counts for each file and total tokens
  • Verbose output mode for detailed information
  • Written in Rust for fast performance
  • Can be used with AI large language models (LLMs) for context-aware code generation

Installation

To install CodeMerge, you can download the pre-built binary from the releases page or build it from source using Cargo:

cargo install codemerge

Usage

Merging Files

To merge code files, use the merge command:

codemerge merge -o merged.txt -f "**/*.rs"

This will merge all .rs files into the output file merged.txt.

Additional options:

  • -o, --output: Specify the output file name (required for merge command)
  • -i, --ignores: Specify files/directories to ignore (can be used multiple times)
  • -v, --verbose: Enable verbose output mode
  • -f, --filter: Specify a filter pattern (can be used multiple times)
  • -n, --file-names-only: Print only file names

Calculating Tokens

To calculate token counts without merging, use the tokens command:

codemerge tokens -c 5

This will calculate the token counts for each file and display the top 5 files with the most tokens.

Additional options:

  • -c, --count: Specify the number of top files to display
  • -i, --ignores: Specify files/directories to ignore (can be used multiple times)
  • -v, --verbose: Enable verbose output mode
  • -f, --filter: Specify a filter pattern (can be used multiple times)

Configuration

CodeMerge respects .gitignore files for specifying files/directories to ignore during merging and token calculation. You can also use the -i flag to specify additional ignore patterns.

Previous Go Version

The original version of CodeMerge was written in Go and is available in the /go branch of this repository. However, this version will not be actively maintained going forward. The Rust version was rewritten to take advantage of Rust's improved performance, safety, and ecosystem, particularly the tiktoken-rs library for efficient token counting.

Contributing

Contributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request on the GitHub repository.

License

CodeMerge is open-source software released under the MIT License.

Dependencies

~34–45MB
~620K SLoC