# fcom (file_combiner) fcom (short for file_combiner) is a versatile Rust CLI tool designed to process folders and files, combining their contents into a single output file. It offers a range of features for file manipulation and directory analysis. ## Features - Combine multiple files into a single output file - Generate folder tree structures - Create file lists - Support for custom output formats (XML, Markdown, or custom templates) - Option to add line numbers to file contents - Ignore specific folders and filter by file extensions ## Installation ### Prerequisites - Rust and Cargo (Install from [https://www.rust-lang.org/tools/install](https://www.rust-lang.org/tools/install)) ### Steps 1. Clone the repository: ```bash git clone https://github.com/pabl-o-ce/fcom.git ``` 2. Navigate to the project directory: ```bash cd fcom ``` 3. Build and install the binary: ```bash cargo install --path . ``` This will install the `fcom` binary in your Cargo bin directory. ## Usage fcom provides three main commands: 1. `combine`: Combines multiple files into a single output file 2. `tree`: Generates a folder tree structure 3. `list`: Creates a list of files in a folder ### combine ```bash fcom combine [OPTIONS] ``` Options: - `--output `: Specify the output file (default: output.txt) - `--extensions ...`: Specify file extensions to include - `--ignore ...`: Specify folders to ignore (default: .git,node_modules,__pycache__) - `--add-line-numbers`: Add line numbers to file contents - `--mode `: Specify the output mode (xml, markdown, or custom) (default: xml) - `--custom-output-template `: Specify a custom output template file (required for custom mode) - `--custom-file-template `: Specify a custom file template file (required for custom mode) ### tree ```bash fcom tree [OPTIONS] ``` Options: - `--output `: Specify the output file (default: folder_tree.txt) - `--extensions ...`: Specify file extensions to include - `--ignore ...`: Specify folders to ignore (default: .git,node_modules,__pycache__) ### list ```bash fcom list [OPTIONS] ``` Options: - `--output `: Specify the output file (default: file_list.txt) - `--extensions ...`: Specify file extensions to include - `--ignore ...`: Specify folders to ignore (default: .git,node_modules,__pycache__) ## Examples ### Combine files in XML format ```bash fcom combine /path/to/your/folder --output combined_output.txt --mode xml ``` ### Generate a folder tree ```bash fcom tree /path/to/your/folder --output folder_tree.txt ``` ### Create a file list ```bash fcom list /path/to/your/folder --output file_list.txt ``` ### Combine files in Markdown format with line numbers ```bash fcom combine /path/to/your/folder --output combined_output.md --mode markdown --add-line-numbers ``` ### Use custom templates ```bash fcom combine /path/to/your/folder --output custom_output.txt --mode custom --custom-output-template /path/to/output_template.txt --custom-file-template /path/to/file_template.txt ``` ## Credits and Inspiration This project was inspired by [Maximilian-Winter's file_combiner](https://github.com/Maximilian-Winter/file_combiner). We appreciate their work and the ideas it provided for this implementation. ## Contributing Contributions are welcome! Please feel free to submit a Pull Request. ## License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.