uuid: - value: 0d707bca-be14-4504-b500-9e44abebab44 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:26+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: | Why I've standardised on 'run' scripts created: - value: '2023-11-19T00:00:00+00:00' changed: - value: '2025-05-11T09:00:26+00:00' promote: - value: false sticky: - value: false default_langcode: - value: true revision_translation_affected: - value: true path: - alias: /daily/2023/11/19/why-ive-standardised-on-run-scripts langcode: en body: - value: |

In some of my first emails to this list, I wrote about just and run files.

Both allow you to write project-specific aliases and commands. For example, instead of running docker compose exec php phpunit, you run just test or run test.

While just uses a simple Makefile-like syntax, it requires its own program, so it needs to be installed.

While I have it installed locally, I've had instances where CI pipelines have failed because they can't download and install just and not because of an error in my code.

Here's the thing

A run script is a file of Bash functions.

Because it's written in Bash, it runs anywhere without installing additional dependencies.

If a CI pipeline fails, which is less often, it's due to a failure within my code and not because of a download error.

format: full_html processed: |

In some of my first emails to this list, I wrote about just and run files.

Both allow you to write project-specific aliases and commands. For example, instead of running docker compose exec php phpunit, you run just test or run test.

While just uses a simple Makefile-like syntax, it requires its own program, so it needs to be installed.

While I have it installed locally, I've had instances where CI pipelines have failed because they can't download and install just and not because of an error in my code.

Here's the thing

A run script is a file of Bash functions.

Because it's written in Bash, it runs anywhere without installing additional dependencies.

If a CI pipeline fails, which is less often, it's due to a failure within my code and not because of a download error.

summary: null field_daily_email_cta: { }