All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.3.0 - 2024-11-30
- Non UTF-8 files are ignored by default, can be disabled with the
--exit-on-non-utf8
flag. (fix #3)
0.2.3 - 2024-09-19
- Fixed the normalization of the
exclude
option when the path is.
or./
. - Fixed the edge case where the root directory is ignored by the
.gitignore
when the path is.
or./
and thegitignore
has.*
as an ignore pattern.
0.2.2 - 2024-09-18
- Added unit tests for
args
,codebase
, andgitignore
modules. - Added unit tests for the
tree
module.
- Switch from custom
GitIgnore
implementation to the ignore crate (fix #1). GIT_RELATED_IGNORE_PATTERNS
constant now correctly ignore.git
directories.
- Created a new
Tree
structure replacingtermtree
which was cumbersome to use (fix #1). - Refactored the
Codebase
struct to use the newTree
structure (fix #1). - Automatically normalize the
exclude
to make it easier to use (fix #2). - Switched from
nuclei
totokio
for asynchronous file reading (fix #4).
0.2.1 - 2024-05-13
- The
path
property in the generated file is now correctly formatted inside double quotes.
0.2.0 - 2024-05-13
- Introduced a new
CodebaseBuilder
struct to facilitate the construction of the codebase representation. - Implemented a
GitIgnore
struct to handle parsing and matching of.gitignore
patterns. - Introduced a new
FileContent
struct to handle asynchronous file content loading. - Added crate
nuclei
for asynchronous file reading. (Need to evaluate if it's a good fit) - Added a
CodebaseItem
enum to represent files and directories in the codebase. - Implemented a
Codebase
struct to hold the codebase tree and provide formatting methods. - Introduced an
os
module for platform-specific utilities.
- Refactored the codebase traversal logic to use the
CodebaseBuilder
struct. The main improvement of this refactoring is the fact that the codebase is only traversed once, simultaneously filtering, collecting, and building the codebase representation. - Improved error handling and reporting using the
miette
crate. - Improved logs formatting and verbosity levels.
- Refactored the output file generation to use the
Codebase
struct and its formatting methods.
- Removed the
walk
module and integrated its functionality into theCodebaseBuilder
. - Removed the
file
module and integrated its functionality into thecodebase
module. - Removed the
errors
module and replaced it with themiette
crate for error handling. - Removed the crate
ptree
and replaced it withtermtree
for tree formatting. - Removed the crate
ignore-files
and implemented custom logic for.gitignore
parsing. - Removed the crate
crossterm
as it was overkill, replaced withcolored
.
- Fixed various issues and improved code quality throughout the codebase.
- Improved overall performance.
0.1.0 - 2024-05-11
- Initial release of cunw
- Recursive directory traversal and file content collection
- Markdown generation representing codebase structure and content
- Support for excluding and including files based on glob patterns
- Respect for
.gitignore
files (can be disabled) - Option to specify maximum depth of directory traversal
- Option to follow symbolic links (disabled by default)
- Verbose output for debugging purposes
- Minor improvements to error handling and logging