Show HN: GritQL, a Rust CLI for rewriting source code Hi everyone! I’m excited to open source GritQL, a Rust CLI for searching and transforming source code. GritQL comes from my experiences with conducting large scale refactors and migrations. Usually, I would start exploring a codebase with grep. This is easy to start with, but most migrations end up accumulating additional requirements like ensuring the right packages are imported and excluding cases which don’t have a viable migration path. Eventually, to build a complex migration, I usually ended up having to write a full codemod program with a tool like jscodeshift. This comes with its own problems: - Most of the exploratory work has to be abandoned as you figure out how to represent your original regex search as an AST. - Reading/writing a codemod requires mentally translating from AST names back to what source code actually looks like. - Performance is often an afterthought, so iterating on a large codemod can be painfully slow. - Codemod frameworks are language-specific, so if you’re hopping between multiple languages—or trying to migrate a shared API—you have to learn different tools. GritQL is an attempt to develop a powerful middle ground: - Exploratory analysis is easy: just put a code snippet in backticks and use $metavariables for placeholders. - Incrementally add complexity by introducing side conditions with where clauses. - Reuse named patterns to avoid rebuilding queries, and use shared patterns from our standard library for common tasks like ensuring modules are imported. - Iterate on large codebases quickly: we use Rust for maximum performance GritQL has already been used on thousands of repositories for complex migrations[1] but we're excited to collaborate more with the open source community. [1] Ex. https://ift.tt/lbhHz6M https://ift.tt/4KjdPGN March 21, 2024 at 12:53AM
Show HN: GritQL, a Rust CLI for rewriting source code https://ift.tt/LqU4tFD
Related Articles
Show HN: The all-in-one fake API https://ift.tt/tLpMdkoShow HN: The all-in-one fake API https://fooapi.com December 30, 2024 … Read More
Show HN: A search engine that values depth over popularity https://ift.tt/zZ3jNybShow HN: A search engine that values depth over popularity Hey HN, I'm… Read More
Show HN: Jido – Run 10k agents at 25KB each (Elixir) https://ift.tt/QHrTyXvShow HN: Jido – Run 10k agents at 25KB each (Elixir) Hi HN! I'm Mike H… Read More
Show HN: Dispatched.dev – Background Job Queues for Your Serverless Apps https://ift.tt/DGedJL0Show HN: Dispatched.dev – Background Job Queues for Your Serverless Ap… Read More
Show HN: Handwritten Christmas Card for Hacker News https://ift.tt/GdprSIXShow HN: Handwritten Christmas Card for Hacker News Hi HN, I’ve been w… Read More
Show HN: Open-source and transparent alternative to Honey https://ift.tt/NjPEQu1Show HN: Open-source and transparent alternative to Honey Hey everyone… Read More
Show HN: GitHub repository through a Podcast https://ift.tt/Y7v6SG4Show HN: GitHub repository through a Podcast Understanding any GitHub … Read More
Show HN: Handwritten Christmas Card for Hacker News https://ift.tt/GxSQfOvShow HN: Handwritten Christmas Card for Hacker News Hi HN, I’ve been w… Read More
0 Comments: