diff options
Diffstat (limited to 'CHANGELOG.md')
-rw-r--r-- | CHANGELOG.md | 580 |
1 files changed, 41 insertions, 539 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 810ccb5..138d2b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,70 +1,79 @@ # Changelog -All notable changes to this project will be documented in this file. -All changes are from [@nickgerace](https://github.com/nickgerace) unless otherwise specified. +For new changes prior to version 4.0.0, please see [CHANGELOG_PRE_V4](./docs/CHANGELOG_PRE_V4.md). -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +- All notable changes to this project will be documented in this file +- All changes are from [@nickgerace](https://github.com/nickgerace) unless otherwise specified +- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) -## [Unreleased] +## Unreleased -<!-- The latest version contains all changes. --> +The latest version contains all changes. -### Added +## 4.1.0 - 2022-10-20 -- Debug symbol stripping for `cargo install` users (result: ~79% of the size of `4.0.1`) +- Add debug symbol stripping for `cargo install` users (result: ~79% of the size of `4.0.1`) ### Changed -- Switched to `cargo` workspaces +- Bump dependencies +- Change CLI library from `argh` to `clap v4` +- Ensure integration test artifacts exist in the correct location +- Refactor to use `cargo` workspaces, which should unlock the ability to create "scripts" via sub-crates + +### Removed + +- Remove ability to print the version as a single JSON field (combine `-V/--version` with `-d/--display json`) + - Normally, this would necessitate a bump of the "major" field in the version, but `-V/--version` is serializable to JSON (just a string) -### [4.0.1] - 2022-07-05 +## 4.0.1 - 2022-07-05 ### Changed - Bump dependencies -### [4.0.0] - 2022-05-10 +## 4.0.0 - 2022-05-10 ### Added -- [Bors](https://bors.tech/) to avoid merge skew / semantic merge conflicts -- Color mode option with the following choices: "always", "compatibility" and "never" +- Add [Bors](https://bors.tech/) to avoid merge skew/semantic merge conflicts +- Add color mode option with the following choices: "always", "compatibility" and "never" - "always": display with rich colors (default) - "compatibility": display with portable colors - "never": display with no color -- Display flag with the following choices: "standard" (or "default"), "json" and "classic" +- Add display flag with the following choices: "standard" (or "default"), "json" and "classic" - "standard" (or "default") and "classic" output options return from the previous release - "json" output is a new option that displays all results in valid JSON, which is useful for third party applications, plugins, parsers, etc. -- Documentation comments almost everywhere for `cargo doc` -- [git2-rs](https://github.com/rust-lang/git2-rs), which replaces `git` subcommand usage +- Add documentation comments almost everywhere for `cargo doc` +- Add [git2-rs](https://github.com/rust-lang/git2-rs), which replaces `git` subcommand usage - Even though `git` subcommands were used over **git2-rs** to reduce binary size, significant speed increases could only be achieved by using the latter - More consistent behavior since git2-rs can be tested at a locked version -- JSON output flag for both version and results printing -- Troubleshooting section to CLI help -- Troubleshooting section to README for using `RUST_LOG` and `RUST_BACKTRACE` +- Add JSON output flag for both version and results printing +- Add roubleshooting section to CLI help +- Add troubleshooting section to README for using `RUST_LOG` and `RUST_BACKTRACE` ### Changed -- Config file location from `<prefix>/gfold/gfold.json` to `<prefix>/gfold.toml` -- Config file type from JSON to TOML -- CLI help sections to be divided by headers -- Major performance improvements due to moving from sequential target generation to nested, parallel iterators for target generation -- Module layout +- Change config file location from `<prefix>/gfold/gfold.json` to `<prefix>/gfold.toml` +- Change config file type from JSON to TOML +- Change CLI help sections to be divided by headers +- Drastically improve performance by moving from sequential target generation to nested, parallel iterators for target generation +- Modify grey color default to avoid a bug where the `stdout` color is not refreshed within `tmux` when using macOS `Terminal.app` +- Refactor module layout - `display` now contains its child, `color` - `report` now contains its child, `target` -- Grey color default to avoid a bug where the `stdout` color is not refreshed within `tmux` when using macOS `Terminal.app` -- Testing for the entire crate +- Refactor testing for the entire crate - All tests have been replaced in favor on one integration test - The old tests relied on developer's environment, which is highly variable - The new test creates multiple files, directories, and repositories in the `target` directory to simulate an actual development environment -- The `color` module now uses a harness rather than individual functions +- Use a harness for the `color` module instead of individual functions ### Removed -- Debug flag in favor of using `RUST_LOG` -- Display of `none` fields for the standard (default) display of result (i.e. now, if an optional field was not found, it is not shown) -- Git path option for CLI and config file -- `git` subcommand usage +- Remove debug flag in favor of using `RUST_LOG` +- Remove display of `none` fields for the standard (default) display of result (i.e. now, if an optional field was not found, it is not shown) +- Remove git path option for CLI and config file +- Remove `git` subcommand usage ### Notes @@ -73,513 +82,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Binary size has increased, but speed has taken priority for this release - Using `RUST_LOG` and `RUST_BACKTRACE` should be more helpful when debugging unexpected output, performance or suspected bugs -### [3.0.0] - 2022-01-06 - -### Added - -- Ability to ignore config file options -- Ability to print merged config options -- Ability to specify path to `git` -- Ability to store default path target in config file (defaults to current working directory) -- Ability to use config file in `$HOME/.config/gfold/gfold.json` and `{FOLDERID_Profile}\.config\gfold\gfold.json` -- Ability to use old display mode with `--classic` flag and store preference in config file -- Formal CLI parsing library, `argh` -- Install and uninstall scripts -- New display mode that avoids grouping repositories (API-breaking since this is the new default display mode) - -### Changed - -- Codebase to a domain-driven architecture (major refactor) - -### Removed - -- Mention of the [deprecated, old Homebrew tap](https://github.com/nickgerace/homebrew-gfold) in the README -- Short `-h` flag due to CLI crate addition (`argh`) - -### Notes - -- Evaluated using `tracing` and `tracing-subscriber` over `log` and `env_logger`, but due to their combined larger size, the logging crates remain the same as before. -- The config file can be non-existent, empty, partially filled out or completely filled out. There's also an option to ignore the config file completely and only use CLI options. -- This crate has used other CLI parsing libraries in the past, and recently did not use any, but with manual testing and [publicly available benchmarks](https://github.com/rust-cli/argparse-benchmarks-rs/blob/c37e78aabdaa4384a9c49be3735a686803d0e37a/README.md#results), `argh` is now in use. - -## [2.0.2] - 2021-12-02 - -### Changed - -- Misc package bumps - -## [2.0.1] - 2021-10-29 - -### Added - -- Logger that can be set via an environment variable (`RUST_LOG`) - -### Changed - -- Permission denied errors to be logged rather than displayed to `stderr` - -### Misc - -- Ensure `crates.io` and `git` tag are in sync (very slight and accidental derivation for `2.0.0`) - -## [2.0.0] - 2021-10-29 - -### Added - -- Discrete Code of Conduct file -- Unpushed commit checking by default (greedy static analysis, so this may need to be tuned for edge cases) -- `git` CLI wrapper instead of Git library usage due to security, Git already being installed, inconsistencies between the library and the CLI, and more - -### Changed - -- Codebase re-write geared towards data-efficiency and parallelism -- Dramatic runtime speed and binary size improvements (consistently able to reproduce, but heavily variable based on payload, OS, etc.) -- Entire structure from library-driven to application-driven (no `lib.rs`) - -### Removed - -- All CLI flags except for `-h/--help` and `-V/--version` -- CLI crate since it is unneeded -- Git library usage in favor of leveraging `git` subcommands due to security, Git already being installed, inconsistencies between the library and the CLI, and more -- `DEVELOPING.md` and `EXTRA.md` since they were outdated/unimportant -- `lib.rs` and the crate's library-based components - -## [1.4.1] - 2021-08-02 - -### Changed - -- Misc package bumps - -## [1.4.0] - 2021-06-17 - -### Changed - -- Continue upon PermissionDenied errors rather than exiting -- Documentation to be moved to the new `docs` directory - -## [1.3.0] - 2021-05-25 - -### Changed - -- Config type to be embedded within the Driver - - Not in public library modules, but this should improve generation efficiency - -### Removed - -- `-d/--debug` flag since all logging has been removed from the librariy, and `main.rs` does not log -- `env_logger` crate -- `log` crate -- Logging from the entire library in favor of returning errors when needed and handling when possible/preferred - -## [1.2.1] - 2021-05-23 - -### Changed - -- Bold table headers instead of repo names - -### Removed - -- Extra newline before first entry when printing all tables - -## [1.2.0] - 2021-05-16 - -### Removed - -- Middleware `run` function in `lib.rs` since it's unecessary and unintuitive - - Before, you used a type from the `driver` module as a parameter for `run` - - Now, you only use types from `driver` - -## [1.1.1] - 2021-05-16 - -### Changed - -- Config management to be done by applications consuming the library (moved out of `lib.rs`) -- Driver module to be public -- Printing to STDOUT to be done by applications consuming the library (moved out of `lib.rs`) -- `TableWrapper` type to be a private, internal type - -## [1.1.0] - 2021-05-15 - -### Added - -- Shallow search flag to disable recursive search (accessible via `-s/--shallow`) - -### Changed - -- Binary size to be ~60% of the size of `gfold 1.0.4` - - Primarily, this was achieved by removing unused default features from imported crates - - Runtime speed is the same, better, or more consistent -- Default search behavior to be recursive rather than shallow -- Short flag for `--skip-sort` from `-s` to `-x` -- Workspace implementation to a single crate (similar to before `gfld`) - -### Removed - -- `gfld`, the lightweight version of `gfold` due the following reasons: - - its over ~105% average slower runtime speed (despite it being ~40% of the size) - - printing to STDOUT was not consistent in subcommand scenarios -- Recursive flag since `gfold` uses recursive search by default - -## [1.0.4] - 2021-04-04 - -### Changed - -- Fixed final output order (sorted by name, then by status) - -## [1.0.3] - 2021-04-02 - -### Changed - -- Directory name finder to default to the current working directory if empty (`gfld`) -- Misc. optimizations in `gfld` -- Release profile optimizations to be at workspace scope for binaries - -## [1.0.2] - 2021-04-01 - -### Changed - -- `gfld` output to not include parent root since all results started with the same string - -## [1.0.1] - 2021-03-30 - -### Added - -- `Cargo.lock` to the workspace to fix AUR builds - -## Changed - -- CI to use `--locked` for builds - -## [1.0.0] - 2021-03-29 - -### Added - -- A brand new, minimal CLI: `gfld` -- `DEVELOPING.md` for instructions on building `gfld` - -### Changed - -- Documentation to include `gfld` -- GitHub issue template to include `gfld` information -- GitHub PR CI to only build for Linux while keeping macOS and Windows for release CI -- The repository to be split into two crates: `gfold` and `gfld` -- Unnecessary `PathBuf` usages to `Path` when possible in `util.rs` - -### Removed - -- Release workflow for GitHub actions (now, it is "merge only") -- Uploaded binaries due to lack of checksums and maintenance - -## [0.9.1] - 2021-03-16 - -### Added - -- RELEASE file for releasing `gfold` - -### Changed - -- README installation section to be condensed -- LICENSE to not use copyright dates or name (reduce maintenance) - -### Removed - -- Makefile in order to be cross-platform-friendly - -## [0.9.0] - 2021-02-15 - -### Added - -- Email display feature -- Include standard directory feature -- Shorthand flag for all features without one - -### Changed - -- Directory walking to skip hidden directories -- Repository opening check to log error in debug mode rather than panic - -### Removed - -- File header comments -- Prettytable macros - -## [0.8.4] - 2021-01-26 - -### Added - -- Dependencies section to CHANGELOG -- `paru` to suggested AUR helpers in README - -### Changed - -- All CRLF files to LF -- Condense tests into loops where possible -- Label `unpush_check` as an experimental feature -- `macos-amd64` to `darwin-amd64` -- `unpush_check` from `disable` to `enable` - -## [0.8.3] - 2020-12-15 - -### Added - -- Disable unpushed commit check flag and functionality -- Logging for origin and local reference names for unpushed commit check - -## [0.8.2] - 2020-12-14 - -### Added - -- `gfold --version` to issue template -- Unpush functionality (again) - -### Changed - -- Unpush function to only return boolean - -### Removed - -- Contributing section from README to reduce requirements -- Empty results message since it was potentially misleading - -## [0.8.1] - 2020-12-01 - -### Added - -- Condition enum for adding rows to final table -- Debug flag -- Many debug statements for the new debug flag - -### Changed - -- Bare repository checking to original behavior -- `util.rs` results generation to include Condition enum - -### Removed - -- Carets from `Cargo.toml` to maintain stability -- Unpush functionality temporarily - -## [0.8.0] - 2020-11-26 - -### Added - -- Debugging calls for general usage and the new unpushed commit code -- Derive debug to the `Config` struct -- Lightweight logging stack with `env_logger` and `log` -- Two files: `driver.rs` and `util.rs` -- Unpushed commit status functionality and output - -### Changed - -- Bare repository detection to use upstream function -- Library contents into `driver.rs` and `util.rs` through a major refactor - -## [0.7.1] - 2020-11-18 - -### Added - -- In-depth description of the `run` function - -### Changed - -- Consolidated boolean test permutations into one test - -### Removed - -- All non-public comments in `*.rs` files - -## [0.7.0] - 2020-11-11 - -### Added - -- Crate to crates.io -- Crates.io publishing requirements to `[package]` in `Cargo.toml` -- Homebrew tap -- Library description to `lib.rs` - -### Changed - -- Dependency versioning to use carets -- README mentions of specific version tags -- README plaintext blocks to single quotes when mixed with formatted text -- README to sort installation method by package managers first - -### Removed - -- Public structs and functions without only `run` (primary backend driver) remaining - -## [0.6.2] - 2020-11-03 - -### Added - -- No color flag and functionality - -### Removed - -- Pull request template - -## [0.6.1] - 2020-10-12 - -### Added - -- Code of Conduct link -- GitHub issue template -- GitHub pull request template - -### Changed - -- LICENSE to be extended through 2021 -- Match blocks in `lib.rs` to be consolidated -- Nearly all contents of `lib.rs` to return errors back to the calling function in `main.rs` - -### Removed - -- Duplicate code related to the match block consolidation - -## [0.6.0] - 2020-10-10 - -### Added - -- Doc comments and `cargo doc` to `release` target -- `eyre` for simple backtrace reporting -- `gfold-bin` to AUR portion of README -- `lib.rs` as part of major refactor - -### Changed - -- Pre-build Makefile targets to be consolidated -- Refactor source code to be driven by a library, helmed by `lib.rs` - -### Removed - -- `util.rs` and `gfold.rs` as part of major refactor - -## [0.5.2] - 2020-10-08 - -### Added - -- GitHub release downloads to README -- Binary publishing workflow to the dummy file - -### Changed - -- Existing merge workflow to use debug building instead of release building -- Makefile target containing the old default branch name - -### Removed - -- Makefile target for statically-linked building - -## [0.5.1] - 2020-10-07 - -### Added - -- Release dummy GitHub Action -- Version README badge - -### Changed - -- A reduction to CI build time and complexity by combining the test and check steps, -- GitHub workflow "merge" file name to "merge.yml" -- GitHub workflow name to "merge" -- OS compatibility claims in README through a simplified list -- README badges to use shields.io - -### Removed - -- MUSL mentions in docs - -## [0.5.0] - 2020-09-02 - -### Added - -- Recursive search feature and flag -- Skip sort feature and flag -- Unit tests for recursive search and skip sort -- AUR PKGBUILD GitHub repository to README -- Results and TableWrapper structs, and relevant functions, -- Three methods for Results struct (printing/sorting/populating results) -- Make targets for `run-recursive` and `install-local` - -### Changed - -- Switch from `walk_dir` function to object-driven harness for execution -- Move `walk_dir` function logic to `Results` method -- Function `is_git_repo` to its own file -- Any unnecessary match block to use "expect" instead -- Cargo install to use a specific tag -- Version upgrade workflow to Makefile - -### Removed - -- Leftover "FIXME" comments for recursive search ideas - -## [0.4.0] - 2020-08-31 - -### Added - -- Changelog -- Tags automation - -### Changed - -- Example output to use mythical repositories -- Path flag to positional argument -- Switched to structopt library for CLI parsing - -### Removed - -- Tag v0.3.0 (duplicate of 0.3.0 with the "v" character) -- All GitHub releases before 0.3.1 -- Releases information from README - -## [0.3.1] - 2020-08-30 - -### Added - -- Add AUR installation documentation -- Add AUR packages from [@orhun](https://github.com/orhun) - -### Changed - -- Switch to Apache 2.0 license from MIT license -- Reorganize build tags, and add test build target - -## [0.3.0] - 2020-08-24 - -### Changed - -- Handling for bare repositories to print their status to STDOUT with the mentorship of [@yaahc](https://github.com/yaahc) - -## [0.2.2] - 2020-08-24 - -### Changed - -- "Continue" to the next repository object if the current object is bare -- Release availability in README - -## [0.2.1] - 2020-06-08 - -### Added - -- Experimental statically-linked, MUSL support - -## [0.2.0] - 2020-05-10 - -### Changed - -- Switched to prettytable-rs -- Unit tests to work with prettytable-rs - -## [0.1.1] - 2020-04-10 - -### Added - -- Example output, contributors, and usage in README -- Building for Windows, macOS, and Linux amd64 in CI pipeline from [@jrcichra](https://github.com/jrcichra) - -## [0.1.0] - 2020-04-08 - -### Added +## Before 4.0.0 -- Base contents +Please see [CHANGELOG_PRE_V4](./docs/CHANGELOG_PRE_V4.md). |