outlawz-team / cli
Outlawz CLI
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.5
- illuminate/database: ^12.17
- illuminate/http: ^12.17
- laravel-zero/phar-updater: ^1.3
- nunomaduro/termwind: ^2.0
Requires (Dev)
- fakerphp/faker: ^1.9.1
- laravel-zero/framework: ^12.0
- laravel/pint: ^1.13
- mockery/mockery: ^1.6
- pestphp/pest: ^3.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Maakt nieuwe projecten van Outlawz aan en zet projecten klaar voor Outlawz Cloud: ze worden gebouwd op de golden images van cloud-images.
Installeren
composer global require outlawz-team/cli
Zorg dat de bin-map van composer in je PATH staat (composer global config bin-dir --absolute). Bijwerken:
outlawz self-update
of composer global update outlawz-team/cli.
Wat je nodig hebt
Elk commando controleert vooraf wat het nodig heeft en zegt hoe je het installeert:
| Gereedschap | Voor |
|---|---|
git en git flow (brew install git-flow) |
alle projecten: master en develop |
composer, php en npm (Herd) |
alle projecten |
wp (brew install wp-cli) en MySQL (DBngin) |
create:radicle |
gh (brew install gh && gh auth login) |
alleen als het commando de repository op GitHub aanmaakt |
Commando's
outlawz create:radicle <map>
Een nieuwe WordPress-site op Radicle: vraagt de naam, de database, de URL en de plugins, en zet daarna alles klaar:
- Radicle met een eigen git-geschiedenis,
masterendevelop(git flow); - de gekozen plugins, de pakketten van Outlawz, prettier, lint-staged en husky;
.envmet de database en echte keys en salts;- de bestanden van Outlawz (thema, layouts, blocks, post types);
- WordPress geïnstalleerd, in het Nederlands, met een pagina Home (login
outlawz/Welkom01!); - klaar voor Outlawz Cloud (zie hieronder);
- een eerste commit op
develop, en als je dat wilt de repositoryoutlawz-team/<map>op GitHub, met de secretsGHCR_PULL_TOKENenCOMPOSER_AUTH(bij ACF Pro) en de eerste push. Die push bouwt meteen het image voor test.
Gaat een stap mis, dan stopt het commando en zegt het welke stap en waarom. Haal dan de map en de database weg en probeer het opnieuw.
outlawz create:platform <map>
Een nieuw platform (Laravel-API en Next.js-dashboard) vanuit platform-boilerplate:
- de boilerplate met een eigen git-geschiedenis,
masterendevelop; - de namen uit de checklist van de boilerplate (
APP_NAME, het composer-pakket, het npm-pakket, de Bruno-collectie); - klaar voor Outlawz Cloud:
image.ymlop het golden image van het platform,phpop^8.4(het platform-image heeft alleen 8.4) enoutput: "standalone"innext.config; - de API geïnstalleerd (
composer run setupen de gebruiker uit de seeder) en het dashboard (npm install,.env.local); - een eerste commit op
develop, en als je dat wilt de repository op GitHub, met het secretGHCR_PULL_TOKENen de eerste push.
outlawz cloud:init [map]
Zet een bestaand project over op het golden image: Radicle, Bedrock in public/content, of een platform met
apps/api en apps/dashboard. Zonder map de huidige map. Het vraagt vóór elke wijziging of het mag; --yes
doet alles zonder te vragen.
- haalt de eigen
Dockerfileendocker/weg (de oude opzet); instellingen van de site daarin horen incloud/; - zet
.github/workflows/image.ymlop het golden image en haalt de voorbeeld-workflows van Roots weg; - zet een PHP-eis in
composer.jsondie het golden image accepteert, als die er niet is; - WordPress: de blokken voor
DB_SSLen WP Mail SMTP in de configuratie, encloud/config.ymlvoor een site die met bud bouwt; - platform:
output: "standalone"innext.configvan het dashboard; - zet het secret
GHCR_PULL_TOKEN, als het er nog niet is; - private pakketten (ACF Pro, private repo's): zet het secret
COMPOSER_AUTHvanuit jeauth.json, als het er nog niet is.
Wat het niet zelf kan, staat aan het eind. Daarna committen en naar develop pushen.
Outlawz Cloud
Een project heeft geen eigen Dockerfile: .github/workflows/image.yml roept de workflow van cloud-images aan, die het
image bouwt op het golden image (wordpress/v1 of platform/v1, in config/cloud.php). Uitzonderingen per project
staan in cloud/ van het project; zie de README van cloud-images. Het project zelf koppel je daarna in Outlawz Cloud.
Secrets
Secrets van de organisatie kunnen privé-repo's op GitHub Free niet lezen, dus elke repository heeft ze zelf nodig:
| Secret | Wanneer | Waar vandaan |
|---|---|---|
GHCR_PULL_TOKEN |
altijd: de golden images zijn privé; zonder stopt de build met 401 Unauthorized |
ghcr-pull-token-actions in de kluis (read:packages) |
COMPOSER_AUTH |
alleen met private pakketten (ACF Pro, private repo's) | je globale auth.json van composer |
De commando's zetten ze met gh en geven de waarde via stdin, nooit op de commandoregel. Het token vragen ze verborgen;
zet je het in OUTLAWZ_GHCR_PULL_TOKEN, dan vragen ze het niet:
export OUTLAWZ_GHCR_PULL_TOKEN=... # bijvoorbeeld in ~/.zshrc, of uit je wachtwoordmanager
Laat je het leeg, dan noemen ze aan het eind het commando om het later zelf te zetten.
Ontwikkelen
composer install php outlawz list vendor/bin/pest
De commando's staan in app/Commands, de bestanden die ze neerzetten in stubs/, de plugins in
config/wordpress.php en de golden images in config/cloud.php.
Release
Vanaf develop, zonder openstaande wijzigingen:
scripts/release.sh 1.2.0
Het script doet de release met git flow, bouwt builds/outlawz met die versie, tagt hem en pusht master, develop
en de tag. composer global require en self-update nemen de phar uit de tag, dus hij moet in de release gebouwd
zijn. De workflow Release controleert dat en maakt de release op GitHub aan.