Created
August 17, 2016 15:07
-
-
Save Buggaboo/eac63a472654210787d4277f6a284892 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Tasks and methods for releasing | |
*/ | |
// rv === release version | |
def projectName = "opensores" | |
def fwName = 'OpenSores' // frameworkName (e.g. OpenSores.framework) | |
def VERSION = project.hasProperty('rv') ? project.getProperty('rv') : 'unofficial' | |
def releaseDir = "${project.projectDir}/../../releases" | |
def releaseTempDir = "${releaseDir}/temp" | |
def gitShaShort() { | |
return 'git rev-parse HEAD --short'.execute().text.trim() | |
} | |
def buildTime() { | |
def df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'") | |
df.setTimeZone(TimeZone.getTimeZone("UTC")) | |
return df.format(new Date()) | |
} | |
// TODO step 0. copy 'module.modulemap' for swift to 'build/j2objcOutputs/src/main/objc' | |
// step 1. | |
task deleteReleaseTemp(type: Delete) { | |
delete releaseTempDir | |
def tempIosDir = file("$releaseTempDir/ios") | |
def tempAndroidDir = file("$releaseTempDir/android") | |
tempAndroidDir.mkdirs() | |
tempIosDir.mkdirs() | |
} | |
// step 2. | |
task zipJ2ObjcRelease(type: Zip, dependsOn: deleteReleaseTemp) { | |
from("${project.projectDir}/build/j2objcOutputs/") | |
baseName = "${projectName}-j2objc-$VERSION" | |
} | |
// step 3. | |
task copyJ2ObjcZipToTempDir(type: Copy, dependsOn: zipJ2ObjcRelease) { | |
from "${project.projectDir}/build/distributions/${projectName}-j2objc-${VERSION}.zip" | |
into "$releaseTempDir/ios" | |
} | |
/* | |
// step 4. | |
task copyAndroidReleaseFiles(type: Copy, dependsOn: copyJ2ObjcZipToTempDir) { | |
from "${project.projectDir}/../xtendshared/build/outputs/aar" | |
from "${project.projectDir}/../xtendapp/build/outputs/apk/xtendapp-debug.apk" | |
into "$releaseTempDir/android" | |
rename 'xtendshared-(.*).aar', "${projectName}-android-${VERSION}-\$1.aar" | |
rename 'xtendapp-(.*).apk', "${projectName}-android-app-${VERSION}-\$1.apk" | |
} | |
*/ | |
def releaseTempDirFrameworkDebug = "$releaseTempDir/ios/bundle/debug/${fwName}.framework" | |
def releaseTempDirFrameworkRelease = "$releaseTempDir/ios/bundle/release/${fwName}.framework" | |
// 1. copy header files to "$releaseTempDirFramework/Versions/A/Headers from ./build/j2objcOutputs/src/main/objc/ | |
task copyHeadersToBundleFrameworkReleaseTemp(type: Copy, dependsOn: copyJ2ObjcZipToTempDir) { | |
from "${project.projectDir}/build/j2objcOutputs/src/main/objc/" | |
into "$releaseTempDirFrameworkRelease/Versions/A/Headers" | |
include '**/*.h' | |
} | |
task copyHeadersToBundleFrameworkDebugTemp(type: Copy, dependsOn: copyHeadersToBundleFrameworkReleaseTemp) { | |
from "${project.projectDir}/build/j2objcOutputs/src/main/objc/" | |
into "$releaseTempDirFrameworkDebug/Versions/A/Headers" | |
include '**/*.h' | |
} | |
// 5. copy build/j2objcOutputs/lib/iosRelease/libshared-j2objc.a to $releaseTempDirFramework/Versions/A, and rename to OpenSores | |
task copyStaticLibToBundleFrameworkDebugTemp(type: Copy, dependsOn: copyHeadersToBundleFrameworkDebugTemp) { | |
from "${project.projectDir}/build/j2objcOutputs/lib/iosDebug" | |
into "$releaseTempDirFrameworkDebug/Versions/A" | |
rename "libshared-j2objc.a", "$fwName" | |
} | |
task copyStaticLibToBundleFrameworkReleaseTemp(type: Copy, dependsOn: copyStaticLibToBundleFrameworkDebugTemp) { | |
from "${project.projectDir}/build/j2objcOutputs/lib/iosRelease" | |
into "$releaseTempDirFrameworkRelease/Versions/A" | |
rename "libshared-j2objc.a", "$fwName" | |
} | |
// TODO redo custom task using Exec tasks | |
// 6. create symlinks | |
SymlinkSettings { | |
frameworkName = fwName | |
debugLocation = releaseTempDirFrameworkDebug | |
releaseLocation = releaseTempDirFrameworkRelease | |
} | |
import com.example.mobile.shared.gradle.IosFrameworkSymlinkTask | |
task finalizeIosFrameworkBundles(type: IosFrameworkSymlinkTask, dependsOn: copyStaticLibToBundleFrameworkReleaseTemp) {} | |
/* | |
// step 7. SHA-1 hash each file | |
def algo = 'SHA-256' | |
def release_time = buildTime() | |
def release_git_sha = gitShaShort() | |
HashSettings { | |
algorithm = algo | |
path = new File(releaseTempDir) | |
propertiesFile = new File("$releaseTempDir/hashes.${algo}.properties") | |
timeStamp = release_time | |
gitSha = release_git_sha | |
} | |
import com.example.mobile.shared.gradle.HashArchivesTask | |
task hashReleaseFiles(type: HashArchivesTask, dependsOn: finalizeIosFrameworkBundles) {} | |
*/ | |
// step 8. zip release | |
task zipRelease(type: Zip, dependsOn: finalizeIosFrameworkBundles) { | |
from(releaseTempDir) | |
baseName = "${projectName}-$VERSION" | |
println "Check out ${project.projectDir}/build/distributions" | |
} | |
// final step. Copy last files. Rescue from ::clean | |
task copyRelease(type: Copy, dependsOn: zipRelease) { | |
from "${project.projectDir}/build/distributions/${projectName}-${VERSION}.zip" | |
into "$releaseDir" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment