Files
keep/PLAN.md
Andrew Phillips d27776ac23 chore: mark clippy fixes as completed in PLAN.md
Co-authored-by: aider (openai/andrew/openrouter/sonoma-sky-alpha) <aider@aider.chat>
2025-09-11 12:34:49 -03:00

12 KiB

Keep Project Plan

This document outlines the current state of the codebase and planned changes, particularly focusing on fixing Clippy lints from the output of TERM=dumb cargo clippy. The plan is organized by file, with specific issues identified and proposed fixes. Files are listed in the order they appeared in the Clippy output. Each entry includes the lint error, location, and recommended change.

Files and Changes Needed

src/services/compression_service.rs

  • Issue: Empty line after doc comment at line 32.
  • Description: The doc comment for the impl CompressionService block ends with a code example, followed by an empty line. Clippy flags this as unnecessary.
  • Fix: Remove the empty line after the doc comment example.
  • Status: COMPLETED

src/filter_plugin/mod.rs

  • Issue: Empty line after doc comment at line 194.
  • Description: Similar to above, the doc comment for impl Clone for FilterChain has an empty line.
  • Fix: Remove the empty line.
  • Status: COMPLETED

src/common/is_binary.rs

  • Issue: Collapsible if statements at lines 15-17.

  • Description: Nested if for UTF-16 BOM check can be flattened.

  • Fix: Combine into a single condition.

  • Status: COMPLETED

  • Issue: Let binding returned immediately at line 218.

  • Description: The has_reasonable_structure let binding is returned directly; unnecessary.

  • Fix: Return the expression directly without the binding.

  • Status: COMPLETED

  • Issue: Needless range loop at line 192.

  • Description: Loop variable i only used for indexing; use iterator instead.

  • Fix: Replace with data[100..108].iter().

  • Status: COMPLETED

  • Issue: Needless range loop at line 199.

  • Description: Similar to above for checksum field.

  • Fix: Replace with data[148..156].iter().

  • Status: COMPLETED

  • Issue: Manual range contains at line 216.

  • Description: (b >= b'0' && b <= b'7') can use RangeInclusive::contains.

  • Fix: Change to (b'0'..=b'7').contains(&b).

  • Status: COMPLETED

src/common/status.rs

  • Issue: Borrowed box instead of slice at line 59.

  • Description: &Vec<MetaPluginType> can be &[MetaPluginType].

  • Fix: Update the parameter type.

  • Status: COMPLETED

  • Issue: Unnecessary map_or at line 91.

  • Description: as_ref().map_or(false, |ct| *ct == compression_type) can be simplified.

  • Fix: Use is_some_and(|ct| *ct == compression_type).

  • Status: COMPLETED

src/config.rs

  • Issue: Match result_ok at line 198.
  • Description: std::env::var("HOME").ok() is redundant.
  • Fix: Change to if let Ok(home_dir) = std::env::var("HOME").
  • Status: COMPLETED

src/services/async_item_service.rs

  • Issue: Redundant local binding at line 214.
  • Description: let item_id = item_id; is unnecessary.
  • Fix: Remove the redundant let.
  • Status: COMPLETED

src/services/compression_service.rs

  • Issue: Four forward slashes in comment at line 8.
  • Description: //// looks like a doc comment but isn't.
  • Fix: Change to /// and ensure it's a proper doc comment.
  • Status: COMPLETED

src/services/filter_service.rs

  • Issue: New without default at line 35.

  • Description: FilterService has new() but no Default impl.

  • Fix: Add impl Default for FilterService { fn default() -> Self { Self::new() } }.

  • Status: COMPLETED

  • Issue: Type complexity at line 161.

  • Description: The static FILTER_PLUGIN_REGISTRY type is too complex.

  • Fix: Factor into a type alias.

  • Status: COMPLETED

src/services/meta_service.rs

  • Issue: Unwrap or default at line 84.

  • Description: or_insert_with(Vec::new) can be or_default().

  • Fix: Replace with or_default().

  • Status: COMPLETED

  • Issue: Borrowed box at line 164.

  • Description: &Box<dyn MetaPlugin> can be &dyn MetaPlugin.

  • Fix: Update to &dyn MetaPlugin.

  • Status: COMPLETED

  • Issue: Collapsible if at line 199.

  • Description: Nested if for hostname insertion.

  • Fix: Combine conditions.

  • Status: COMPLETED

