From 8058acb18b708fa4ed1b789b02a6f451fc9e52e7 Mon Sep 17 00:00:00 2001 From: Ben Liblit Date: Thu, 18 Jan 2018 15:48:07 -0600 Subject: [PATCH] Download NodeJS and include its "lib/*.js" files in jar archive --- com.ibm.wala.cast.js.nodejs/build.gradle | 40 +++++++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/com.ibm.wala.cast.js.nodejs/build.gradle b/com.ibm.wala.cast.js.nodejs/build.gradle index 6b7f976c1..3419d23b0 100644 --- a/com.ibm.wala.cast.js.nodejs/build.gradle +++ b/com.ibm.wala.cast.js.nodejs/build.gradle @@ -1,8 +1,3 @@ -sourceSets.main { - java.srcDirs = ['src'] - resources.srcDirs = ['dat'] -} - dependencies { compile( 'commons-io:commons-io:2.4', @@ -14,3 +9,38 @@ dependencies { project(':com.ibm.wala.util'), ) } + +task downloadNodeJS(type: de.undercouch.gradle.tasks.download.Download) { + src 'https://api.github.com/repos/nodejs/node/zipball/0a604e92e258c5ee2752d763e50721e35053f135' + dest new File(temporaryDir, 'nodejs.zip') + overwrite false +} + +task verifyNodeJS(type: VerifyWithStamp, dependsOn: downloadNodeJS) { + src downloadNodeJS.outputs.files[0] + checksum '33c5ba7a5d45644e70d268d8ad3e57df' +} + +task unpackNodeJSLib(type: Sync, dependsOn: verifyNodeJS) { + println "unpack zip tree \"$verifyNodeJS.src\" into \"$temporaryDir\"" + from(zipTree(verifyNodeJS.src)) { + eachFile { details -> + if (details.relativePath.pathString.startsWith('nodejs-node-0a604e9/lib/')) { + def renamedRelative = new RelativePath(!details.directory, 'core-modules', details.relativePath.lastName) + details.relativePath = renamedRelative + } else + details.exclude() + } + } + + into temporaryDir + includeEmptyDirs = false +} + +sourceSets.main { + java.srcDirs = ['src'] + resources.srcDirs = [ + 'dat', + unpackNodeJSLib + ] +}