publish.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/usr/bin/python
  2. #
  3. # This program assembles the distribution file Gameduino.zip
  4. # from the source .ino files, and the asset files in
  5. # converted-assets.
  6. #
  7. inventory = {
  8. '1.Basics' : "sprites256 palettes rotate collision scroll",
  9. '2.Audio' : "toccata player sample instruments2",
  10. '3.Advanced' : "interrupt splitscreen jkcollision bitmap wireframe snow assets",
  11. '4.Demo' : "ball desert chessboard dna spectrum cp437 watterott",
  12. '5.Games' : "asteroids frogger chopper manicminer",
  13. '6.Tools' : "selftest screenshot memloader joytest",
  14. '7.Contrib' : "singingPlant",
  15. }
  16. import zipfile
  17. def clean(src):
  18. vis = 1
  19. dst = []
  20. for l in src:
  21. assert not chr(9) in l, "Tab found in source"
  22. if "//'" in l:
  23. l = l[:l.index("//'")]
  24. if vis and not "JCB" in l:
  25. dst.append(l.rstrip() + "\n")
  26. else:
  27. if "JCB{" in l:
  28. vis = 0
  29. if "}JCB" in l:
  30. vis = 1
  31. return "".join(dst)
  32. z = zipfile.ZipFile("Gameduino.zip", "w", zipfile.ZIP_DEFLATED)
  33. for f in "GD.cpp GD.h font8x8.h".split():
  34. z.write(f, "Gameduino/%s" % f)
  35. legit = []
  36. testset = open("testset", "w")
  37. for d,projs in inventory.items():
  38. dir = "Gameduino" + "/" + d
  39. for p in projs.split():
  40. pd = dir + "/" + p
  41. z.writestr("%s/%s.ino" % (pd, p), clean(open("%s.ino" % p)))
  42. for l in open("%s.ino" % p):
  43. if '#include "' in l:
  44. hdr = l[10:l.rindex('"')]
  45. z.write("converted-assets/%s" % hdr, "%s/%s" % (pd, hdr))
  46. legit.append("converted-assets/%s" % hdr)
  47. testset.write(p + " ")
  48. legit.append(p + ".ino")
  49. z.write("contrib/Guino_libray.ino", "Gameduino/7.Contrib/singingPlant/Guino_libray.ino")
  50. testset.close()
  51. z.close()
  52. # print ["./mkino %s" % s for s in " ".join(inventory.values()).split()]
  53. # print " ".join(legit)