Skip to content

Working on the installer

The public script drupalaibp is generated by Bashly from the src/ directory. Never edit it by hand; edit src/ and regenerate. CI fails the pipeline if the committed script has drifted from src/.

Layout

Path Purpose
src/bashly.yml CLI definition: commands, flags, help text
src/*_command.sh One entry file per command
src/lib/ Everything else, one primary function per file
docs/cli/, man/ Generated CLI reference and man pages (from src/bashly.yml)
tests/bats/ The test suite, one .bats file per source file

AGENTS.md in the repo root carries the full source-layout table, the globals list, and the event architecture. Read it before changing anything; it is the maintainers' contract for the codebase.

The four wrappers

Each pins its tool's version and runs it in Docker, so there is nothing to install and CI runs exactly what you run:

bin/generate    # regenerate drupalaibp from src/, with completeness checks
bin/docs        # regenerate docs/cli/*.md and man/*.1 from src/bashly.yml
bin/test        # bats test suite
bin/lint        # ShellCheck (hard gate, zero findings)
bin/spell       # cspell, reproducing CI's spellcheck

After editing src/, run bin/generate (and bin/docs if you touched src/bashly.yml) and commit the regenerated output together with the source change. A new file under src/ comes with a .bats file in the same change; see Testing.

Publishing

Publishing is tag-driven. Merging to the development branch releases nothing; the pages CI job runs only on tags and publishes the docs site and the installer together. The one-liner URL (https://aibp.drupalstarforge.ai/install.sh, redirecting to the GitLab Pages script) therefore always serves the newest tag. To ship a change: merge it, then tag the commit.

Testing an ai_best_practices merge request

test-mr.sh is a standalone developer tool for testing a drupal/ai_best_practices merge request locally: it fetches the fork, spins up a fresh DDEV Drupal CMS site, and installs the module from the local clone.

bash <(curl -fsSL https://git.drupalcode.org/project/one_line_installer/-/raw/1.0.x/test-mr.sh) <MR-number>

Issues and merge requests

The project lives at git.drupalcode.org/project/one_line_installer, with the issue queue on drupal.org.