fastmod: A fast partial replacement for the codemod tool, replace and replace all in the whole codebase

“fastmod” is a command-line tool that serves as a fast and efficient alternative to the “codemod” tool. It allows developers to perform partial replacements, search, and replace operations in a codebase quickly. “fastmod” utilizes the powerful regular expression matching capabilities of the Rust regex crate to handle complex pattern matching.

One of the primary use cases for “fastmod” is to find and replace specific code patterns or strings across multiple files in a codebase. By specifying a regular expression pattern and replacement text, you can instruct “fastmod” to perform these replacements efficiently. This can be especially useful when you need to make consistent changes across a large codebase or update deprecated code.

The key features and benefits of “fastmod” include:

  • Speed: As the name suggests, “fastmod” is designed for high-speed processing of codebase modifications. It aims to be significantly faster than other tools like “codemod” by utilizing optimized algorithms and leveraging the performance capabilities of the Rust language.
  • Partial Replacements: “fastmod” supports partial replacements, allowing you to modify specific parts of a codebase without affecting the entire codebase. This granular control enables targeted changes, reducing the risk of unintended modifications and minimizing the scope of impact.
  • Regular Expression Matching: The tool leverages the Rust regex crate, which provides a robust and feature-rich regex engine. This allows for advanced pattern matching using regular expressions, enabling complex and precise search and replace operations.
  • Codebase-Wide Operations: “fastmod” enables you to search and replace across an entire codebase, making it suitable for large-scale refactoring tasks. It can efficiently process multiple files and directories, ensuring consistent changes are applied throughout the project.

When using “fastmod,” it is essential to exercise caution and thoroughly test the regular expressions and replacement patterns before applying changes to the entire codebase. Incorrect or poorly designed regular expressions can lead to unintended modifications or introduce errors in the code.

“fastmod” is particularly useful for developers working on projects with substantial codebases or when performing widespread changes across multiple files. It can save significant time and effort by automating repetitive search and replace tasks, allowing developers to focus on more critical aspects of development.

fastmod Command Examples

1. Replace a regex pattern in all files of the current directory, ignoring files on .ignore and .gitignore:

# fastmod regex_pattern replacement

2. Replace a regex pattern in case-insensitive mode in specific files or directories:

# fastmod --ignore-case regex_pattern replacement -- /path/to/file /path/to/directory ...

3. Replace a regex pattern in a specific directory in files filtered with a case- insensitive glob pattern:

# fastmod regex replacement --dir path/to/directory --iglob '**/*.[js,json]'

4. Replace for an exact string in .js or .json files:

# fastmod --fixed-strings exact_string replacement --extensions json,js

5. Replace for an exact string without prompt for a confirmation (disables regular expressions):

# fastmod --accept-all --fixed-strings exact_string replacement

6. Replace for an exact string without prompt for a confirmation, printing changed files:

# fastmod --accept-all --print-changed-files --fixed-strings exact_string replacement

Summary

In summary, “fastmod” is a command-line tool that offers fast and efficient search and replace capabilities for codebases. It provides a performant alternative to “codemod” and utilizes the Rust regex crate for powerful regular expression matching. By leveraging “fastmod,” developers can quickly make targeted modifications across a codebase, improving productivity and facilitating large-scale refactoring tasks.

Related Post