Pular para o conteúdo
← Voltar para projetos

Laravel Zero Cli

Scaffold a new Laravel Zero CLI project with the whole release pipeline already wired: PHAR build, self-update, git-cliff changelog, CI and the shared laravel-zero-* conventions. Designed to be driven non-interactively (by an AI agent or a script) via arguments and flags.

Laravel Zero CLI

#Laravel Zero CLI

Scaffold a new Laravel Zero CLI project with the whole release pipeline already wired: PHAR build, self-update, git-cliff changelog, CI, and the conventions shared by the 16 *-cli projects in this account.

Built with Laravel Zero. Designed to be driven non-interactively (by an AI agent or a script) — every input is an argument or a flag, so there are no prompts.

#Installation

composer global require jeffersongoncalves/laravel-zero-cli

Or grab the standalone PHAR from the latest release.

#Usage

laravel-zero-cli create jeffersongoncalves/deps-cli "Audit composer dependencies"

That writes a project whose composer install && composer test passes out of the box, with a deps executable, and prints the remaining steps (create the repo, run the release workflow, submit to Packagist).

#Arguments

Argument Required Description
vendor-repo yes vendor/repo slug, e.g. jeffersongoncalves/deps-cli
description no Short one-line description, used in composer.json and the generated README.md

#Options

Option Description
--binary=NAME Name of the executable. Default: the repo without its -cli suffix (deps-clideps), since the suffix names the project, not the command people type
--app-name="Name" Display name for config/app.php. Default: derived from the binary (depsDeps CLI)
--path=DIR Target directory. Default: ./<repo> under the current directory
--author="Name" Author for composer.json and LICENSE. Default: git config user.name
--email=EMAIL Author email. Default: git config user.email
--no-git Skip git init and the first commit
--dry-run Print the planned file list without writing anything

#What it generates

Laravel Zero skeleton, parameterized by the binary name:

<binary> (executable stub) · bootstrap/app.php · bootstrap/providers.php · config/app.php · config/commands.php · app/Providers/AppServiceProvider.php · app/Commands/SelfUpdateCommand.php · app/Commands/ExampleCommand.php

Build and release furniture:

box.json · cliff.toml · version.txt · .github/workflows/release.yml

Quality gates and meta:

phpstan.neon.dist · phpunit.xml.dist · tests/ · run-tests.yml · phpstan.yml · fix-php-code-style-issues.yml · dependabot.yml · SECURITY.md · LICENSE · CHANGELOG.md · README.md · .editorconfig · .gitattributes · .gitignore

The last group comes from laravel-zero-package-scaffold, shared with laravel-package-cli and filament-plugin-cli.

#Why these files

Audited across the 16 existing *-cli repos before writing the templates:

Observation What it means
bootstrap/app.php and tests/TestCase.php — identical in all 16 Pure boilerplate, nothing to decide
release.yml, SelfUpdateCommand, AppServiceProvider, config/app.php — 16 "variants" One template, one substitution: the binary name
phpstan.neon.dist — 7 different contents across the only 8 repos that had one Drift, plus half the projects had no static analysis at all
box.json (3), cliff.toml (4), phpunit.xml.dist (5) Drift with no cause
jeffersongoncalves/laravel-zero-self-update — required by all 16 Part of the standard, wired in from the start

Every generated project therefore ships with static analysis, tests, and the same release flow — the things that were previously missing or subtly different from repo to repo.

#The release invariant

The generated release.yml builds the PHAR and commits it to main before creating the tag, then pins the tag to that exact commit. Nothing rebuilds onto a post-tag commit, so a published tag never moves and Composer's stable-version immutability holds.

gh workflow run release.yml --ref main

#Updating

laravel-zero-cli self-update
laravel-zero-cli self-update --check

#Testing

composer test

#Changelog

Please see CHANGELOG for more information on what has changed recently.

#Security

If you discover any security related issues, please see SECURITY.

#License

The MIT License (MIT). Please see License File for more information.

Nova versão disponível.