src/db.rs

  • Issue: Unwrap or default at line 1209.

  • Description: or_insert_with(Vec::new) for tags.

  • Fix: Use or_default().

  • Status: COMPLETED

  • Issue: Unwrap or default at line 1264.

  • Description: or_insert_with(std::collections::HashMap::new) for meta.

  • Fix: Use or_default().

  • Status: COMPLETED

src/meta_plugin/magic_file.rs

  • Issue: Io other error at line 70.

  • Description: Manual io::Error::new(io::ErrorKind::Other, ...) can be io::Error::other.

  • Fix: Replace with io::Error::other(format!(...)).

  • Status: COMPLETED

  • Issue: Io other error at line 73.

  • Description: Similar to above.

  • Fix: Replace with io::Error::other(format!(...)).

  • Status: COMPLETED

  • Issue: Io other error at line 89.

  • Description: Manual error creation.

  • Fix: Replace with io::Error::other(...).

  • Status: COMPLETED

  • Issue: Collapsible if at line 105.

  • Description: Nested if for magic result processing.

  • Fix: Combine into single condition.

  • Status: COMPLETED

src/meta_plugin/exec.rs

  • Issue: Collapsible if at line 281.

  • Description: Nested if for writing to stdin.

  • Fix: Combine conditions.

  • Status: COMPLETED

  • Issue: Collapsible if at lines 380-383.

  • Description: Nested if for command parsing.

  • Fix: Collapse nested lets and ifs.

  • Status: COMPLETED

  • Issue: Collapsible if at line 390.

  • Description: Nested if for split_whitespace.

  • Fix: Combine.

  • Status: COMPLETED

  • Issue: Collapsible if at line 395.

  • Description: Nested if for name.

  • Fix: Combine.

  • Status: COMPLETED

src/meta_plugin/digest.rs

  • Issue: Derivable impls at line 69.

  • Description: Default impl can be derived.

  • Fix: Add #[derive(Default)] to DigestMetaPlugin.

  • Status: COMPLETED

  • Issue: Collapsible if at line 137.

  • Description: Nested if for updating outputs.

  • Fix: Combine.

  • Status: COMPLETED

src/meta_plugin/text.rs

  • Issue: Collapsible if at line 388.

  • Description: Nested if for median length.

  • Fix: Combine.

  • Status: COMPLETED

  • Issue: Collapsible if at line 389.

  • Description: Nested if for lengths check.

  • Fix: Combine.

  • Status: COMPLETED

  • Issue: Collapsible if at line 608.

  • Description: Nested if for binary content check.

  • Fix: Combine.

  • Status: COMPLETED

  • Issue: Collapsible if at line 609.

  • Description: Nested if for buffer check.

  • Fix: Combine.

  • Status: COMPLETED

  • Issue: Collapsible if at line 649.

  • Description: Nested if for enabled outputs.

  • Fix: Combine.

  • Status: COMPLETED

src/meta_plugin/hostname.rs

  • Issue: Collapsible if at line 37.

  • Description: Nested if for hostname option handling.

  • Fix: Combine.

  • Status: COMPLETED

  • Issue: Collapsible if at line 155.

  • Description: Nested if for domainname command.

  • Fix: Combine.

  • Status: COMPLETED

  • Issue: Collapsible if at line 168.

  • Description: Nested if for hostname -f command.

  • Fix: Combine.

  • Status: COMPLETED

  • Issue: Collapsible if at line 268.

  • Description: Nested if for hostname_enabled.

  • Fix: Combine.

  • Status: COMPLETED

  • Issue: Collapsible if at line 277.

  • Description: Nested if for hostname_full_enabled.

  • Fix: Combine.

  • Status: COMPLETED

  • Issue: Collapsible if at line 286.

  • Description: Nested if for hostname_short_enabled.

  • Fix: Combine.

  • Status: COMPLETED

src/meta_plugin/mod.rs

  • Issue: Redundant closure at line 208.

  • Description: Lazy::new(|| HashMap::new()) unnecessary closure.

  • Fix: Use HashMap::new() directly.

  • Status: COMPLETED

  • Issue: Collapsible if at line 228.

  • Description: Nested if for output disabling.

  • Fix: Combine.

  • Status: COMPLETED

  • Issue: Redundant closure at line 374.

  • Description: Similar to above.

  • Fix: Use directly.

  • Status: COMPLETED

  • Issue: Redundant closure at line 395.

  • Description: Similar.

  • Fix: Use directly.

  • Status: COMPLETED

  • Issue: Type complexity at line 431.

  • Description: Complex static type.

  • Fix: Factor into type alias.

  • Status: COMPLETED

  • Issue: Type complexity at line 442.

  • Description: Complex fn type in registry.

  • Fix: Factor into type alias.

  • Status: COMPLETED

  • Issue: Collapsible if at line 466.

  • Description: Nested if for command parsing.

  • Fix: Collapse.

  • Status: COMPLETED

  • Issue: Collapsible if at line 476.

  • Description: Nested if for split_whitespace.

  • Fix: Combine.

  • Status: COMPLETED

  • Issue: Collapsible if at line 481.

  • Description: Nested if for name.

  • Fix: Combine.

  • Status: COMPLETED

