{ "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, 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

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 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

Likewise, for JavaScript, versa install<\/code> should be able to determine if npm<\/code>, yarn<\/code> or pnpm<\/code> is used.<\/p>\n\n

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

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 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

Likewise, for JavaScript, versa install<\/code> should be able to determine if npm<\/code>, yarn<\/code> or pnpm<\/code> is used.<\/p>\n\n

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 ", "summary": null } ] }