publish.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #!/usr/bin/python
  2. #
  3. # This program assembles the distribution file Gameduino2.zip
  4. # from the source .ino files, and the asset files in
  5. # converted-assets.
  6. #
  7. inventory = {
  8. '1.Basics' : "helloworld fizz blobs simon jpeg",
  9. '2.Graphics' : "logo walk tiled mono slotgag reflection",
  10. '3.Peripherals' : "sketch tilt noisy song",
  11. '4.Utilities' : "viewer radarchart selftest",
  12. '5.Demos' : "cobra jnr kenney sprites widgets",
  13. '6.Games' : "nightstrike chess frogger",
  14. '7.GD3' : "video1 video2 cube cube2",
  15. }
  16. import zipfile
  17. def clean(src, is_due = False):
  18. vis = 1
  19. dst = []
  20. for l in src:
  21. assert not chr(9) in l, "Tab found in source"
  22. if is_due and ('EEPROM' in l):
  23. continue
  24. if "//'" in l:
  25. l = l[:l.index("//'")]
  26. if vis and not "JCB" in l:
  27. assert not "dumpscreen" in l
  28. dst.append(l.rstrip() + "\n")
  29. else:
  30. if "JCB{" in l:
  31. vis = 0
  32. if "}JCB" in l:
  33. vis = 1
  34. return "".join(dst)
  35. for (is_due, suffix) in [(False, ""), (True, "_Due")]:
  36. z = zipfile.ZipFile("Gameduino2%s.zip" % suffix, "w", zipfile.ZIP_DEFLATED)
  37. for f in "keywords.txt GD2.cpp GD2.h transports/wiring.h".split():
  38. z.write(f, "Gameduino2/%s" % f)
  39. for d,projs in inventory.items():
  40. dir = "Gameduino2" + "/" + d
  41. for p in projs.split():
  42. pd = dir + "/" + p
  43. z.writestr("%s/%s.ino" % (pd, p), clean(open("%s.ino" % p), is_due))
  44. for l in open("%s.ino" % p):
  45. if '#include "' in l:
  46. hdr = l[10:l.rindex('"')]
  47. z.write("converted-assets/%s" % hdr, "%s/%s" % (pd, hdr))
  48. z.close()
  49. # print "\n".join(["./mkino %s" % s for s in " ".join(inventory.values()).split()])