diff --git a/source/_daily_emails/2024-02-19.md b/source/_daily_emails/2024-02-19.md new file mode 100644 index 000000000..67901c85c --- /dev/null +++ b/source/_daily_emails/2024-02-19.md @@ -0,0 +1,39 @@ +--- +title: Introducing Versa - the versatile CLI tool +date: 2024-02-19 +permalink: archive/2024/02/19/introducing-versa +snippet: | + Introducing Versa - the versatile CLI tool +tags: + - software-development + - php + - symfony + - open-source +--- + +Today, I started to build a new open-source project - Versa, the versatile command-line tool that standardises common commands across projects. + +After watching a Twitch streamer building something similar in Rust, I decided to build my take on it and add features I'd need, such as support for local vs Docker-based commands and to run different commands for different projects. + +For example, `versa run` would need to run different commands for Drupal and Sculpin projects, `versa test` should support different test frameworks for the same language - e.g. PHPUnit, Pest and ParaTest for PHP - and the commands will need to be different in Docker Compose-based projects. + +Currently, this logic is within my [Build Configs] project but can be moved to Versa. + +This reduces the complexity within that codebase and means I can open-source it as it's a separate project. + +At the moment, I've added PHP as the only supported language but I will add JavaScript/TypeScript support so it supports projects like Fractal. + +It's still in the prototype phase and includes some initial commands, but the interesting parts will be making it clever. + +Instead of running `versa run --type sculpin`, I'd like to just do `versa run` and have it determine the type of project automatically. + +`versa test` should be able to determine the testing framework automatically based on what's in the project's `composer.json` file instead of having to specify it. + +Likewise, for JavaScript, `versa install` should be able to determine if `npm`, `yarn` or `pnpm` is used. + +That'll be where the more complex code will be added and when I start doing test-driven development - maybe with Behat, which is also something I've been thinking about for Build Configs. + +Interested? [Take a look at the code][github]. + +[build configs]: {{site.url}}/build-configs +[github]: https://github.com/opdavies/versa