summaryrefslogtreecommitdiff
path: root/build.py
blob: b9d1121f3f8960649c9e38731fcae891e7d867f5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import os
import ssjb

# settings
projectName = "enigma"
version = "0.6b"
author = "Cuchaz"

dirBin = "bin"
dirBuild = "build"
dirTemp = os.path.join(dirBuild, "tmp")


def getJarFullName(name=None) :
	if name is not None:
		return "%s-%s-%s.jar" % (projectName, name, version)
	else:
		return "%s-%s.jar" % (projectName, version)

def buildGuiJar():
	jarName = "gui"
	os.makedirs(dirTemp)
	ssjb.copyFiles(dirTemp, dirBin, ssjb.findFiles(dirBin))
	ssjb.unpackJars(dirTemp, "ivy/bundles", recursive=True)
	ssjb.unpackJars(dirTemp, "ivy/jars", recursive=True)
	ssjb.unpackJars(dirTemp, "libs", recursive=True)
	ssjb.delete(os.path.join(dirTemp, "LICENSE.txt"))
	ssjb.copyFile(dirTemp, "license.APL2.txt")
	ssjb.copyFile(dirTemp, "license.GPL3.txt")
	ssjb.copyFile(dirTemp, "readme.txt")
	manifest = ssjb.buildManifest(projectName, version, author, "cuchaz.enigma.Main")
	ssjb.jar(os.path.join(dirBuild, getJarFullName()), dirTemp, manifest=manifest)
	ssjb.delete(dirTemp)

def buildTranslateJar():
	jarName = "translate"
	os.makedirs(dirTemp)
	files = ssjb.findFiles(dirBin, "cuchaz/enigma/mapping/*")
	files += ssjb.findFiles(dirBin, "cuchaz/enigma/bytecode/*")
	ssjb.copyFiles(dirTemp, dirBin, files)
	ssjb.copyFile(dirTemp, "license.GPL3.txt", renameTo="license.txt")
	ssjb.copyFile(dirTemp, "readme.translate.txt", renameTo="readme.txt")
	manifest = ssjb.buildManifest("%s-%s" % (projectName, jarName), version, author)
	ssjb.jar(os.path.join(dirBuild, getJarFullName(jarName)), dirTemp, manifest=manifest)
	ssjb.delete(dirTemp)

def taskMain():
	ssjb.delete(dirBuild)
	os.makedirs(dirBuild)
	buildGuiJar()
	buildTranslateJar()


def makeTestJar(name, glob):

	pathJar = os.path.join(dirBuild, "%s.jar" % name)
	pathObfJar = os.path.join(dirBuild, "%s.obf.jar" % name)

	# build the deobf jar
	ssjb.delete(dirTemp)
	os.makedirs(dirTemp)
	ssjb.copyFiles(dirTemp, dirBin, ssjb.findFiles(dirBin, "cuchaz/enigma/inputs/Keep.class"))
	ssjb.copyFiles(dirTemp, dirBin, ssjb.findFiles(dirBin, glob))
	ssjb.jar(pathJar, dirTemp)
	ssjb.delete(dirTemp)

	# build the obf jar
	ssjb.callJavaJar("libs/proguard.jar", ["@proguard.conf", "-injars", pathJar, "-outjars", pathObfJar])

def taskBuildTestJars():
	makeTestJar("testLoneClass", "cuchaz/enigma/inputs/loneClass/*.class")
	makeTestJar("testConstructors", "cuchaz/enigma/inputs/constructors/*.class")
	makeTestJar("testInheritanceTree", "cuchaz/enigma/inputs/inheritanceTree/*.class")
	makeTestJar("testInnerClasses", "cuchaz/enigma/inputs/innerClasses/*.class")

ssjb.registerTask("main", taskMain)
ssjb.registerTask("buildTestJars", taskBuildTestJars)


if __name__ == "__main__":
	ssjb.run()