Files
cf-uploader/build.gradle
2025-10-20 11:07:35 -05:00

87 lines
2.8 KiB
Groovy

plugins {
id 'java'
id 'org.springframework.boot' version '3.2.0'
id 'io.spring.dependency-management' version '1.1.4'
}
group = 'com.cfdeployer'
version = '1.0.0'
sourceCompatibility = '17'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'commons-io:commons-io:2.15.1'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
// Task to download CF CLI binaries
task downloadCfCli {
group = 'build'
description = 'Downloads CF CLI binaries for Linux, macOS, and Windows'
doLast {
def cfCliVersion = '8.7.10'
def resourcesDir = file("$projectDir/src/main/resources/cf-cli")
resourcesDir.mkdirs()
def downloads = [
[os: 'linux', url: "https://packages.cloudfoundry.org/stable?release=linux64-binary&version=${cfCliVersion}&source=github-rel", ext: 'tgz', executable: 'cf'],
[os: 'macos', url: "https://packages.cloudfoundry.org/stable?release=macosx64-binary&version=${cfCliVersion}&source=github-rel", ext: 'tgz', executable: 'cf'],
[os: 'windows', url: "https://packages.cloudfoundry.org/stable?release=windows64-exe&version=${cfCliVersion}&source=github-rel", ext: 'zip', executable: 'cf.exe']
]
downloads.each { download ->
def osDir = file("${resourcesDir}/${download.os}")
osDir.mkdirs()
def archiveFile = file("${osDir}/cf-cli.${download.ext}")
if (!archiveFile.exists()) {
println "Downloading CF CLI for ${download.os}..."
ant.get(src: download.url, dest: archiveFile, verbose: true)
println "Extracting CF CLI for ${download.os}..."
if (download.ext == 'tgz') {
copy {
from tarTree(resources.gzip(archiveFile))
into osDir
}
} else if (download.ext == 'zip') {
copy {
from zipTree(archiveFile)
into osDir
}
}
archiveFile.delete()
println "CF CLI for ${download.os} downloaded and extracted successfully"
} else {
println "CF CLI for ${download.os} already exists, skipping download"
}
}
}
}
// Ensure CF CLI is downloaded before building
processResources.dependsOn downloadCfCli