summary refs log tree commit diff stats
path: root/tests/manyloc/nake/nakefile.nim
blob: 700f9ab499e0823ffd0df7d1398d594438556391 (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
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!"