mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2026-09-03 05:10:16 +03:00
# Description of Changes - Added internal `_generate` tasks for frontend and engine tool-model generation. - Kept the public `tool-models` tasks responsible for dependency installation and Swagger generation. - Separated environment preparation from the actual model generation commands. - This allows higher-level tasks to prepare the OpenAPI specification once and invoke both generators without repeating the backend setup. --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have run `task check` to verify linters, typechecks, and tests pass - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#7-testing) for more details.
200 lines
7.2 KiB
YAML
200 lines
7.2 KiB
YAML
version: '3'
|
|
|
|
# Gradle invocation strategy:
|
|
# - Linux/macOS: `./gradlew` runs the POSIX shell wrapper natively.
|
|
# - Windows: `cmd /c ".\gradlew.bat ..."` invokes the .bat wrapper through
|
|
# cmd.exe so it inherits the user's Windows-side `JAVA_HOME`
|
|
# and PATH. Routing through `bash gradlew` on Windows ends up
|
|
# under WSL or Git-Bash, neither of which inherits
|
|
# Adoptium/Temurin's default Windows-only Java env - gradlew
|
|
# then errors with "JAVA_HOME is not set and no 'java' command
|
|
# could be found".
|
|
#
|
|
# The entire `.\gradlew.bat ...` payload is double-quoted so
|
|
# the leading `.\` survives mvdan/sh's POSIX backslash
|
|
# stripping; cmd.exe also requires `.\` (not bare `gradlew.bat`)
|
|
# because modern Windows excludes cwd from cmd's search path.
|
|
|
|
tasks:
|
|
dev:
|
|
desc: "Start backend dev server"
|
|
cmds:
|
|
- task: dev:proprietary
|
|
vars:
|
|
PORT: '{{.PORT}}'
|
|
AIENGINE_URL: '{{.AIENGINE_URL}}'
|
|
AIENGINE_ENABLED: '{{.AIENGINE_ENABLED}}'
|
|
AIENGINE_TIMEOUTSECONDS: '{{.AIENGINE_TIMEOUTSECONDS}}'
|
|
SECURITY_ENABLELOGIN: '{{.SECURITY_ENABLELOGIN}}'
|
|
|
|
dev:proprietary:
|
|
desc: "Start backend dev server in proprietary mode"
|
|
# `dotenv:` reads from the root Taskfile's directory (".") because this
|
|
# subtaskfile is included with `dir: .`. Local overrides in
|
|
# .env.proprietary.local win over the committed .env.proprietary defaults.
|
|
dotenv: ['app/.env.proprietary.local', 'app/.env.proprietary']
|
|
ignore_error: true
|
|
vars:
|
|
PORT: '{{.PORT | default "8080"}}'
|
|
AIENGINE_URL: '{{.AIENGINE_URL | default ""}}'
|
|
AIENGINE_ENABLED: '{{.AIENGINE_ENABLED | default "false"}}'
|
|
AIENGINE_TIMEOUTSECONDS: '{{.AIENGINE_TIMEOUTSECONDS | default "120"}}'
|
|
SECURITY_ENABLELOGIN: '{{.SECURITY_ENABLELOGIN | default ""}}'
|
|
env:
|
|
SERVER_PORT: '{{.PORT}}'
|
|
cmds:
|
|
- cmd: '{{if .AIENGINE_URL}}AIENGINE_URL={{.AIENGINE_URL}} AIENGINE_ENABLED={{.AIENGINE_ENABLED}} AIENGINE_TIMEOUTSECONDS={{.AIENGINE_TIMEOUTSECONDS}} {{end}}{{if .SECURITY_ENABLELOGIN}}SECURITY_ENABLELOGIN={{.SECURITY_ENABLELOGIN}} {{end}}cmd /c ".\gradlew.bat :stirling-pdf:bootRun"'
|
|
platforms: [windows]
|
|
- cmd: '{{if .AIENGINE_URL}}AIENGINE_URL={{.AIENGINE_URL}} AIENGINE_ENABLED={{.AIENGINE_ENABLED}} AIENGINE_TIMEOUTSECONDS={{.AIENGINE_TIMEOUTSECONDS}} {{end}}{{if .SECURITY_ENABLELOGIN}}SECURITY_ENABLELOGIN={{.SECURITY_ENABLELOGIN}} {{end}}./gradlew :stirling-pdf:bootRun'
|
|
platforms: [linux, darwin]
|
|
|
|
dev:bundled:
|
|
desc: "Clean + bootRun with frontend bundled into the backend (single :8080 server)"
|
|
ignore_error: true
|
|
cmds:
|
|
- cmd: cmd /c ".\gradlew.bat clean bootRun -PbuildWithFrontend=true"
|
|
platforms: [windows]
|
|
- cmd: ./gradlew clean bootRun -PbuildWithFrontend=true
|
|
platforms: [linux, darwin]
|
|
|
|
dev:saas:
|
|
desc: "Start backend in SaaS flavor against Supabase"
|
|
# `dotenv:` reads from the root Taskfile's directory (".") because this
|
|
# subtaskfile is included with `dir: .`.
|
|
dotenv: ['app/.env.saas.local', 'app/.env.saas']
|
|
ignore_error: true
|
|
vars:
|
|
PORT: '{{.PORT | default "8080"}}'
|
|
# Override to "" to run the pure `saas` profile against your own SAAS_DB_*.
|
|
PROFILES: '{{.PROFILES | default "dev"}}'
|
|
AIENGINE_URL: '{{.AIENGINE_URL | default ""}}'
|
|
AIENGINE_ENABLED: '{{.AIENGINE_ENABLED | default "false"}}'
|
|
AIENGINE_TIMEOUTSECONDS: '{{.AIENGINE_TIMEOUTSECONDS | default "120"}}'
|
|
env:
|
|
SERVER_PORT: '{{.PORT}}'
|
|
STIRLING_FLAVOR: saas
|
|
AIENGINE_URL: '{{.AIENGINE_URL}}'
|
|
AIENGINE_ENABLED: '{{.AIENGINE_ENABLED}}'
|
|
AIENGINE_TIMEOUTSECONDS: '{{.AIENGINE_TIMEOUTSECONDS}}'
|
|
cmds:
|
|
- cmd: cmd /c ".\gradlew.bat :stirling-pdf:bootRun {{if .PROFILES}}--args=\"--spring.profiles.include={{.PROFILES}}\"{{end}}"
|
|
platforms: [windows]
|
|
- cmd: ./gradlew :stirling-pdf:bootRun {{if .PROFILES}}--args='--spring.profiles.include={{.PROFILES}}'{{end}}
|
|
platforms: [linux, darwin]
|
|
|
|
build:
|
|
desc: "Full backend build"
|
|
cmds:
|
|
- cmd: cmd /c ".\gradlew.bat clean build"
|
|
platforms: [windows]
|
|
- cmd: ./gradlew clean build
|
|
platforms: [linux, darwin]
|
|
|
|
build:fast:
|
|
desc: "Build without tests"
|
|
cmds:
|
|
- cmd: cmd /c ".\gradlew.bat clean build -x test"
|
|
platforms: [windows]
|
|
- cmd: ./gradlew clean build -x test
|
|
platforms: [linux, darwin]
|
|
|
|
build:ci:
|
|
desc: "Build for CI (formatting checked separately)"
|
|
cmds:
|
|
- cmd: cmd /c ".\gradlew.bat build -PnoSpotless"
|
|
platforms: [windows]
|
|
- cmd: ./gradlew build -PnoSpotless
|
|
platforms: [linux, darwin]
|
|
|
|
test:
|
|
desc: "Run backend tests"
|
|
cmds:
|
|
- cmd: cmd /c ".\gradlew.bat test"
|
|
platforms: [windows]
|
|
- cmd: ./gradlew test
|
|
platforms: [linux, darwin]
|
|
|
|
test:force:
|
|
desc: "Run backend tests, ignoring cached results"
|
|
aliases: [test:no-cache]
|
|
cmds:
|
|
- cmd: cmd /c ".\gradlew.bat cleanTest test --no-build-cache"
|
|
platforms: [windows]
|
|
- cmd: ./gradlew cleanTest test --no-build-cache
|
|
platforms: [linux, darwin]
|
|
|
|
format:
|
|
desc: "Auto-fix code formatting"
|
|
cmds:
|
|
- cmd: cmd /c ".\gradlew.bat spotlessApply"
|
|
platforms: [windows]
|
|
- cmd: ./gradlew spotlessApply
|
|
platforms: [linux, darwin]
|
|
|
|
format:check:
|
|
desc: "Check code formatting"
|
|
cmds:
|
|
- cmd: cmd /c ".\gradlew.bat spotlessCheck"
|
|
platforms: [windows]
|
|
- cmd: ./gradlew spotlessCheck
|
|
platforms: [linux, darwin]
|
|
|
|
fix:
|
|
desc: "Auto-fix backend"
|
|
cmds:
|
|
- task: format
|
|
|
|
swagger:
|
|
desc: "Generate OpenAPI docs"
|
|
run: once
|
|
cmds:
|
|
- cmd: cmd /c ".\gradlew.bat :stirling-pdf:copySwaggerDoc"
|
|
platforms: [windows]
|
|
- cmd: ./gradlew :stirling-pdf:copySwaggerDoc
|
|
platforms: [linux, darwin]
|
|
sources:
|
|
- app/core/src/main/java/**/*.java
|
|
- app/proprietary/src/main/java/**/*.java
|
|
- app/common/src/main/java/**/*.java
|
|
generates:
|
|
- SwaggerDoc.json
|
|
|
|
check:
|
|
desc: "Backend quality gate"
|
|
cmds:
|
|
- task: format:check
|
|
- task: test
|
|
|
|
version:
|
|
desc: "Print project version"
|
|
silent: true
|
|
cmds:
|
|
- cmd: cmd /c ".\gradlew.bat printVersion --quiet" | tail -1
|
|
platforms: [windows]
|
|
- cmd: ./gradlew printVersion --quiet | tail -1
|
|
platforms: [linux, darwin]
|
|
|
|
licenses:check:
|
|
desc: "Check dependency licenses"
|
|
cmds:
|
|
- cmd: cmd /c ".\gradlew.bat checkLicense --no-parallel"
|
|
platforms: [windows]
|
|
- cmd: ./gradlew checkLicense --no-parallel
|
|
platforms: [linux, darwin]
|
|
|
|
licenses:generate:
|
|
desc: "Check and generate dependency license report"
|
|
cmds:
|
|
- cmd: cmd /c ".\gradlew.bat checkLicense generateLicenseReport --no-parallel"
|
|
platforms: [windows]
|
|
- cmd: ./gradlew checkLicense generateLicenseReport --no-parallel
|
|
platforms: [linux, darwin]
|
|
|
|
clean:
|
|
desc: "Clean build artifacts"
|
|
cmds:
|
|
- cmd: cmd /c ".\gradlew.bat clean"
|
|
platforms: [windows]
|
|
- cmd: ./gradlew clean
|
|
platforms: [linux, darwin]
|