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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
import nake
import httpclient, zipfiles, times, math
nakeImports
randomize()
const
GameAssets = "http://dl.dropbox.com/u/37533467/data-08-01-2012.7z"
BinLibs = "http://dl.dropbox.com/u/37533467/libs-2012-09-12.zip"
ExeName = "keineschweine"
ServerDefines = "-d:NoSFML -d:NoChipmunk"
TestBuildDefines = "-d:escapeMenuTest -d:debugWeps -d:showFPS -d:moreNimrod -d:debugKeys -d:foo -d:recordMode --forceBuild"
ReleaseDefines = "-d:release --deadCodeElim:on"
ReleaseTestDefines = "-d:debugWeps -d:debugKeys --forceBuild"
task "testprofile", "..":
if shell("nimrod", TestBuildDefines, "--profiler:on", "--stacktrace:on", "compile", ExeName) == 0:
shell "."/ExeName, "offline"
task "test", "Build with test defines":
if shell("nimrod", TestBuildDefines, "compile", ExeName) != 0:
quit "The build failed."
task "testrun", "Build with test defines and run":
runTask "test"
shell "."/ExeName
task "test2", "Build release test build test release build":
if shell("nimrod", ReleaseDefines, ReleaseTestDefines, "compile", ExeName) == 0:
shell "."/ExeName
discard """task "dirserver", "build the directory server":
withDir "server":
if shell("nimrod", ServerDefines, "compile", "dirserver") != 0:
echo "Failed to build the dirserver"
quit 1"""
task "zoneserver", "build the zone server":
withDir "enet_server":
if shell("nimrod", ServerDefines, "compile", "enet_server") != 0:
quit "Failed to build the zoneserver"
task "zoneserver-gui", "build the zone server, with gui!":
withDir "enet_server":
if shell("nimrod", ServerDefines, "--app:gui", "compile", "enet_server") != 0:
quit "Failed to build the zoneserver"
task "servers", "build the server and directory server":
#runTask "dirserver"
runTask "zoneserver"
echo "Successfully built both servers :')"
task "all", "run SERVERS and TEST tasks":
runTask "servers"
runTask "test"
task "release", "release build":
let res = shell("nimrod", ReleaseDefines, "compile", ExeName)
if res != 0:
echo "The build failed."
quit 1
else:
runTask "clean"
## zip up all the files and such or something useful here
task "testskel", "create skeleton test dir for testing":
let dirname = "test-"& $random(5000)
removeDir dirName
createDir dirName/"data/fnt"
copyFile "data/fnt/LiberationMono-Regular", dirName/"data/fnt/LiberationMono-Regular.ttf"
copyFile "client_settings.json", dirName/"client_settings.json"
runTask "test"
copyFile ExeName, dirName/ExeName
withDir dirName:
shell "."/ExeName
task "clean", "cleanup generated files":
var dirs = @["nimcache", "server"/"nimcache"]
dirs.map(proc(x: var string) =
if existsDir(x): removeDir(x))
task "download", "download game assets":
var
skipAssets = false
path = expandFilename("data")
path.add DirSep
path.add(extractFilename(gameAssets))
if existsFile(path):
echo "The file already exists\n",
"[R]emove [M]ove [Q]uit [S]kip Source: ", GameAssets
case stdin.readLine.toLower
of "r":
removeFile path
of "m":
moveFile path, path/../(extractFilename(gameAssets)&"-old")
of "s":
skipAssets = true
else:
quit 0
else:
echo "Downloading from ", GameAssets
if not skipAssets:
echo "Downloading to ", path
downloadFile gameAssets, path
echo "Download finished"
let targetDir = parentDir(parentDir(path))
when defined(linux):
let z7 = findExe("7z")
if z7 == "":
echo "Could not find 7z"
elif shell(z7, "t", path) != 0: ##note to self: make sure this is right
echo "Bad download"
else:
echo "Unpacking..."
shell(z7, "x", "-w[$1]" % targetDir, path)
else:
echo "I do not know how to unpack the data on this system. Perhaps you could ",
"fill this part in?"
echo "Download binary libs? Only libs for linux are available currently, enjoy the irony.\n",
"[Y]es [N]o Source: ", BinLibs
case stdin.readline.toLower
of "y", "yes":
discard ## o_O
else:
return
path = extractFilename(BinLibs)
downloadFile BinLibs, path
echo "Downloaded dem libs ", path
when true: echo "Unpack it yourself, sorry."
else: ## this crashes, dunno why
var
z: TZipArchive
destDir = getCurrentDir()/("unzip"& $random(5000))
if not z.open(path, fmRead):
echo "Could not open zip, bad download?"
return
echo "Extracting to ", destDir
createDir destDir
#z.extractAll destDir
for f in z.walkFiles():
z.extractFile(f, destDir/f)
z.close()
echo "Extracted the libs dir. Copy the ones you need to this dir."
task "zip-lib", "zip up the libs dir":
var z: TZipArchive
if not z.open("libs-"& getDateStr() &".zip", fmReadWrite):
quit "Could not open zip"
for file in walkDirRec("libs", {pcFile, pcDir}):
echo "adding file ", file
z.addFile(file)
z.close()
echo "Great success!"
|