From b02a937d8a06b29ed0c52f5b26e93f1efbabe9d8 Mon Sep 17 00:00:00 2001 From: Marco Vermeulen Date: Fri, 8 Oct 2021 13:23:36 +0100 Subject: [PATCH] Bring back improved archive composition. This reverts commit dc95e2dbaaf1095dd60fd2bf6f5957f466e556e6. --- build.gradle | 75 +------------------ gradle/archive.gradle | 49 ++++++++++++ .../sdkman/env/SdkmanBashEnvBuilder.groovy | 13 ++-- 3 files changed, 57 insertions(+), 80 deletions(-) create mode 100644 gradle/archive.gradle diff --git a/build.gradle b/build.gradle index 8dbef70f..053b5ca2 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,3 @@ -import org.apache.tools.ant.filters.ReplaceTokens - -import static org.gradle.api.tasks.testing.logging.TestExceptionFormat.FULL - plugins { id('groovy') } @@ -31,6 +27,8 @@ println("Release set to: $release") println("Candidtes API: $candidatesApi") println("Version: $sdkmanVersion") +apply from: 'gradle/archive.gradle' + repositories { mavenCentral() } @@ -52,72 +50,3 @@ dependencies { exclude module: 'groovy-all' } } - -task prepareScripts(type: Copy) { - from('src/main/bash') - into('build/scripts') - include('**/*') - filter( - ReplaceTokens, - tokens: [ - SDKMAN_VERSION : sdkmanVersion, - SDKMAN_CANDIDATES_API: candidatesApi - ] - ) -} - -task prepareContrib(type: Copy) { - from('contrib') - into('build/contrib') -} - -tasks.test.configure { - dependsOn(prepareScripts) - testLogging.exceptionFormat = FULL -} - -task assembleArchive(type: Zip, dependsOn: [prepareScripts, prepareContrib]) { - archiveVersion = sdkmanVersion - from('build/scripts') { - include('*.sh*') - } - from('build') { - include('contrib/**') - } -} - -tasks.assemble.configure { - dependsOn(assembleArchive) -} - -task cleanInstallInit(type: Delete) { - delete(installBinDir) -} - -task cleanContribInit(type: Delete) { - delete(installContribDir) -} - -task cleanInstallModules(type: Delete) { - delete(installSrcDir) -} - -task installContrib(type: Copy, dependsOn: [cleanContribInit, prepareContrib]) { - from('build/contrib') - into(installContribDir) -} - -task installInit(type: Copy, dependsOn: [cleanInstallInit, prepareScripts]) { - from('build/scripts') - into(installBinDir) - include('sdkman-init.sh') -} - -task installModules(type: Copy, dependsOn: [cleanInstallModules, prepareScripts]) { - from('build/scripts') - into(installSrcDir) - include('sdkman-*.sh') - exclude('sdkman-init.sh') -} - -task install(dependsOn: [installInit, installContrib, installModules]) diff --git a/gradle/archive.gradle b/gradle/archive.gradle new file mode 100644 index 00000000..e977c898 --- /dev/null +++ b/gradle/archive.gradle @@ -0,0 +1,49 @@ +import org.apache.tools.ant.filters.ReplaceTokens +import org.gradle.api.tasks.testing.logging.TestExceptionFormat + +def baseDir = "$buildDir/stage/sdkman-$release" + +task prepareBin(type: Copy) { + from('src/main/bash') + into("$baseDir/bin") + include('**/sdkman-init.sh') +} + +task prepareScripts(type: Copy) { + from('src/main/bash') + into("$baseDir/src") + include('**/*') + exclude('**/sdkman-init.sh') + filter( + ReplaceTokens, + tokens: [ + SDKMAN_VERSION : sdkmanVersion, + SDKMAN_CANDIDATES_API: candidatesApi + ] + ) +} + +task prepareContrib(type: Copy) { + from('contrib') + into("$baseDir/contrib") +} + +tasks.test.configure { + dependsOn(prepareScripts) + testLogging.exceptionFormat = TestExceptionFormat.FULL +} + +task assembleArchive(type: Zip, dependsOn: [prepareBin, prepareScripts, prepareContrib]) { + archiveVersion = sdkmanVersion + from('build/stage') { + include('**/*') + } +} + +tasks.assemble.configure { + dependsOn(assembleArchive) +} + +tasks.test.configure { + dependsOn(prepareBin, prepareScripts) +} diff --git a/src/test/groovy/sdkman/env/SdkmanBashEnvBuilder.groovy b/src/test/groovy/sdkman/env/SdkmanBashEnvBuilder.groovy index 1d7a7607..db0019d4 100644 --- a/src/test/groovy/sdkman/env/SdkmanBashEnvBuilder.groovy +++ b/src/test/groovy/sdkman/env/SdkmanBashEnvBuilder.groovy @@ -7,7 +7,9 @@ import sdkman.stubs.UnameStub @ToString(includeNames = true) class SdkmanBashEnvBuilder { - final TEST_SCRIPT_BUILD_DIR = "build/scripts" as File + final BUILD_STAGE_DIR = "build/stage/sdkman-latest" + final BUILD_BIN_DIR = "$BUILD_STAGE_DIR/bin" + final BUILD_SRC_DIR = "$BUILD_STAGE_DIR/src" //mandatory fields private final File baseFolder @@ -139,10 +141,7 @@ class SdkmanBashEnvBuilder { env.put("http_proxy", httpProxy) } - def bashEnv = new BashEnv(baseFolder.absolutePath, env) - println("\nSdkmanBashEnvBuilder: $this") - println("\nBashEnv: $bashEnv") - bashEnv + new BashEnv(baseFolder.absolutePath, env) } private prepareDirectory(File target, String directoryName) { @@ -185,7 +184,7 @@ class SdkmanBashEnvBuilder { } private primeInitScript(File targetFolder) { - def sourceInitScript = new File(TEST_SCRIPT_BUILD_DIR, 'sdkman-init.sh') + def sourceInitScript = new File(BUILD_BIN_DIR, 'sdkman-init.sh') if (!sourceInitScript.exists()) throw new IllegalStateException("sdkman-init.sh has not been prepared for consumption.") @@ -196,7 +195,7 @@ class SdkmanBashEnvBuilder { } private primeModuleScripts(File targetFolder) { - for (f in TEST_SCRIPT_BUILD_DIR.listFiles()) { + for (f in new File(BUILD_SRC_DIR).listFiles()) { if (!(f.name in ['selfupdate.sh', 'install.sh', 'sdkman-init.sh'])) { new File(targetFolder, f.name) << f.text }