Commits
Tarun Sukhani authored b25ce341157
feat: 14 new plugin tasks + scaffold UX + -P override semantics (PF-90) Brings the Gradle plugin to feature parity with the python CLI for all commands the user has flagged as needed. Plugin file grew from ~480 to ~1245 lines; user-facing task count went from 6 to 20. Scaffold UX (build.gradle.kts): - playNewApp -Pdest now optional, defaults to <cwd>/<name> mirroring python's cwd-relative \`play new myapp\` behavior - Generated build.gradle.kts defaults to modules(\"docviewer\") so the framework welcome page renders correctly (matches python's auto-add of docviewer in dev mode) - New -Pfrontend flag scaffolds the Nuxt 3 frontend at <app>/frontend/, moves ApiController.java into app/controllers/, patches conf/routes with /api/status, mirrors python's setup_nuxt_frontend exactly Command parity (Play1Plugin.kt): - playSecret: rotate the application secret in certs/.env - playClean: delete tmp/ - playEvolutions [-Pmode=apply|resolve|markApplied]: DB schema runner - playVersion, playClasspath: inspection tools - playEnableHttps [-Pregenerate], playDisableHttps: TLS cert lifecycle (mkcert preferred, openssl fallback; respects user customizations via the comment/uncomment-only contract from the python) - playStart/Stop/Restart/Pid/Out/Status: daemon control via ProcessHandle (Java 9+) and ProcessBuilder - playJavadoc [-Plinks]: javadoc with module sources included - playModulesInfo: mirror of python's \`play modules\` listing - -Poutput flag on playDist for custom zip output path Plugin-level architecture changes: - ext.playId / ext.httpPort now honor -PplayId / -PhttpPort via afterEvaluate. Precedence: -P > DSL set > convention default. Matches python's --option > conf precedence. - Refactored playClasspathFor() helper used by all JVM tasks (playRun/Test/Precompile + playStart/Restart + playAutotest + playJavadoc + playClasspath) -- eliminates duplication - Hoisted loadDotEnv to top-level fn for reuse across tasks - registerPlayJvmTask gained a mainClass parameter so playEvolutions can use play.db.Evolutions instead of play.server.Server - Added missing dependsOn(\"extractPlayModules\") to playStart, playRestart, playJavadoc -- without it, modules wouldn't be on disk before the JVM started, causing the welcome page to render with broken docviewer-served assets Intentionally skipped python commands: antify (Ant world is gone), id (per-checkout id file edge case), check (release-feed nag for upstream playframework.com), idealize (IntelliJ Gradle import handles), modulesrepo (playframework.com module repo, fork doesn't use). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>