Skip to content

Latest commit

 

History

History
117 lines (82 loc) · 3.24 KB

File metadata and controls

117 lines (82 loc) · 3.24 KB

shimkit 0.14.0

shimkit framework symfony — sibling recipe under the existing framework parent. Modelled on Laravel (v0.7.0); adjusted for Symfony's conventions.

For the full machine-readable changelog, see CHANGELOG.md.


TL;DR

shimkit framework symfony perms PATH [--group G]              # MODERATE
shimkit framework symfony env PATH [--name N] [--env E] [--db D]  # MODERATE
shimkit framework symfony cache-clear PATH [--env E]
shimkit framework symfony console -- <args>

Same shape as framework laravel, swapping in Symfony's conventions: writable var/ (not storage/ + bootstrap/cache), APP_SECRET hex (not APP_KEY base64), bin/console (not root artisan).


Differences from Laravel

Aspect Laravel (v0.7.0) Symfony (v0.14.0)
Writable tree storage/ + bootstrap/cache/ var/
App secret APP_KEY=base64:... (32 bytes) APP_SECRET=... (hex(32) = 64 chars)
Env file .env (gitignored typically) .env.local (gitignored by convention; framework defaults stay in .env)
Console binary root-level artisan bin/console
Scheduler php artisan schedule:run every minute No built-in scheduler — use shimkit cron add directly

The Symfony recipe is smaller by one command (no cron-install) because Symfony doesn't ship a scheduler analogous to Laravel's.


env shape

.env.local is the gitignored override file; the framework-shipped .env is preserved. Default contents:

# Symfony local environment overrides (gitignored).
# Framework defaults live in .env; secrets and per-host
# tweaks belong here.

APP_ENV=dev
APP_SECRET=<64 hex chars>

DATABASE_URL="mysql://root:shimkit-dev@127.0.0.1:13306/<dirname>?serverVersion=8.0"

# Mailer — defaults to in-memory; override in prod.
MAILER_DSN=null://null

DATABASE_URL is engine-aware:

shimkit framework symfony env --yes --db mysql ./my-app
# →  mysql://root:shimkit-dev@127.0.0.1:13306/my-app?serverVersion=8.0

shimkit framework symfony env --yes --db postgres ./my-app
# →  postgresql://root:shimkit-dev@127.0.0.1:15432/my-app?serverVersion=16

shimkit framework symfony env --yes --db mariadb ./my-app
# →  mysql://root:shimkit-dev@127.0.0.1:13307/my-app?serverVersion=mariadb-10.11

Pair with shimkit db <engine> up for an end-to-end dev stack.


End-to-end example

# 1. Start a database
shimkit db postgres up

# 2. Create / clone the Symfony project at ./my-app

# 3. Scaffold env + fix perms
shimkit framework symfony env  --yes --db postgres ./my-app
shimkit framework symfony perms --yes ./my-app

# 4. Run migrations + clear cache
shimkit framework symfony console --project ./my-app \
    -- doctrine:database:create
shimkit framework symfony console --project ./my-app \
    -- doctrine:migrations:migrate --no-interaction
shimkit framework symfony cache-clear --env dev ./my-app

Stats

  • Tests: 1044 → 1070 (+26)
  • Gates: pytest, ruff, mypy strict — all green
  • New optional extras: 0

Upgrading

uv tool upgrade shimkit
pipx upgrade shimkit

Laravel users see no behavioural change. To start using the Symfony recipe, just invoke shimkit framework symfony --help.