{ "uuid": [ { "value": "29a700d5-082c-4f6b-bafd-f4c4e1486624" } ], "langcode": [ { "value": "en" } ], "type": [ { "target_id": "daily_email", "target_type": "node_type", "target_uuid": "8bde1f2f-eef9-4f2d-ae9c-96921f8193d7" } ], "revision_timestamp": [ { "value": "2025-05-11T09:00:20+00:00" } ], "revision_uid": [ { "target_type": "user", "target_uuid": "b8966985-d4b2-42a7-a319-2e94ccfbb849" } ], "revision_log": [], "status": [ { "value": true } ], "uid": [ { "target_type": "user", "target_uuid": "b8966985-d4b2-42a7-a319-2e94ccfbb849" } ], "title": [ { "value": "Introducing Versa - the versatile CLI tool" } ], "created": [ { "value": "2024-02-19T00:00:00+00:00" } ], "changed": [ { "value": "2025-05-11T09:00:20+00:00" } ], "promote": [ { "value": false } ], "sticky": [ { "value": false } ], "default_langcode": [ { "value": true } ], "revision_translation_affected": [ { "value": true } ], "path": [ { "alias": "\/daily\/2024\/02\/19\/introducing-versa", "langcode": "en" } ], "body": [ { "value": "\n
Today, I started to build a new open-source project - Versa, the versatile command-line tool that standardises common commands across projects.<\/p>\n\n
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.<\/p>\n\n
For example, Currently, this logic is within my Build Configs<\/a> project but can be moved to Versa.<\/p>\n\n This reduces the complexity within that codebase and means I can open-source it as it's a separate project.<\/p>\n\n 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.<\/p>\n\n It's still in the prototype phase and includes some initial commands, but the interesting parts will be making it clever.<\/p>\n\n Instead of running Likewise, for JavaScript, 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.<\/p>\n\n Interested? Take a look at the code<\/a>.<\/p>\n\n ",
"format": "full_html",
"processed": "\n Today, I started to build a new open-source project - Versa, the versatile command-line tool that standardises common commands across projects.<\/p>\n\n 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.<\/p>\n\n For example, versa run<\/code> would need to run different commands for Drupal and Sculpin projects,
versa test<\/code> 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.<\/p>\n\n
versa run --type sculpin<\/code>, I'd like to just do
versa run<\/code> and have it determine the type of project automatically.<\/p>\n\n
versa test<\/code> should be able to determine the testing framework automatically based on what's in the project's
composer.json<\/code> file instead of having to specify it.<\/p>\n\n
versa install<\/code> should be able to determine if
npm<\/code>,
yarn<\/code> or
pnpm<\/code> is used.<\/p>\n\n
versa run<\/code> would need to run different commands for Drupal and Sculpin projects,
versa test<\/code> 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.<\/p>\n\n