mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-08-27 06:39:24 +00:00
gradle path to /app
This commit is contained in:
parent
3d1b5890c7
commit
57cf5d4812
@ -12,13 +12,13 @@ set -e
|
|||||||
# Instructions for future developers:
|
# Instructions for future developers:
|
||||||
#
|
#
|
||||||
# - To start the application, use:
|
# - To start the application, use:
|
||||||
# ./gradlew bootRun --no-daemon -Dspring-boot.run.fork=true -Dserver.address=0.0.0.0
|
# cd app && ./gradlew bootRun --no-daemon -Dspring-boot.run.fork=true -Dserver.address=0.0.0.0
|
||||||
#
|
#
|
||||||
# - To run tests, use:
|
# - To run tests, use:
|
||||||
# ./gradlew test
|
# cd app && ./gradlew test
|
||||||
#
|
#
|
||||||
# - To build the project, use:
|
# - To build the project, use:
|
||||||
# ./gradlew build
|
# cd app && ./gradlew build
|
||||||
#
|
#
|
||||||
# - For running pre-commit hooks (if configured), use:
|
# - For running pre-commit hooks (if configured), use:
|
||||||
# pre-commit run --all-files
|
# pre-commit run --all-files
|
||||||
@ -28,7 +28,7 @@ set -e
|
|||||||
|
|
||||||
echo "Devcontainer started successfully!"
|
echo "Devcontainer started successfully!"
|
||||||
|
|
||||||
VERSION=$(grep "^version =" build.gradle | awk -F'"' '{print $2}')
|
VERSION=$(grep "^version =" app/build.gradle | awk -F'"' '{print $2}')
|
||||||
GRADLE_VERSION=$(gradle -version | grep "^Gradle " | awk '{print $2}')
|
GRADLE_VERSION=$(gradle -version | grep "^Gradle " | awk '{print $2}')
|
||||||
GRADLE_PATH=$(which gradle)
|
GRADLE_PATH=$(which gradle)
|
||||||
JAVA_VERSION=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')
|
JAVA_VERSION=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')
|
||||||
|
10
.github/labeler-config-srvaroa.yml
vendored
10
.github/labeler-config-srvaroa.yml
vendored
@ -147,11 +147,11 @@ labels:
|
|||||||
|
|
||||||
- label: 'Gradle'
|
- label: 'Gradle'
|
||||||
files:
|
files:
|
||||||
- 'gradle/.*'
|
- 'app/gradle/.*'
|
||||||
- 'gradlew'
|
- 'app/gradlew'
|
||||||
- 'gradlew.bat'
|
- 'app/gradlew.bat'
|
||||||
- 'settings.gradle'
|
- 'app/settings.gradle'
|
||||||
- 'build.gradle'
|
- 'app/build.gradle'
|
||||||
- 'app/common/build.gradle'
|
- 'app/common/build.gradle'
|
||||||
- 'app/proprietary/build.gradle'
|
- 'app/proprietary/build.gradle'
|
||||||
- 'app/core/build.gradle'
|
- 'app/core/build.gradle'
|
||||||
|
@ -188,7 +188,7 @@ jobs:
|
|||||||
else
|
else
|
||||||
export DISABLE_ADDITIONAL_FEATURES=false
|
export DISABLE_ADDITIONAL_FEATURES=false
|
||||||
fi
|
fi
|
||||||
./gradlew clean build
|
cd app && ./gradlew clean build
|
||||||
env:
|
env:
|
||||||
STIRLING_PDF_DESKTOP_UI: false
|
STIRLING_PDF_DESKTOP_UI: false
|
||||||
|
|
||||||
|
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@ -39,7 +39,7 @@ jobs:
|
|||||||
distribution: "temurin"
|
distribution: "temurin"
|
||||||
|
|
||||||
- name: Build with Gradle and spring security ${{ matrix.spring-security }}
|
- name: Build with Gradle and spring security ${{ matrix.spring-security }}
|
||||||
run: ./gradlew clean build
|
run: cd app && ./gradlew clean build
|
||||||
env:
|
env:
|
||||||
DISABLE_ADDITIONAL_FEATURES: ${{ matrix.spring-security }}
|
DISABLE_ADDITIONAL_FEATURES: ${{ matrix.spring-security }}
|
||||||
|
|
||||||
@ -106,7 +106,7 @@ jobs:
|
|||||||
- uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
|
- uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
|
||||||
|
|
||||||
- name: Generate OpenAPI documentation
|
- name: Generate OpenAPI documentation
|
||||||
run: ./gradlew :stirling-pdf:generateOpenApiDocs
|
run: cd app && ./gradlew :stirling-pdf:generateOpenApiDocs
|
||||||
|
|
||||||
- name: Upload OpenAPI Documentation
|
- name: Upload OpenAPI Documentation
|
||||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
@ -132,7 +132,7 @@ jobs:
|
|||||||
distribution: "adopt"
|
distribution: "adopt"
|
||||||
|
|
||||||
- name: check the licenses for compatibility
|
- name: check the licenses for compatibility
|
||||||
run: ./gradlew clean checkLicense
|
run: cd app && ./gradlew clean checkLicense
|
||||||
|
|
||||||
- name: FAILED - check the licenses for compatibility
|
- name: FAILED - check the licenses for compatibility
|
||||||
if: failure()
|
if: failure()
|
||||||
|
2
.github/workflows/licenses-update.yml
vendored
2
.github/workflows/licenses-update.yml
vendored
@ -45,7 +45,7 @@ jobs:
|
|||||||
uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
|
uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
|
||||||
|
|
||||||
- name: Check licenses for compatibility
|
- name: Check licenses for compatibility
|
||||||
run: ./gradlew clean checkLicense
|
run: cd app && ./gradlew clean checkLicense
|
||||||
|
|
||||||
- name: Upload artifact on failure
|
- name: Upload artifact on failure
|
||||||
if: failure()
|
if: failure()
|
||||||
|
10
.github/workflows/multiOSReleases.yml
vendored
10
.github/workflows/multiOSReleases.yml
vendored
@ -37,14 +37,14 @@ jobs:
|
|||||||
- name: Get version number
|
- name: Get version number
|
||||||
id: versionNumber
|
id: versionNumber
|
||||||
run: |
|
run: |
|
||||||
VERSION=$(./gradlew printVersion --quiet | tail -1)
|
VERSION=$(cd app && ./gradlew printVersion --quiet | tail -1)
|
||||||
echo "versionNumber=$VERSION" >> $GITHUB_OUTPUT
|
echo "versionNumber=$VERSION" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
# ✅ Get Mac-specific version from Gradle
|
# ✅ Get Mac-specific version from Gradle
|
||||||
- name: Get version number mac
|
- name: Get version number mac
|
||||||
id: versionNumberMac
|
id: versionNumberMac
|
||||||
run: |
|
run: |
|
||||||
VERSION_MAC=$(./gradlew printMacVersion --quiet | tail -1)
|
VERSION_MAC=$(cd app && ./gradlew printMacVersion --quiet | tail -1)
|
||||||
echo "versionNumberMac=$VERSION_MAC" >> $GITHUB_OUTPUT
|
echo "versionNumberMac=$VERSION_MAC" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
build-portable:
|
build-portable:
|
||||||
@ -77,7 +77,7 @@ jobs:
|
|||||||
gradle-version: 8.14
|
gradle-version: 8.14
|
||||||
|
|
||||||
- name: Generate jar (Disable Security=${{ matrix.disable_security }})
|
- name: Generate jar (Disable Security=${{ matrix.disable_security }})
|
||||||
run: ./gradlew clean createExe
|
run: cd app && ./gradlew clean createExe
|
||||||
env:
|
env:
|
||||||
DISABLE_ADDITIONAL_FEATURES: ${{ matrix.disable_security }}
|
DISABLE_ADDITIONAL_FEATURES: ${{ matrix.disable_security }}
|
||||||
STIRLING_PDF_DESKTOP_UI: false
|
STIRLING_PDF_DESKTOP_UI: false
|
||||||
@ -173,7 +173,7 @@ jobs:
|
|||||||
|
|
||||||
# Build installer
|
# Build installer
|
||||||
- name: Build Installer
|
- name: Build Installer
|
||||||
run: ./gradlew build jpackage -x test --info
|
run: cd app && ./gradlew build jpackage -x test --info
|
||||||
env:
|
env:
|
||||||
DISABLE_ADDITIONAL_FEATURES: true
|
DISABLE_ADDITIONAL_FEATURES: true
|
||||||
STIRLING_PDF_DESKTOP_UI: true
|
STIRLING_PDF_DESKTOP_UI: true
|
||||||
@ -194,7 +194,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Build project and run jpackage (x86_64)
|
- name: Build project and run jpackage (x86_64)
|
||||||
if: matrix.os == 'macos-latest'
|
if: matrix.os == 'macos-latest'
|
||||||
run: arch -x86_64 ./gradlew jpackageMacX64
|
run: cd app && arch -x86_64 ./gradlew jpackageMacX64
|
||||||
|
|
||||||
# Rename and collect artifacts based on OS
|
# Rename and collect artifacts based on OS
|
||||||
- name: Prepare artifacts
|
- name: Prepare artifacts
|
||||||
|
4
.github/workflows/push-docker.yml
vendored
4
.github/workflows/push-docker.yml
vendored
@ -35,7 +35,7 @@ jobs:
|
|||||||
gradle-version: 8.14
|
gradle-version: 8.14
|
||||||
|
|
||||||
- name: Run Gradle Command
|
- name: Run Gradle Command
|
||||||
run: ./gradlew clean build
|
run: cd app && ./gradlew clean build
|
||||||
env:
|
env:
|
||||||
DISABLE_ADDITIONAL_FEATURES: true
|
DISABLE_ADDITIONAL_FEATURES: true
|
||||||
STIRLING_PDF_DESKTOP_UI: false
|
STIRLING_PDF_DESKTOP_UI: false
|
||||||
@ -52,7 +52,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Get version number
|
- name: Get version number
|
||||||
id: versionNumber
|
id: versionNumber
|
||||||
run: echo "versionNumber=$(./gradlew printVersion --quiet | tail -1)" >> $GITHUB_OUTPUT
|
run: echo "versionNumber=$(cd app && ./gradlew printVersion --quiet | tail -1)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
- name: Login to Docker Hub
|
||||||
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
||||||
|
2
.github/workflows/releaseArtifacts.yml
vendored
2
.github/workflows/releaseArtifacts.yml
vendored
@ -40,7 +40,7 @@ jobs:
|
|||||||
gradle-version: 8.14
|
gradle-version: 8.14
|
||||||
|
|
||||||
- name: Generate jar (Disable Security=${{ matrix.disable_security }})
|
- name: Generate jar (Disable Security=${{ matrix.disable_security }})
|
||||||
run: ./gradlew clean createExe
|
run: cd app && ./gradlew clean createExe
|
||||||
env:
|
env:
|
||||||
DISABLE_ADDITIONAL_FEATURES: ${{ matrix.disable_security }}
|
DISABLE_ADDITIONAL_FEATURES: ${{ matrix.disable_security }}
|
||||||
STIRLING_PDF_DESKTOP_UI: false
|
STIRLING_PDF_DESKTOP_UI: false
|
||||||
|
2
.github/workflows/sonarqube.yml
vendored
2
.github/workflows/sonarqube.yml
vendored
@ -36,7 +36,7 @@ jobs:
|
|||||||
DISABLE_ADDITIONAL_FEATURES: false
|
DISABLE_ADDITIONAL_FEATURES: false
|
||||||
STIRLING_PDF_DESKTOP_UI: true
|
STIRLING_PDF_DESKTOP_UI: true
|
||||||
run: |
|
run: |
|
||||||
./gradlew clean build sonar \
|
cd app && ./gradlew clean build sonar \
|
||||||
-Dsonar.projectKey=Stirling-Tools_Stirling-PDF \
|
-Dsonar.projectKey=Stirling-Tools_Stirling-PDF \
|
||||||
-Dsonar.organization=stirling-tools \
|
-Dsonar.organization=stirling-tools \
|
||||||
-Dsonar.host.url=https://sonarcloud.io \
|
-Dsonar.host.url=https://sonarcloud.io \
|
||||||
|
6
.github/workflows/swagger.yml
vendored
6
.github/workflows/swagger.yml
vendored
@ -29,17 +29,17 @@ jobs:
|
|||||||
- uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
|
- uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
|
||||||
|
|
||||||
- name: Generate Swagger documentation
|
- name: Generate Swagger documentation
|
||||||
run: ./gradlew :stirling-pdf:generateOpenApiDocs
|
run: cd app && ./gradlew :stirling-pdf:generateOpenApiDocs
|
||||||
|
|
||||||
- name: Upload Swagger Documentation to SwaggerHub
|
- name: Upload Swagger Documentation to SwaggerHub
|
||||||
run: ./gradlew swaggerhubUpload
|
run: cd app && ./gradlew swaggerhubUpload
|
||||||
env:
|
env:
|
||||||
SWAGGERHUB_API_KEY: ${{ secrets.SWAGGERHUB_API_KEY }}
|
SWAGGERHUB_API_KEY: ${{ secrets.SWAGGERHUB_API_KEY }}
|
||||||
SWAGGERHUB_USER: "Frooodle"
|
SWAGGERHUB_USER: "Frooodle"
|
||||||
|
|
||||||
- name: Get version number
|
- name: Get version number
|
||||||
id: versionNumber
|
id: versionNumber
|
||||||
run: echo "versionNumber=$(./gradlew printVersion --quiet | tail -1)" >> $GITHUB_OUTPUT
|
run: echo "versionNumber=$(cd app && ./gradlew printVersion --quiet | tail -1)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Set API version as published and default on SwaggerHub
|
- name: Set API version as published and default on SwaggerHub
|
||||||
run: |
|
run: |
|
||||||
|
2
.github/workflows/testdriver.yml
vendored
2
.github/workflows/testdriver.yml
vendored
@ -26,7 +26,7 @@ jobs:
|
|||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
|
|
||||||
- name: Build with Gradle
|
- name: Build with Gradle
|
||||||
run: ./gradlew clean build
|
run: cd app && ./gradlew clean build
|
||||||
env:
|
env:
|
||||||
DISABLE_ADDITIONAL_FEATURES: true
|
DISABLE_ADDITIONAL_FEATURES: true
|
||||||
|
|
||||||
|
6
.gitignore
vendored
6
.gitignore
vendored
@ -33,6 +33,8 @@ SwaggerDoc.json
|
|||||||
# Gradle
|
# Gradle
|
||||||
.gradle
|
.gradle
|
||||||
.lock
|
.lock
|
||||||
|
/app/.gradle
|
||||||
|
/app/build
|
||||||
|
|
||||||
# External tool builders
|
# External tool builders
|
||||||
.externalToolBuilders/
|
.externalToolBuilders/
|
||||||
@ -195,5 +197,9 @@ id_ed25519.pub
|
|||||||
|
|
||||||
**/jcef-bundle/
|
**/jcef-bundle/
|
||||||
|
|
||||||
|
# Database backups
|
||||||
|
**/db/backup/
|
||||||
|
*.db.bak
|
||||||
|
|
||||||
# node_modules
|
# node_modules
|
||||||
node_modules/
|
node_modules/
|
||||||
|
@ -1,15 +1,6 @@
|
|||||||
# Build the application
|
# Build the application
|
||||||
FROM gradle:8.14-jdk21 AS build
|
FROM gradle:8.14-jdk21 AS build
|
||||||
|
|
||||||
COPY build.gradle .
|
|
||||||
COPY settings.gradle .
|
|
||||||
COPY gradlew .
|
|
||||||
COPY gradle gradle/
|
|
||||||
COPY app/core/build.gradle core/.
|
|
||||||
COPY app/common/build.gradle common/.
|
|
||||||
COPY app/proprietary/build.gradle proprietary/.
|
|
||||||
RUN ./gradlew build -x spotlessApply -x spotlessCheck -x test -x sonarqube || return 0
|
|
||||||
|
|
||||||
# Set the working directory
|
# Set the working directory
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
@ -17,7 +8,7 @@ WORKDIR /app
|
|||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# Build the application with DISABLE_ADDITIONAL_FEATURES=false
|
# Build the application with DISABLE_ADDITIONAL_FEATURES=false
|
||||||
RUN DISABLE_ADDITIONAL_FEATURES=false \
|
RUN cd app && DISABLE_ADDITIONAL_FEATURES=false \
|
||||||
STIRLING_PDF_DESKTOP_UI=false \
|
STIRLING_PDF_DESKTOP_UI=false \
|
||||||
./gradlew clean build -x spotlessApply -x spotlessCheck -x test -x sonarqube
|
./gradlew clean build -x spotlessApply -x spotlessCheck -x test -x sonarqube
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ allprojects {
|
|||||||
}
|
}
|
||||||
|
|
||||||
tasks.register('writeVersion') {
|
tasks.register('writeVersion') {
|
||||||
def propsFile = file("$projectDir/app/common/src/main/resources/version.properties")
|
def propsFile = file("$projectDir/common/src/main/resources/version.properties")
|
||||||
def propsDir = propsFile.parentFile
|
def propsDir = propsFile.parentFile
|
||||||
|
|
||||||
doLast {
|
doLast {
|
||||||
@ -209,7 +209,7 @@ tasks.withType(JavaCompile).configureEach {
|
|||||||
licenseReport {
|
licenseReport {
|
||||||
projects = [project]
|
projects = [project]
|
||||||
renderers = [new JsonReportRenderer()]
|
renderers = [new JsonReportRenderer()]
|
||||||
allowedLicensesFile = project.layout.projectDirectory.file("app/allowed-licenses.json").asFile
|
allowedLicensesFile = project.layout.projectDirectory.file("allowed-licenses.json").asFile
|
||||||
outputDir = project.layout.buildDirectory.dir("reports/dependency-license").get().asFile.path
|
outputDir = project.layout.buildDirectory.dir("reports/dependency-license").get().asFile.path
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,14 +261,14 @@ static def getMacVersion(String version) {
|
|||||||
|
|
||||||
jpackage {
|
jpackage {
|
||||||
dependsOn(":stirling-pdf:bootJar")
|
dependsOn(":stirling-pdf:bootJar")
|
||||||
input = layout.projectDirectory.dir("app/core/build/libs")
|
input = layout.projectDirectory.dir("core/build/libs")
|
||||||
destination = layout.projectDirectory.dir("build/jpackage")
|
destination = layout.projectDirectory.dir("build/jpackage")
|
||||||
mainJar = "Stirling-PDF-${project.version}.jar"
|
mainJar = "Stirling-PDF-${project.version}.jar"
|
||||||
appName = "Stirling PDF"
|
appName = "Stirling PDF"
|
||||||
appVersion = project.version
|
appVersion = project.version
|
||||||
vendor = "Stirling PDF Inc"
|
vendor = "Stirling PDF Inc"
|
||||||
appDescription = "Stirling PDF - Your Local PDF Editor"
|
appDescription = "Stirling PDF - Your Local PDF Editor"
|
||||||
icon = layout.projectDirectory.file("app/core/src/main/resources/static/favicon.ico")
|
icon = layout.projectDirectory.file("core/src/main/resources/static/favicon.ico")
|
||||||
verbose = true
|
verbose = true
|
||||||
// mainClass = "org.springframework.boot.loader.launch.JarLauncher"
|
// mainClass = "org.springframework.boot.loader.launch.JarLauncher"
|
||||||
|
|
||||||
@ -310,7 +310,7 @@ jpackage {
|
|||||||
// MacOS-specific configuration
|
// MacOS-specific configuration
|
||||||
mac {
|
mac {
|
||||||
appVersion = getMacVersion(project.version.toString())
|
appVersion = getMacVersion(project.version.toString())
|
||||||
icon = layout.projectDirectory.file("app/core/src/main/resources/static/favicon.icns")
|
icon = layout.projectDirectory.file("core/src/main/resources/static/favicon.icns")
|
||||||
type = ImageType.DMG
|
type = ImageType.DMG
|
||||||
macPackageIdentifier = "Stirling PDF"
|
macPackageIdentifier = "Stirling PDF"
|
||||||
macPackageName = "Stirling PDF"
|
macPackageName = "Stirling PDF"
|
||||||
@ -332,7 +332,7 @@ jpackage {
|
|||||||
// Linux-specific configuration
|
// Linux-specific configuration
|
||||||
linux {
|
linux {
|
||||||
appVersion = project.version
|
appVersion = project.version
|
||||||
icon = layout.projectDirectory.file("app/core/src/main/resources/static/favicon.png")
|
icon = layout.projectDirectory.file("core/src/main/resources/static/favicon.png")
|
||||||
type = ImageType.DEB // Can also use "rpm" for Red Hat-based systems
|
type = ImageType.DEB // Can also use "rpm" for Red Hat-based systems
|
||||||
|
|
||||||
// Debian package configuration
|
// Debian package configuration
|
||||||
@ -404,12 +404,12 @@ tasks.register('jpackageMacX64') {
|
|||||||
commandLine 'jpackage',
|
commandLine 'jpackage',
|
||||||
'--type', 'dmg',
|
'--type', 'dmg',
|
||||||
'--name', 'Stirling PDF (x86_64)',
|
'--name', 'Stirling PDF (x86_64)',
|
||||||
'--input', 'app/core/build/libs',
|
'--input', 'core/build/libs',
|
||||||
'--main-jar', "Stirling-PDF-${project.version}.jar",
|
'--main-jar', "Stirling-PDF-${project.version}.jar",
|
||||||
'--main-class', 'org.springframework.boot.loader.launch.JarLauncher',
|
'--main-class', 'org.springframework.boot.loader.launch.JarLauncher',
|
||||||
'--runtime-image', file(jrePath + "/zulu-17.jre/Contents/Home"),
|
'--runtime-image', file(jrePath + "/zulu-17.jre/Contents/Home"),
|
||||||
'--dest', 'build/jpackage/x86_64',
|
'--dest', 'build/jpackage/x86_64',
|
||||||
'--icon', 'app/core/src/main/resources/static/favicon.icns',
|
'--icon', 'core/src/main/resources/static/favicon.icns',
|
||||||
'--app-version', getMacVersion(project.version.toString()),
|
'--app-version', getMacVersion(project.version.toString()),
|
||||||
'--mac-package-name', 'Stirling PDF (x86_64)',
|
'--mac-package-name', 'Stirling PDF (x86_64)',
|
||||||
'--mac-package-identifier', 'Stirling PDF (x86_64)',
|
'--mac-package-identifier', 'Stirling PDF (x86_64)',
|
||||||
@ -495,7 +495,7 @@ tasks.register('cleanTempJre') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
launch4j {
|
launch4j {
|
||||||
icon = "${projectDir}/app/core/src/main/resources/static/favicon.ico"
|
icon = "${projectDir}/core/src/main/resources/static/favicon.ico"
|
||||||
|
|
||||||
outfile="Stirling-PDF.exe"
|
outfile="Stirling-PDF.exe"
|
||||||
|
|
@ -43,7 +43,11 @@ public class AutoJobAspect {
|
|||||||
// This aspect will run before any audit aspects due to @Order(0)
|
// This aspect will run before any audit aspects due to @Order(0)
|
||||||
// Extract parameters from the request and annotation
|
// Extract parameters from the request and annotation
|
||||||
boolean async = Boolean.parseBoolean(request.getParameter("async"));
|
boolean async = Boolean.parseBoolean(request.getParameter("async"));
|
||||||
log.debug("AutoJobAspect: Processing {} {} with async={}", request.getMethod(), request.getRequestURI(), async);
|
log.debug(
|
||||||
|
"AutoJobAspect: Processing {} {} with async={}",
|
||||||
|
request.getMethod(),
|
||||||
|
request.getRequestURI(),
|
||||||
|
async);
|
||||||
long timeout = autoJobPostMapping.timeout();
|
long timeout = autoJobPostMapping.timeout();
|
||||||
int retryCount = autoJobPostMapping.retryCount();
|
int retryCount = autoJobPostMapping.retryCount();
|
||||||
boolean trackProgress = autoJobPostMapping.trackProgress();
|
boolean trackProgress = autoJobPostMapping.trackProgress();
|
||||||
@ -219,10 +223,9 @@ public class AutoJobAspect {
|
|||||||
resourceWeight);
|
resourceWeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processes arguments in-place to handle file resolution and async file persistence.
|
* Processes arguments in-place to handle file resolution and async file persistence. This
|
||||||
* This approach avoids type mismatch issues by modifying the original objects directly.
|
* approach avoids type mismatch issues by modifying the original objects directly.
|
||||||
*
|
*
|
||||||
* @param originalArgs The original arguments
|
* @param originalArgs The original arguments
|
||||||
* @param async Whether this is an async operation
|
* @param async Whether this is an async operation
|
||||||
|
@ -30,8 +30,7 @@ public class JobResult {
|
|||||||
private String error;
|
private String error;
|
||||||
|
|
||||||
/** List of result files for jobs that produce files */
|
/** List of result files for jobs that produce files */
|
||||||
@JsonIgnore
|
@JsonIgnore private List<ResultFile> resultFiles;
|
||||||
private List<ResultFile> resultFiles;
|
|
||||||
|
|
||||||
/** Time when the job was created */
|
/** Time when the job was created */
|
||||||
private LocalDateTime createdAt;
|
private LocalDateTime createdAt;
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
package stirling.software.SPDF.controller.web;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public class ReactRoutingController {
|
||||||
|
|
||||||
|
@GetMapping("/{path:^(?!api|static|robots\\.txt|favicon\\.ico)[^\\.]*$}")
|
||||||
|
public String forwardRootPaths() {
|
||||||
|
return "forward:/index.html";
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/{path:^(?!api|static)[^\\.]*}/{subpath:^(?!.*\\.).*$}")
|
||||||
|
public String forwardNestedPaths() {
|
||||||
|
return "forward:/index.html";
|
||||||
|
}
|
||||||
|
}
|
0
gradlew → app/gradlew
vendored
Executable file → Normal file
0
gradlew → app/gradlew
vendored
Executable file → Normal file
0
gradlew.bat → app/gradlew.bat
vendored
0
gradlew.bat → app/gradlew.bat
vendored
@ -6,6 +6,6 @@ rootProject.name = 'Stirling PDF'
|
|||||||
|
|
||||||
include 'stirling-pdf', 'common', 'proprietary'
|
include 'stirling-pdf', 'common', 'proprietary'
|
||||||
|
|
||||||
project(':stirling-pdf').projectDir = file('app/core')
|
project(':stirling-pdf').projectDir = file('core')
|
||||||
project(':common' ).projectDir = file('app/common')
|
project(':common' ).projectDir = file('common')
|
||||||
project(':proprietary' ).projectDir = file('app/proprietary')
|
project(':proprietary' ).projectDir = file('proprietary')
|
@ -4,11 +4,11 @@ This file provides high-level instructions for Codex when modifying any files wi
|
|||||||
|
|
||||||
## 1. Code Style and Formatting
|
## 1. Code Style and Formatting
|
||||||
- Respect the `.editorconfig` settings located in the repository root. Java files use 4 spaces; HTML, JS, and Python generally use 2 spaces. Lines should end with `LF`.
|
- Respect the `.editorconfig` settings located in the repository root. Java files use 4 spaces; HTML, JS, and Python generally use 2 spaces. Lines should end with `LF`.
|
||||||
- Format Java code with `./gradlew spotlessApply` before committing.
|
- Format Java code with `cd app && ./gradlew spotlessApply` before committing.
|
||||||
- Review `DeveloperGuide.md` for project structure and design details before making significant changes.
|
- Review `DeveloperGuide.md` for project structure and design details before making significant changes.
|
||||||
|
|
||||||
## 2. Testing
|
## 2. Testing
|
||||||
- Run `./gradlew build` before committing changes to ensure the project compiles.
|
- Run `cd app && ./gradlew build` before committing changes to ensure the project compiles.
|
||||||
- If the build cannot complete due to environment restrictions, DO NOT COMMIT THE CHANGE
|
- If the build cannot complete due to environment restrictions, DO NOT COMMIT THE CHANGE
|
||||||
|
|
||||||
## 3. Commits
|
## 3. Commits
|
||||||
@ -16,7 +16,7 @@ This file provides high-level instructions for Codex when modifying any files wi
|
|||||||
- Ensure the working tree is clean (`git status`) before concluding your work.
|
- Ensure the working tree is clean (`git status`) before concluding your work.
|
||||||
|
|
||||||
## 4. Pull Requests
|
## 4. Pull Requests
|
||||||
- Summarize what was changed and why. Include build results from `./gradlew build` in the PR description.
|
- Summarize what was changed and why. Include build results from `cd app && ./gradlew build` in the PR description.
|
||||||
- Note that the code was generated with the assistance of AI.
|
- Note that the code was generated with the assistance of AI.
|
||||||
|
|
||||||
## 5. Translations
|
## 5. Translations
|
||||||
|
@ -176,7 +176,7 @@ Stirling-PDF uses different Docker images for various configurations. The build
|
|||||||
2. Build the project with Gradle:
|
2. Build the project with Gradle:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./gradlew clean build
|
cd app && ./gradlew clean build
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Build the Docker images:
|
3. Build the Docker images:
|
||||||
@ -243,7 +243,7 @@ To run Stirling-PDF locally:
|
|||||||
1. Compile and run the project using built-in IDE methods or by running:
|
1. Compile and run the project using built-in IDE methods or by running:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./gradlew bootRun
|
cd app && ./gradlew bootRun
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Access the application at `http://localhost:8080` in your web browser.
|
2. Access the application at `http://localhost:8080` in your web browser.
|
||||||
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
0
stirling/latest/config/custom_settings.yml
Normal file
0
stirling/latest/config/custom_settings.yml
Normal file
179
stirling/latest/config/settings.yml
Normal file
179
stirling/latest/config/settings.yml
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
#############################################################################################################
|
||||||
|
# Welcome to settings file from #
|
||||||
|
# ____ _____ ___ ____ _ ___ _ _ ____ ____ ____ _____ #
|
||||||
|
# / ___|_ _|_ _| _ \| | |_ _| \ | |/ ___| | _ \| _ \| ___| #
|
||||||
|
# \___ \ | | | || |_) | | | || \| | | _ _____| |_) | | | | |_ #
|
||||||
|
# ___) || | | || _ <| |___ | || |\ | |_| |_____| __/| |_| | _| #
|
||||||
|
# |____/ |_| |___|_| \_\_____|___|_| \_|\____| |_| |____/|_| #
|
||||||
|
# #
|
||||||
|
# Do not comment out any entry, it will be removed on next startup #
|
||||||
|
# If you want to override with environment parameter follow parameter naming SECURITY_INITIALLOGIN_USERNAME #
|
||||||
|
#############################################################################################################
|
||||||
|
|
||||||
|
security:
|
||||||
|
enableLogin: false # set to 'true' to enable login
|
||||||
|
csrfDisabled: false # set to 'true' to disable CSRF protection (not recommended for production)
|
||||||
|
loginAttemptCount: 5 # lock user account after 5 tries; when using e.g. Fail2Ban you can deactivate the function with -1
|
||||||
|
loginResetTimeMinutes: 120 # lock account for 2 hours after x attempts
|
||||||
|
loginMethod: all # Accepts values like 'all' and 'normal'(only Login with Username/Password), 'oauth2'(only Login with OAuth2) or 'saml2'(only Login with SAML2)
|
||||||
|
initialLogin:
|
||||||
|
username: '' # initial username for the first login
|
||||||
|
password: '' # initial password for the first login
|
||||||
|
oauth2:
|
||||||
|
enabled: false # set to 'true' to enable login (Note: enableLogin must also be 'true' for this to work)
|
||||||
|
client:
|
||||||
|
keycloak:
|
||||||
|
issuer: '' # URL of the Keycloak realm's OpenID Connect Discovery endpoint
|
||||||
|
clientId: '' # client ID for Keycloak OAuth2
|
||||||
|
clientSecret: '' # client secret for Keycloak OAuth2
|
||||||
|
scopes: openid, profile, email # scopes for Keycloak OAuth2
|
||||||
|
useAsUsername: preferred_username # field to use as the username for Keycloak OAuth2. Available options are: [email | name | given_name | family_name | preferred_name]
|
||||||
|
google:
|
||||||
|
clientId: '' # client ID for Google OAuth2
|
||||||
|
clientSecret: '' # client secret for Google OAuth2
|
||||||
|
scopes: email, profile # scopes for Google OAuth2
|
||||||
|
useAsUsername: email # field to use as the username for Google OAuth2. Available options are: [email | name | given_name | family_name]
|
||||||
|
github:
|
||||||
|
clientId: '' # client ID for GitHub OAuth2
|
||||||
|
clientSecret: '' # client secret for GitHub OAuth2
|
||||||
|
scopes: read:user # scope for GitHub OAuth2
|
||||||
|
useAsUsername: login # field to use as the username for GitHub OAuth2. Available options are: [email | login | name]
|
||||||
|
issuer: '' # set to any Provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) endpoint
|
||||||
|
clientId: '' # client ID from your Provider
|
||||||
|
clientSecret: '' # client secret from your Provider
|
||||||
|
autoCreateUser: true # set to 'true' to allow auto-creation of non-existing users
|
||||||
|
blockRegistration: false # set to 'true' to deny login with SSO without prior registration by an admin
|
||||||
|
useAsUsername: email # default is 'email'; custom fields can be used as the username
|
||||||
|
scopes: openid, profile, email # specify the scopes for which the application will request permissions
|
||||||
|
provider: google # set this to your OAuth Provider's name, e.g., 'google' or 'keycloak'
|
||||||
|
saml2:
|
||||||
|
enabled: false # Only enabled for paid enterprise clients (enterpriseEdition.enabled must be true)
|
||||||
|
provider: '' # The name of your Provider
|
||||||
|
autoCreateUser: true # set to 'true' to allow auto-creation of non-existing users
|
||||||
|
blockRegistration: false # set to 'true' to deny login with SSO without prior registration by an admin
|
||||||
|
registrationId: stirling # The name of your Service Provider (SP) app name. Should match the name in the path for your SSO & SLO URLs
|
||||||
|
idpMetadataUri: https://dev-XXXXXXXX.okta.com/app/externalKey/sso/saml/metadata # The uri for your Provider's metadata
|
||||||
|
idpSingleLoginUrl: https://dev-XXXXXXXX.okta.com/app/dev-XXXXXXXX_stirlingpdf_1/externalKey/sso/saml # The URL for initiating SSO. Provided by your Provider
|
||||||
|
idpSingleLogoutUrl: https://dev-XXXXXXXX.okta.com/app/dev-XXXXXXXX_stirlingpdf_1/externalKey/slo/saml # The URL for initiating SLO. Provided by your Provider
|
||||||
|
idpIssuer: '' # The ID of your Provider
|
||||||
|
idpCert: classpath:okta.cert # The certificate your Provider will use to authenticate your app's SAML authentication requests. Provided by your Provider
|
||||||
|
privateKey: classpath:saml-private-key.key # Your private key. Generated from your keypair
|
||||||
|
spCert: classpath:saml-public-cert.crt # Your signing certificate. Generated from your keypair
|
||||||
|
|
||||||
|
premium:
|
||||||
|
key: 00000000-0000-0000-0000-000000000000
|
||||||
|
enabled: false # Enable license key checks for pro/enterprise features
|
||||||
|
proFeatures:
|
||||||
|
database: true # Enable database features
|
||||||
|
SSOAutoLogin: false
|
||||||
|
CustomMetadata:
|
||||||
|
autoUpdateMetadata: false
|
||||||
|
author: username
|
||||||
|
creator: Stirling-PDF
|
||||||
|
producer: Stirling-PDF
|
||||||
|
googleDrive:
|
||||||
|
enabled: false
|
||||||
|
clientId: ''
|
||||||
|
apiKey: ''
|
||||||
|
appId: ''
|
||||||
|
enterpriseFeatures:
|
||||||
|
audit:
|
||||||
|
enabled: true # Enable audit logging
|
||||||
|
level: 2 # Audit logging level: 0=OFF, 1=BASIC, 2=STANDARD, 3=VERBOSE
|
||||||
|
retentionDays: 90 # Number of days to retain audit logs
|
||||||
|
|
||||||
|
mail:
|
||||||
|
enabled: false # set to 'true' to enable sending emails
|
||||||
|
host: smtp.example.com # SMTP server hostname
|
||||||
|
port: 587 # SMTP server port
|
||||||
|
username: '' # SMTP server username
|
||||||
|
password: '' # SMTP server password
|
||||||
|
from: '' # sender email address
|
||||||
|
|
||||||
|
legal:
|
||||||
|
termsAndConditions: https://www.stirlingpdf.com/terms-and-conditions # URL to the terms and conditions of your application (e.g. https://example.com/terms). Empty string to disable or filename to load from local file in static folder
|
||||||
|
privacyPolicy: https://www.stirlingpdf.com/privacy-policy # URL to the privacy policy of your application (e.g. https://example.com/privacy). Empty string to disable or filename to load from local file in static folder
|
||||||
|
accessibilityStatement: '' # URL to the accessibility statement of your application (e.g. https://example.com/accessibility). Empty string to disable or filename to load from local file in static folder
|
||||||
|
cookiePolicy: '' # URL to the cookie policy of your application (e.g. https://example.com/cookie). Empty string to disable or filename to load from local file in static folder
|
||||||
|
impressum: '' # URL to the impressum of your application (e.g. https://example.com/impressum). Empty string to disable or filename to load from local file in static folder
|
||||||
|
|
||||||
|
system:
|
||||||
|
defaultLocale: en-US # set the default language (e.g. 'de-DE', 'fr-FR', etc)
|
||||||
|
googlevisibility: false # 'true' to allow Google visibility (via robots.txt), 'false' to disallow
|
||||||
|
enableAlphaFunctionality: false # set to enable functionality which might need more testing before it fully goes live (this feature might make no changes)
|
||||||
|
showUpdate: false # see when a new update is available
|
||||||
|
showUpdateOnlyAdmin: false # only admins can see when a new update is available, depending on showUpdate it must be set to 'true'
|
||||||
|
customHTMLFiles: false # enable to have files placed in /customFiles/templates override the existing template HTML files
|
||||||
|
tessdataDir: /usr/share/tessdata # path to the directory containing the Tessdata files. This setting is relevant for Windows systems. For Windows users, this path should be adjusted to point to the appropriate directory where the Tessdata files are stored.
|
||||||
|
enableAnalytics: true # set to 'true' to enable analytics, set to 'false' to disable analytics; for enterprise users, this is set to true
|
||||||
|
enableUrlToPDF: false # Set to 'true' to enable URL to PDF, INTERNAL ONLY, known security issues, should not be used externally
|
||||||
|
disableSanitize: false # set to true to disable Sanitize HTML; (can lead to injections in HTML)
|
||||||
|
datasource:
|
||||||
|
enableCustomDatabase: false # Enterprise users ONLY, set this property to 'true' if you would like to use your own custom database configuration
|
||||||
|
customDatabaseUrl: '' # eg jdbc:postgresql://localhost:5432/postgres, set the url for your own custom database connection. If provided, the type, hostName, port and name are not necessary and will not be used
|
||||||
|
username: postgres # set the database username
|
||||||
|
password: postgres # set the database password
|
||||||
|
type: postgresql # the type of the database to set (e.g. 'h2', 'postgresql')
|
||||||
|
hostName: localhost # the host name to use for the database url. Set to 'localhost' when running the app locally. Set to match the name of the container name of your database container when running the app on a server (Docker configuration)
|
||||||
|
port: 5432 # set the port number of the database. Ensure this matches the port the database is listening to
|
||||||
|
name: postgres # set the name of your database. Should match the name of the database you create
|
||||||
|
customPaths:
|
||||||
|
pipeline:
|
||||||
|
watchedFoldersDir: '' #Defaults to /pipeline/watchedFolders
|
||||||
|
finishedFoldersDir: '' #Defaults to /pipeline/finishedFolders
|
||||||
|
operations:
|
||||||
|
weasyprint: '' #Defaults to /opt/venv/bin/weasyprint
|
||||||
|
unoconvert: '' #Defaults to /opt/venv/bin/unoconvert
|
||||||
|
fileUploadLimit: '' # Defaults to "". No limit when string is empty. Set a number, between 0 and 999, followed by one of the following strings to set a limit. "KB", "MB", "GB".
|
||||||
|
tempFileManagement:
|
||||||
|
baseTmpDir: '' # Defaults to java.io.tmpdir/stirling-pdf
|
||||||
|
libreofficeDir: '' # Defaults to tempFileManagement.baseTmpDir/libreoffice
|
||||||
|
systemTempDir: '' # Only used if cleanupSystemTemp is true
|
||||||
|
prefix: stirling-pdf- # Prefix for temp file names
|
||||||
|
maxAgeHours: 24 # Maximum age in hours before temp files are cleaned up
|
||||||
|
cleanupIntervalMinutes: 30 # How often to run cleanup (in minutes)
|
||||||
|
startupCleanup: true # Clean up old temp files on startup
|
||||||
|
cleanupSystemTemp: false # Whether to clean broader system temp directory
|
||||||
|
|
||||||
|
ui:
|
||||||
|
appName: '' # application's visible name
|
||||||
|
homeDescription: '' # short description or tagline shown on the homepage
|
||||||
|
appNameNavbar: '' # name displayed on the navigation bar
|
||||||
|
languages: [] # If empty, all languages are enabled. To display only German and Polish ["de_DE", "pl_PL"]. British English is always enabled.
|
||||||
|
|
||||||
|
endpoints:
|
||||||
|
toRemove: [] # list endpoints to disable (e.g. ['img-to-pdf', 'remove-pages'])
|
||||||
|
groupsToRemove: [] # list groups to disable (e.g. ['LibreOffice'])
|
||||||
|
|
||||||
|
metrics:
|
||||||
|
enabled: true # 'true' to enable Info APIs (`/api/*`) endpoints, 'false' to disable
|
||||||
|
|
||||||
|
# Automatically Generated Settings (Do Not Edit Directly)
|
||||||
|
AutomaticallyGenerated:
|
||||||
|
key: c802c393-3a4a-40bf-a409-71f6656aaa2c
|
||||||
|
UUID: 0fd342e6-17c4-4870-861e-18e9769f57eb
|
||||||
|
appVersion: 1.0.0
|
||||||
|
|
||||||
|
processExecutor:
|
||||||
|
sessionLimit: # Process executor instances limits
|
||||||
|
libreOfficeSessionLimit: 1
|
||||||
|
pdfToHtmlSessionLimit: 1
|
||||||
|
qpdfSessionLimit: 4
|
||||||
|
tesseractSessionLimit: 1
|
||||||
|
pythonOpenCvSessionLimit: 8
|
||||||
|
weasyPrintSessionLimit: 16
|
||||||
|
installAppSessionLimit: 1
|
||||||
|
calibreSessionLimit: 1
|
||||||
|
ghostscriptSessionLimit: 8
|
||||||
|
ocrMyPdfSessionLimit: 2
|
||||||
|
timeoutMinutes: # Process executor timeout in minutes
|
||||||
|
libreOfficetimeoutMinutes: 30
|
||||||
|
pdfToHtmltimeoutMinutes: 20
|
||||||
|
pythonOpenCvtimeoutMinutes: 30
|
||||||
|
weasyPrinttimeoutMinutes: 30
|
||||||
|
installApptimeoutMinutes: 60
|
||||||
|
calibretimeoutMinutes: 30
|
||||||
|
tesseractTimeoutMinutes: 30
|
||||||
|
qpdfTimeoutMinutes: 30
|
||||||
|
ghostscriptTimeoutMinutes: 30
|
||||||
|
ocrMyPdfTimeoutMinutes: 30
|
@ -6,7 +6,6 @@
|
|||||||
# ___) || | | || _ <| |___ | || |\ | |_| |_____| __/| |_| | _| #
|
# ___) || | | || _ <| |___ | || |\ | |_| |_____| __/| |_| | _| #
|
||||||
# |____/ |_| |___|_| \_\_____|___|_| \_|\____| |_| |____/|_| #
|
# |____/ |_| |___|_| \_\_____|___|_| \_|\____| |_| |____/|_| #
|
||||||
# #
|
# #
|
||||||
# Custom setting.yml file with all endpoints disabled to only be used for testing purposes #
|
|
||||||
# Do not comment out any entry, it will be removed on next startup #
|
# Do not comment out any entry, it will be removed on next startup #
|
||||||
# If you want to override with environment parameter follow parameter naming SECURITY_INITIALLOGIN_USERNAME #
|
# If you want to override with environment parameter follow parameter naming SECURITY_INITIALLOGIN_USERNAME #
|
||||||
#############################################################################################################
|
#############################################################################################################
|
||||||
@ -142,7 +141,7 @@ ui:
|
|||||||
appNameNavbar: '' # name displayed on the navigation bar
|
appNameNavbar: '' # name displayed on the navigation bar
|
||||||
languages: [] # If empty, all languages are enabled. To display only German and Polish ["de_DE", "pl_PL"]. British English is always enabled.
|
languages: [] # If empty, all languages are enabled. To display only German and Polish ["de_DE", "pl_PL"]. British English is always enabled.
|
||||||
|
|
||||||
endpoints: # All the possible endpoints are disabled
|
endpoints:
|
||||||
toRemove: [crop, merge-pdfs, multi-page-layout, overlay-pdfs, pdf-to-single-page, rearrange-pages, remove-image-pdf, remove-pages, rotate-pdf, scale-pages, split-by-size-or-count, split-pages, split-pdf-by-chapters, split-pdf-by-sections, add-password, add-watermark, auto-redact, cert-sign, get-info-on-pdf, redact, remove-cert-sign, remove-password, sanitize-pdf, validate-signature, file-to-pdf, html-to-pdf, img-to-pdf, markdown-to-pdf, pdf-to-csv, pdf-to-html, pdf-to-img, pdf-to-markdown, pdf-to-pdfa, pdf-to-presentation, pdf-to-text, pdf-to-word, pdf-to-xml, url-to-pdf, add-image, add-page-numbers, add-stamp, auto-rename, auto-split-pdf, compress-pdf, decompress-pdf, extract-image-scans, extract-images, flatten, ocr-pdf, remove-blanks, repair, replace-invert-pdf, show-javascript, update-metadata, filter-contains-image, filter-contains-text, filter-file-size, filter-page-count, filter-page-rotation, filter-page-size, add-attachments] # list endpoints to disable (e.g. ['img-to-pdf', 'remove-pages'])
|
toRemove: [crop, merge-pdfs, multi-page-layout, overlay-pdfs, pdf-to-single-page, rearrange-pages, remove-image-pdf, remove-pages, rotate-pdf, scale-pages, split-by-size-or-count, split-pages, split-pdf-by-chapters, split-pdf-by-sections, add-password, add-watermark, auto-redact, cert-sign, get-info-on-pdf, redact, remove-cert-sign, remove-password, sanitize-pdf, validate-signature, file-to-pdf, html-to-pdf, img-to-pdf, markdown-to-pdf, pdf-to-csv, pdf-to-html, pdf-to-img, pdf-to-markdown, pdf-to-pdfa, pdf-to-presentation, pdf-to-text, pdf-to-word, pdf-to-xml, url-to-pdf, add-image, add-page-numbers, add-stamp, auto-rename, auto-split-pdf, compress-pdf, decompress-pdf, extract-image-scans, extract-images, flatten, ocr-pdf, remove-blanks, repair, replace-invert-pdf, show-javascript, update-metadata, filter-contains-image, filter-contains-text, filter-file-size, filter-page-count, filter-page-rotation, filter-page-size, add-attachments] # list endpoints to disable (e.g. ['img-to-pdf', 'remove-pages'])
|
||||||
groupsToRemove: [] # list groups to disable (e.g. ['LibreOffice'])
|
groupsToRemove: [] # list groups to disable (e.g. ['LibreOffice'])
|
||||||
|
|
||||||
@ -153,7 +152,7 @@ metrics:
|
|||||||
AutomaticallyGenerated:
|
AutomaticallyGenerated:
|
||||||
key: cbb81c0f-50b1-450c-a2b5-89ae527776eb
|
key: cbb81c0f-50b1-450c-a2b5-89ae527776eb
|
||||||
UUID: 10dd4fba-01fa-4717-9b78-3dc4f54e398a
|
UUID: 10dd4fba-01fa-4717-9b78-3dc4f54e398a
|
||||||
appVersion: 0.44.3
|
appVersion: 1.0.2
|
||||||
|
|
||||||
processExecutor:
|
processExecutor:
|
||||||
sessionLimit: # Process executor instances limits
|
sessionLimit: # Process executor instances limits
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Find project root by locating build.gradle
|
# Find project root by locating app/build.gradle
|
||||||
find_root() {
|
find_root() {
|
||||||
local dir="$PWD"
|
local dir="$PWD"
|
||||||
while [[ "$dir" != "/" ]]; do
|
while [[ "$dir" != "/" ]]; do
|
||||||
if [[ -f "$dir/build.gradle" ]]; then
|
if [[ -f "$dir/app/build.gradle" ]]; then
|
||||||
echo "$dir"
|
echo "$dir"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
dir="$(dirname "$dir")"
|
dir="$(dirname "$dir")"
|
||||||
done
|
done
|
||||||
echo "Error: build.gradle not found" >&2
|
echo "Error: app/build.gradle not found" >&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,7 +175,7 @@ compare_file_lists() {
|
|||||||
|
|
||||||
# Get the expected version from Gradle once
|
# Get the expected version from Gradle once
|
||||||
get_expected_version() {
|
get_expected_version() {
|
||||||
./gradlew printVersion --quiet | tail -1
|
cd app && ./gradlew printVersion --quiet | tail -1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to verify the application version
|
# Function to verify the application version
|
||||||
@ -266,7 +266,7 @@ main() {
|
|||||||
export DISABLE_ADDITIONAL_FEATURES=true
|
export DISABLE_ADDITIONAL_FEATURES=true
|
||||||
|
|
||||||
# Run the gradlew build command and check if it fails
|
# Run the gradlew build command and check if it fails
|
||||||
if ! ./gradlew clean build; then
|
if ! (cd app && ./gradlew clean build); then
|
||||||
echo "Gradle build failed with security disabled, exiting script."
|
echo "Gradle build failed with security disabled, exiting script."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@ -309,7 +309,7 @@ main() {
|
|||||||
|
|
||||||
export DISABLE_ADDITIONAL_FEATURES=false
|
export DISABLE_ADDITIONAL_FEATURES=false
|
||||||
# Run the gradlew build command and check if it fails
|
# Run the gradlew build command and check if it fails
|
||||||
if ! ./gradlew clean build; then
|
if ! (cd app && ./gradlew clean build); then
|
||||||
echo "Gradle build failed with security enabled, exiting script."
|
echo "Gradle build failed with security enabled, exiting script."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -75,8 +75,8 @@ build_and_test() {
|
|||||||
local compose_file="${docker_compose_base}${build_type}${compose_suffix}"
|
local compose_file="${docker_compose_base}${build_type}${compose_suffix}"
|
||||||
|
|
||||||
# Gradle build with or without security
|
# Gradle build with or without security
|
||||||
echo "Running ./gradlew clean build with security=$enable_security..."
|
echo "Running cd app && ./gradlew clean build with security=$enable_security..."
|
||||||
./gradlew clean build
|
cd app && ./gradlew clean build
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "Gradle build failed, exiting script."
|
echo "Gradle build failed, exiting script."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user