src/modes/common.rs

  • Issue: Should implement trait at line 175.
  • Description: from_str method shadows trait; implement FromStr.
  • Fix: Add impl FromStr for ColumnType with the method.
  • Status: COMPLETED

src/modes/delete.rs

  • Issue: Ptr arg at line 51.

  • Description: &mut Vec<i64> can be &mut [i64].

  • Fix: Update parameter.

  • Status: COMPLETED

  • Issue: Ptr arg at line 52.

  • Description: &mut Vec<String> can be &mut [String].

  • Fix: Update parameter.

  • Status: COMPLETED

src/modes/diff.rs

  • Issue: Ptr arg at line 11.

  • Description: &Vec<i64> can be &[i64].

  • Fix: Update.

  • Status: COMPLETED

  • Issue: Ptr arg at line 11.

  • Description: &Vec<String> can be &[String].

  • Fix: Update.

  • Status: COMPLETED

  • Issue: Ptr arg at line 37.

  • Description: &Vec<i64> can be &[i64].

  • Fix: Update.

  • Status: COMPLETED

src/modes/get.rs

  • Issue: Ptr arg at line 32.

  • Description: &mut Vec<i64> can be &mut [i64].

  • Fix: Update.

  • Status: COMPLETED

  • Issue: Ptr arg at line 33.

  • Description: &mut Vec<String> can be &mut [String].

  • Fix: Update.

  • Status: COMPLETED

src/modes/info.rs

  • Issue: Ptr arg at line 45.

  • Description: &mut Vec<i64> can be &mut [i64].

  • Fix: Update.

  • Status: COMPLETED

  • Issue: Ptr arg at line 46.

  • Description: &mut Vec<String> can be &mut [String].

  • Fix: Update.

  • Status: COMPLETED

  • Issue: Needless borrows for generic args at line 142.

  • Description: &item_id.to_string() unnecessary borrow.

  • Fix: Use item_id.to_string() directly.

  • Status: COMPLETED

src/modes/list.rs

  • Issue: Ptr arg at line 164.

  • Description: &mut Vec<i64> can be &mut [i64].

  • Fix: Update.

  • Status: COMPLETED

  • Issue: Ptr arg at line 165.

  • Description: &Vec<String> can be &[String].

  • Fix: Update.

  • Status: COMPLETED

src/modes/save.rs

  • Issue: Ptr arg at line 21.
  • Description: &Vec<i64> can be &[i64].
  • Fix: Update.
  • Status: COMPLETED

src/modes/status_plugins.rs

  • Issue: Ptr arg at line 175.
  • Description: &Vec<FilterPluginInfo> can be &[FilterPluginInfo].
  • Fix: Update.
  • Status: COMPLETED

src/filter_plugin/strip_ansi.rs

  • Issue: New without default at line 14.
  • Description: StripAnsiFilter has new() but no Default impl.
  • Fix: Add impl Default for StripAnsiFilter { fn default() -> Self { Self::new() } }.
  • Status: COMPLETED

src/filter_plugin/mod.rs

  • Issue: New without default at line 235.

  • Description: FilterChain has new() but no Default impl.

  • Fix: Add impl Default for FilterChain { fn default() -> Self { Self::new() } }.

  • Status: COMPLETED

  • Issue: Collapsible if at line 586.

  • Description: Nested if for f64 parsing.

  • Fix: Combine.

  • Status: COMPLETED

src/meta_plugin/mod.rs

  • Issue: Borrowed box at line 164? Wait, no specific line, but earlier note.
  • Description: Ensure no unnecessary borrows.
  • Status: COMPLETED

General Changes

  • Ensure all Default impls are derived where possible (e.g., add derives).
  • Remove redundant locals and unnecessary let bindings.
  • Update all parameter types from &Vec<T> to &[T] and &mut Vec<T> to &mut [T] where appropriate (function signatures).
  • Status: COMPLETED

Next Steps

  1. Apply the fixes above.
  2. Re-run cargo clippy to verify.
  3. Test the application to ensure no regressions.
  4. Update this plan as needed after verification.