package com.perforce.workshop.tjuricek.gradle import org.apache.commons.lang.SystemUtils import org.apache.tools.ant.taskdefs.condition.Os import org.gradle.api.DefaultTask /** * */ abstract class PerforceTask extends DefaultTask { def getArch() { StringBuilder nameBuilder = new StringBuilder("bin."); if (SystemUtils.IS_OS_MAC_OSX) { nameBuilder.append("darwin90").append(SystemUtils.OS_ARCH); } else if (SystemUtils.IS_OS_LINUX) { nameBuilder.append("linux26"); // TODO I have no idea what this really should be, we need some testing if (SystemUtils.OS_ARCH.equals("amd64")) { nameBuilder.append("x86_64"); } else if (SystemUtils.OS_ARCH.contains("64")) { nameBuilder.append("x86_64"); } else { nameBuilder.append("x86"); } } else if (SystemUtils.IS_OS_WINDOWS) { nameBuilder.append("nt").append(SystemUtils.OS_ARCH); } return nameBuilder.toString(); } File getP4dFile() { return new File(getCacheDir(), getP4dName()) } def getP4dName() { return Os.isFamily(Os.FAMILY_WINDOWS) ? "p4d.exe" : "p4d"; } def getP4File() { return new File(getCacheDir(), getP4Name()) } def getP4Name() { return Os.isFamily(Os.FAMILY_WINDOWS) ? "p4.exe" : "p4"; } def getCacheDir() { File dir = project.perforce.cacheDir if (dir == null) { dir = project.file("${project.buildDir}/perforce/cache") } return dir } def getWorkDir() { File dir = project.perforce.workDir if (dir == null) { dir = project.file("${project.buildDir}/perforce/work") } return dir } }