Skip to content

Instantly share code, notes, and snippets.

@Buggaboo
Created August 17, 2016 15:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Buggaboo/eac63a472654210787d4277f6a284892 to your computer and use it in GitHub Desktop.
Save Buggaboo/eac63a472654210787d4277f6a284892 to your computer and use it in GitHub Desktop.
/**
* 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