epall-limelight 0.5.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. data/bin/icons/icon.ico +0 -0
  2. data/bin/icons/icon_48.gif +0 -0
  3. data/bin/icons/limelight.icns +0 -0
  4. data/bin/limelight +5 -0
  5. data/bin/ll +10 -0
  6. data/bin/ll.bat +5 -0
  7. data/lib/init.rb +16 -0
  8. data/lib/limelight.jar +0 -0
  9. data/lib/limelight/animation.rb +41 -0
  10. data/lib/limelight/builtin/players.rb +16 -0
  11. data/lib/limelight/builtin/players/button.rb +39 -0
  12. data/lib/limelight/builtin/players/check_box.rb +50 -0
  13. data/lib/limelight/builtin/players/combo_box.rb +89 -0
  14. data/lib/limelight/builtin/players/combo_box_popup_list.rb +19 -0
  15. data/lib/limelight/builtin/players/combo_box_popup_list_item.rb +21 -0
  16. data/lib/limelight/builtin/players/curtains.rb +23 -0
  17. data/lib/limelight/builtin/players/image.rb +54 -0
  18. data/lib/limelight/builtin/players/password_box.rb +34 -0
  19. data/lib/limelight/builtin/players/radio_button.rb +65 -0
  20. data/lib/limelight/builtin/players/stage_mover.rb +31 -0
  21. data/lib/limelight/builtin/players/stage_sizer.rb +34 -0
  22. data/lib/limelight/builtin/players/text_area.rb +34 -0
  23. data/lib/limelight/builtin/players/text_box.rb +34 -0
  24. data/lib/limelight/builtin/styles.rb +35 -0
  25. data/lib/limelight/builtin/utilities_production/alert/players/alert.rb +11 -0
  26. data/lib/limelight/builtin/utilities_production/alert/props.rb +8 -0
  27. data/lib/limelight/builtin/utilities_production/alert/styles.rb +14 -0
  28. data/lib/limelight/builtin/utilities_production/incompatible_version/props.rb +20 -0
  29. data/lib/limelight/builtin/utilities_production/incompatible_version/styles.rb +12 -0
  30. data/lib/limelight/builtin/utilities_production/production.rb +62 -0
  31. data/lib/limelight/builtin/utilities_production/stages.rb +12 -0
  32. data/lib/limelight/builtin/utilities_production/styles.rb +53 -0
  33. data/lib/limelight/button_group_cache.rb +11 -0
  34. data/lib/limelight/casting_director.rb +112 -0
  35. data/lib/limelight/client/playbills.rb +86 -0
  36. data/lib/limelight/commands/command.rb +168 -0
  37. data/lib/limelight/commands/create_command.rb +98 -0
  38. data/lib/limelight/commands/freeze_command.rb +131 -0
  39. data/lib/limelight/commands/help_command.rb +61 -0
  40. data/lib/limelight/commands/open_command.rb +60 -0
  41. data/lib/limelight/commands/pack_command.rb +45 -0
  42. data/lib/limelight/commands/unpack_command.rb +44 -0
  43. data/lib/limelight/commands/version_command.rb +31 -0
  44. data/lib/limelight/data.rb +37 -0
  45. data/lib/limelight/dsl/build_exception.rb +55 -0
  46. data/lib/limelight/dsl/menu_bar.rb +71 -0
  47. data/lib/limelight/dsl/prop_builder.rb +155 -0
  48. data/lib/limelight/dsl/stage_builder.rb +105 -0
  49. data/lib/limelight/dsl/styles_builder.rb +157 -0
  50. data/lib/limelight/file_chooser.rb +68 -0
  51. data/lib/limelight/file_filter.rb +33 -0
  52. data/lib/limelight/file_loader.rb +46 -0
  53. data/lib/limelight/gems.rb +51 -0
  54. data/lib/limelight/java_couplings.rb +66 -0
  55. data/lib/limelight/java_util.rb +49 -0
  56. data/lib/limelight/limelight_exception.rb +24 -0
  57. data/lib/limelight/main.rb +108 -0
  58. data/lib/limelight/paint_action.rb +27 -0
  59. data/lib/limelight/pen.rb +83 -0
  60. data/lib/limelight/producer.rb +179 -0
  61. data/lib/limelight/production.rb +169 -0
  62. data/lib/limelight/prop.rb +367 -0
  63. data/lib/limelight/scene.rb +151 -0
  64. data/lib/limelight/specs/spec_helper.rb +87 -0
  65. data/lib/limelight/specs/test_scene_opener.rb +60 -0
  66. data/lib/limelight/stage.rb +292 -0
  67. data/lib/limelight/string.rb +38 -0
  68. data/lib/limelight/studio.rb +185 -0
  69. data/lib/limelight/styles.rb +347 -0
  70. data/lib/limelight/templates/production_templater.rb +49 -0
  71. data/lib/limelight/templates/scene_templater.rb +47 -0
  72. data/lib/limelight/templates/sources/freezing/limelight_init.rb.template +5 -0
  73. data/lib/limelight/templates/sources/production/init.rb.template +15 -0
  74. data/lib/limelight/templates/sources/production/production.rb.template +49 -0
  75. data/lib/limelight/templates/sources/production/spec/spec_helper.rb.template +12 -0
  76. data/lib/limelight/templates/sources/production/stages.rb.template +17 -0
  77. data/lib/limelight/templates/sources/production/styles.rb.template +12 -0
  78. data/lib/limelight/templates/sources/scene/props.rb.template +6 -0
  79. data/lib/limelight/templates/sources/scene/styles.rb.template +18 -0
  80. data/lib/limelight/templates/sources/scene_spec/scene_spec.rb.template +13 -0
  81. data/lib/limelight/templates/templater.rb +131 -0
  82. data/lib/limelight/templates/templater_logger.rb +39 -0
  83. data/lib/limelight/theater.rb +77 -0
  84. data/lib/limelight/util.rb +65 -0
  85. data/lib/limelight/util/downloader.rb +115 -0
  86. data/lib/limelight/version.rb +20 -0
  87. data/productions/examples/8thlight.com/about/about.txt +24 -0
  88. data/productions/examples/8thlight.com/about/props.rb +11 -0
  89. data/productions/examples/8thlight.com/about/styles.rb +2 -0
  90. data/productions/examples/8thlight.com/footer.rb +6 -0
  91. data/productions/examples/8thlight.com/home/props.rb +28 -0
  92. data/productions/examples/8thlight.com/home/styles.rb +2 -0
  93. data/productions/examples/8thlight.com/images/anvil.jpg +0 -0
  94. data/productions/examples/8thlight.com/images/bg.jpg +0 -0
  95. data/productions/examples/8thlight.com/images/botticelli.jpg +0 -0
  96. data/productions/examples/8thlight.com/images/button_bg.jpg +0 -0
  97. data/productions/examples/8thlight.com/images/canvas_bg.jpg +0 -0
  98. data/productions/examples/8thlight.com/images/footer_bg.jpg +0 -0
  99. data/productions/examples/8thlight.com/images/header.jpg +0 -0
  100. data/productions/examples/8thlight.com/images/moses.jpg +0 -0
  101. data/productions/examples/8thlight.com/images/statemachine_thumbnail.png +0 -0
  102. data/productions/examples/8thlight.com/images/thumbnail_book.jpg +0 -0
  103. data/productions/examples/8thlight.com/menu.rb +11 -0
  104. data/productions/examples/8thlight.com/services/props.rb +11 -0
  105. data/productions/examples/8thlight.com/services/services.txt +8 -0
  106. data/productions/examples/8thlight.com/services/styles.rb +2 -0
  107. data/productions/examples/8thlight.com/stages.rb +8 -0
  108. data/productions/examples/8thlight.com/styles.rb +210 -0
  109. data/productions/examples/calculator/players/button.rb +24 -0
  110. data/productions/examples/calculator/players/calculator.rb +15 -0
  111. data/productions/examples/calculator/players/calculator_model.rb +13 -0
  112. data/productions/examples/calculator/props.rb +23 -0
  113. data/productions/examples/calculator/styles.rb +36 -0
  114. data/productions/examples/langstons_ant/html_javascript/ant.css +39 -0
  115. data/productions/examples/langstons_ant/html_javascript/ant.html +22 -0
  116. data/productions/examples/langstons_ant/html_javascript/ant.js +23 -0
  117. data/productions/examples/langstons_ant/init.rb +4 -0
  118. data/productions/examples/langstons_ant/players/ant.rb +103 -0
  119. data/productions/examples/langstons_ant/players/log.rb +29 -0
  120. data/productions/examples/langstons_ant/players/start_stop_button.rb +37 -0
  121. data/productions/examples/langstons_ant/players/world.rb +35 -0
  122. data/productions/examples/langstons_ant/props.rb +22 -0
  123. data/productions/examples/langstons_ant/styles.rb +104 -0
  124. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/props.rb +10 -0
  125. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/styles.rb +32 -0
  126. data/productions/examples/sandbox/alerts/incompatible_production/production.rb +52 -0
  127. data/productions/examples/sandbox/alerts/incompatible_production/spec/default_scene/default_scene_spec.rb +16 -0
  128. data/productions/examples/sandbox/alerts/incompatible_production/spec/spec_helper.rb +8 -0
  129. data/productions/examples/sandbox/alerts/incompatible_production/stages.rb +20 -0
  130. data/productions/examples/sandbox/alerts/incompatible_production/styles.rb +15 -0
  131. data/productions/examples/sandbox/alerts/players/alerts.rb +17 -0
  132. data/productions/examples/sandbox/alerts/props.rb +10 -0
  133. data/productions/examples/sandbox/alerts/styles.rb +46 -0
  134. data/productions/examples/sandbox/background_images/props.rb +22 -0
  135. data/productions/examples/sandbox/background_images/styles.rb +40 -0
  136. data/productions/examples/sandbox/click_me/players/chromaton.rb +52 -0
  137. data/productions/examples/sandbox/click_me/props.rb +8 -0
  138. data/productions/examples/sandbox/click_me/styles.rb +11 -0
  139. data/productions/examples/sandbox/floaters/players/floater.rb +108 -0
  140. data/productions/examples/sandbox/floaters/players/surface.rb +21 -0
  141. data/productions/examples/sandbox/floaters/props.rb +10 -0
  142. data/productions/examples/sandbox/floaters/styles.rb +24 -0
  143. data/productions/examples/sandbox/frameing/players/sandbox.rb +17 -0
  144. data/productions/examples/sandbox/frameing/props.rb +35 -0
  145. data/productions/examples/sandbox/frameing/styles.rb +45 -0
  146. data/productions/examples/sandbox/gradients/players/spinner.rb +20 -0
  147. data/productions/examples/sandbox/gradients/players/teaser.rb +19 -0
  148. data/productions/examples/sandbox/gradients/players/wave.rb +19 -0
  149. data/productions/examples/sandbox/gradients/players/waves.rb +19 -0
  150. data/productions/examples/sandbox/gradients/props.rb +13 -0
  151. data/productions/examples/sandbox/gradients/styles.rb +47 -0
  152. data/productions/examples/sandbox/header.rb +22 -0
  153. data/productions/examples/sandbox/homer/players/homer.rb +24 -0
  154. data/productions/examples/sandbox/homer/props.rb +10 -0
  155. data/productions/examples/sandbox/homer/styles.rb +16 -0
  156. data/productions/examples/sandbox/images/arch.jpg +0 -0
  157. data/productions/examples/sandbox/images/beach.jpg +0 -0
  158. data/productions/examples/sandbox/images/homer.jpg +0 -0
  159. data/productions/examples/sandbox/images/limelight_spotlight.jpg +0 -0
  160. data/productions/examples/sandbox/images/logo.png +0 -0
  161. data/productions/examples/sandbox/images/marilyn.jpg +0 -0
  162. data/productions/examples/sandbox/images/space.png +0 -0
  163. data/productions/examples/sandbox/images_scene/props.rb +36 -0
  164. data/productions/examples/sandbox/images_scene/styles.rb +34 -0
  165. data/productions/examples/sandbox/inputs/players/button_input.rb +48 -0
  166. data/productions/examples/sandbox/inputs/players/check_box_input.rb +40 -0
  167. data/productions/examples/sandbox/inputs/players/combo_box_input.rb +41 -0
  168. data/productions/examples/sandbox/inputs/players/radio_button_input.rb +43 -0
  169. data/productions/examples/sandbox/inputs/players/text_area_input.rb +36 -0
  170. data/productions/examples/sandbox/inputs/players/text_box_input.rb +36 -0
  171. data/productions/examples/sandbox/inputs/props.rb +40 -0
  172. data/productions/examples/sandbox/inputs/styles.rb +39 -0
  173. data/productions/examples/sandbox/kiosk/players/kiosk.rb +39 -0
  174. data/productions/examples/sandbox/kiosk/props.rb +9 -0
  175. data/productions/examples/sandbox/kiosk/styles.rb +37 -0
  176. data/productions/examples/sandbox/players/sandbox.rb +11 -0
  177. data/productions/examples/sandbox/rounded_corners/players/box.rb +11 -0
  178. data/productions/examples/sandbox/rounded_corners/props.rb +22 -0
  179. data/productions/examples/sandbox/rounded_corners/styles.rb +17 -0
  180. data/productions/examples/sandbox/scrolling/players/add_button.rb +19 -0
  181. data/productions/examples/sandbox/scrolling/players/cell.rb +15 -0
  182. data/productions/examples/sandbox/scrolling/props.rb +45 -0
  183. data/productions/examples/sandbox/scrolling/styles.rb +33 -0
  184. data/productions/examples/sandbox/sketching/players/sketchpad.rb +46 -0
  185. data/productions/examples/sandbox/sketching/props.rb +25 -0
  186. data/productions/examples/sandbox/sketching/styles.rb +35 -0
  187. data/productions/examples/sandbox/sounds/bird.au +0 -0
  188. data/productions/examples/sandbox/sounds/cat.au +0 -0
  189. data/productions/examples/sandbox/sounds/cow.au +0 -0
  190. data/productions/examples/sandbox/sounds/dog.au +0 -0
  191. data/productions/examples/sandbox/sounds/donkey.au +0 -0
  192. data/productions/examples/sandbox/sounds/duck.au +0 -0
  193. data/productions/examples/sandbox/sounds/players/clip.rb +10 -0
  194. data/productions/examples/sandbox/sounds/props.rb +10 -0
  195. data/productions/examples/sandbox/sounds/styles.rb +17 -0
  196. data/productions/examples/sandbox/spec/alerts/alerts_spec.rb +16 -0
  197. data/productions/examples/sandbox/stage_handles/players/sizer.rb +35 -0
  198. data/productions/examples/sandbox/stage_handles/props.rb +17 -0
  199. data/productions/examples/sandbox/stage_handles/styles.rb +58 -0
  200. data/productions/examples/sandbox/stages.rb +8 -0
  201. data/productions/examples/sandbox/styles.rb +35 -0
  202. data/productions/examples/sandbox/teaser/players/fader.rb +58 -0
  203. data/productions/examples/sandbox/teaser/props.rb +14 -0
  204. data/productions/examples/sandbox/teaser/styles.rb +21 -0
  205. data/productions/examples/tutorials/tutorial_1/players/sample.rb +11 -0
  206. data/productions/examples/tutorials/tutorial_1/props.rb +9 -0
  207. data/productions/examples/tutorials/tutorial_1/styles.rb +25 -0
  208. data/productions/playbills.lll +1 -0
  209. data/productions/stage_composer/init.rb +10 -0
  210. data/productions/stage_composer/inspector/players/inspector.rb +80 -0
  211. data/productions/stage_composer/inspector/players/prop_row.rb +12 -0
  212. data/productions/stage_composer/inspector/players/prop_tree.rb +33 -0
  213. data/productions/stage_composer/inspector/players/style_table.rb +12 -0
  214. data/productions/stage_composer/inspector/players/style_value.rb +16 -0
  215. data/productions/stage_composer/inspector/props.rb +19 -0
  216. data/productions/stage_composer/inspector/styles.rb +71 -0
  217. data/productions/stage_composer/lib/init.rb +5 -0
  218. data/productions/stage_composer/lib/limelight/composer/controller.rb +51 -0
  219. data/productions/stage_composer/lib/limelight/composer/lethargy.rb +24 -0
  220. data/productions/stage_composer/production.rb +6 -0
  221. data/productions/stage_composer/stages.rb +15 -0
  222. data/productions/startup/images/logo.png +0 -0
  223. data/productions/startup/images/splash.png +0 -0
  224. data/productions/startup/production.rb +52 -0
  225. data/productions/startup/spec/default_scene/default_scene_spec.rb +16 -0
  226. data/productions/startup/spec/spec_helper.rb +8 -0
  227. data/productions/startup/stages.rb +9 -0
  228. data/productions/startup/styles.rb +15 -0
  229. data/productions/startup/welcome/players/browse_button.rb +10 -0
  230. data/productions/startup/welcome/players/download_button.rb +17 -0
  231. data/productions/startup/welcome/players/sandbox_button.rb +11 -0
  232. data/productions/startup/welcome/props.rb +23 -0
  233. data/productions/startup/welcome/styles.rb +103 -0
  234. data/spec/limelight/builtin/players/button_spec.rb +20 -0
  235. data/spec/limelight/builtin/players/check_box_spec.rb +29 -0
  236. data/spec/limelight/builtin/players/combo_box_spec.rb +29 -0
  237. data/spec/limelight/builtin/players/image_spec.rb +43 -0
  238. data/spec/limelight/builtin/players/password_box_spec.rb +27 -0
  239. data/spec/limelight/builtin/players/radio_button_spec.rb +64 -0
  240. data/spec/limelight/builtin/players/stage_mover_spec.rb +36 -0
  241. data/spec/limelight/builtin/players/stage_sizer_spec.rb +40 -0
  242. data/spec/limelight/builtin/players/text_area_spec.rb +27 -0
  243. data/spec/limelight/builtin/players/text_box_spec.rb +27 -0
  244. data/spec/limelight/builtin/utilities_production/spec_helper.rb +7 -0
  245. data/spec/limelight/builtin/utilities_production/utilities_production_spec.rb +146 -0
  246. data/spec/limelight/casting_director_spec.rb +164 -0
  247. data/spec/limelight/client/playbills_spec.rb +79 -0
  248. data/spec/limelight/commands/command_spec.rb +26 -0
  249. data/spec/limelight/commands/create_command_spec.rb +108 -0
  250. data/spec/limelight/commands/freeze_command_spec.rb +143 -0
  251. data/spec/limelight/commands/help_command_spec.rb +42 -0
  252. data/spec/limelight/commands/open_command_spec.rb +52 -0
  253. data/spec/limelight/commands/pack_command_spec.rb +26 -0
  254. data/spec/limelight/commands/unpack_command_spec.rb +47 -0
  255. data/spec/limelight/data_spec.rb +36 -0
  256. data/spec/limelight/dsl/prop_builder_spec.rb +245 -0
  257. data/spec/limelight/dsl/stage_builder_spec.rb +90 -0
  258. data/spec/limelight/dsl/styles_builder_spec.rb +194 -0
  259. data/spec/limelight/file_chooser_spec.rb +64 -0
  260. data/spec/limelight/file_filter_spec.rb +29 -0
  261. data/spec/limelight/file_loader_spec.rb +28 -0
  262. data/spec/limelight/gems_spec.rb +92 -0
  263. data/spec/limelight/java_util_spec.rb +37 -0
  264. data/spec/limelight/main_spec.rb +40 -0
  265. data/spec/limelight/paint_action_spec.rb +30 -0
  266. data/spec/limelight/pen_spec.rb +62 -0
  267. data/spec/limelight/producer_spec.rb +210 -0
  268. data/spec/limelight/production_spec.rb +100 -0
  269. data/spec/limelight/prop_spec.rb +431 -0
  270. data/spec/limelight/scene_spec.rb +173 -0
  271. data/spec/limelight/stage_spec.rb +202 -0
  272. data/spec/limelight/string_spec.rb +38 -0
  273. data/spec/limelight/studio_spec.rb +157 -0
  274. data/spec/limelight/styles_spec.rb +53 -0
  275. data/spec/limelight/templates/production_templater_spec.rb +66 -0
  276. data/spec/limelight/templates/scene_templater_spec.rb +51 -0
  277. data/spec/limelight/templates/templater_logger_spec.rb +41 -0
  278. data/spec/limelight/templates/templater_spec.rb +107 -0
  279. data/spec/limelight/theater_spec.rb +72 -0
  280. data/spec/limelight/util/downloader_spec.rb +92 -0
  281. data/spec/spec_helper.rb +70 -0
  282. metadata +335 -0
@@ -0,0 +1,131 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require 'limelight/commands/command'
5
+
6
+ module Limelight
7
+ module Commands
8
+
9
+ # Freeze a gem into the production. Frozen gems are unpacked into the root level gem directory.
10
+ # Limelight will automatically require a production's frozen gems when loaded.
11
+ #
12
+ # Usage: limelight freeze [options] <gem_name|gem_file>
13
+ # freeze a gem into a production.
14
+ # options:
15
+ # -h, --help Prints this usage summary.
16
+ # -p, --production=<production> Specify the production where the gem will be frozen. Default is '.'.
17
+ # -v, --version=<version> Specify the gem version. Defaults to latest. Ignored if file provided.
18
+ #
19
+ class FreezeCommand < Command
20
+
21
+ install_as "freeze"
22
+
23
+ def self.description #:nodoc:
24
+ return "freeze a gem into a production."
25
+ end
26
+
27
+ attr_reader :gem_name, :production_path, :gem_version
28
+
29
+ def initialize() #:nodoc:
30
+ @production_path = "."
31
+ # self.print_backtrace = true
32
+ end
33
+
34
+ def is_gem_file?(name) #:nodoc:
35
+ return File.extname(name) == ".gem"
36
+ end
37
+
38
+ protected ###########################################
39
+
40
+ def process #:nodoc:
41
+ check_production_path
42
+ gem_path = is_gem_file?(@gem_name) ? @gem_name : find_system_gem
43
+ raise "Gem file does not exist: #{gem_path}" unless File.exists?(gem_path)
44
+ freeze_gem(gem_path)
45
+ end
46
+
47
+ def parse_remainder(args) #:nodoc:
48
+ @gem_name = args.shift
49
+ raise "Gem name paramter missing." if @gem_name.nil?
50
+ end
51
+
52
+ def build_options(spec) #:nodoc:
53
+ spec.on("-p <production>", "--production=<production>", "Specify the production where the gem will be frozen. Default is '.'.") { |value| @production_path = value }
54
+ spec.on("-v <version>", "--version=<version>", "Specify the gem version. Defaults to latest. Ignored if file provided.") { |value| @gem_version = value }
55
+ end
56
+
57
+ def parameter_description #:nodoc:
58
+ return "[options] <gem_name|gem_file>"
59
+ end
60
+
61
+ def do_requires #:nodoc:
62
+ require 'limelight/util'
63
+ require 'limelight/templates/templater'
64
+ require 'rubygems'
65
+ require 'rubygems/commands/unpack_command'
66
+ end
67
+
68
+ private #############################################
69
+
70
+ def check_production_path
71
+ if !(Util.is_limelight_production?(@production_path) || Util.is_limelight_scene?(@production_path))
72
+ raise "The production path '#{@production_path}' doesn't appear to be a Limelight production directory."
73
+ end
74
+ end
75
+
76
+ def find_system_gem
77
+ if @gem_version
78
+ @gem_spec = Gem.cache.find_name(@gem_name, "= #{@gem_version}").first
79
+ raise "Could not find gem (#{@gem_name}-#{@gem_version})." if @gem_spec.nil?
80
+ else
81
+ @gem_spec = Gem.cache.find_name(@gem_name).sort_by { |g| g.version }.last
82
+ raise "Could not find gem (#{@gem_name})." if @gem_spec.nil?
83
+ end
84
+
85
+ return Gem::Commands::UnpackCommand.new.get_path(@gem_name, @gem_spec.version.version)
86
+ end
87
+
88
+ def freeze_gem(gem_path)
89
+ @gem_spec = Gem::Format.from_file_by_path(gem_path).spec unless @gem_spec
90
+ @gem_dir_name = "#{@gem_spec.name}-#{@gem_spec.version}"
91
+
92
+ establish_gem_dir
93
+
94
+ gem_installer = Gem::Installer.new(gem_path)
95
+ @templater.logger.log("unpacking gem", @gem_dir_path)
96
+ gem_installer.unpack(@gem_dir_path)
97
+
98
+ copy_gem_spec
99
+ end
100
+
101
+ def copy_gem_spec
102
+ @templater.directory(File.join("__resources", "gems", "specifications"))
103
+ FileUtils.copy(gemspec_path, local_gemspec_path) if File.exists?(gemspec_path)
104
+
105
+ install_limelight_hook
106
+ end
107
+
108
+ def gemspec_path
109
+ return File.join(Gem.dir, "specifications", "#{@gem_dir_name}.gemspec")
110
+ end
111
+
112
+ def local_gemspec_path
113
+ return File.join(@production_path, "__resources", "gems", "specifications")
114
+ end
115
+
116
+ def establish_gem_dir
117
+ @templater = Templates::Templater.new(@production_path)
118
+ @gem_dir_path = File.join(@production_path, "__resources", "gems", "gems", @gem_dir_name)
119
+ raise "The gem (#{@gem_dir_name}) is already frozen." if File.exists?(@gem_dir_path)
120
+ @templater.directory(File.join("__resources", "gems", "gems", @gem_dir_name))
121
+ end
122
+
123
+ def install_limelight_hook
124
+ tokens = { :GEM_NAME => @gem_dir_name, :PATHS => @gem_spec.require_paths.inspect }
125
+ @templater.file(File.join("__resources", "gems", "gems", @gem_dir_name, "limelight_init.rb"), "freezing/limelight_init.rb.template", tokens)
126
+ end
127
+
128
+ end
129
+
130
+ end
131
+ end
@@ -0,0 +1,61 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require 'limelight/commands/command'
5
+
6
+ module Limelight
7
+ module Commands
8
+
9
+ # Prints limelight command help
10
+ #
11
+ class HelpCommand < Command
12
+
13
+ install_as "help"
14
+
15
+ def self.description #:nodoc:
16
+ return "Prints limelight command help"
17
+ end
18
+
19
+ protected ###########################################
20
+
21
+ def process #:nodoc:
22
+ load_listing
23
+
24
+ @options = []
25
+ @commands = []
26
+ sort_commands
27
+ puts ""
28
+ puts "Usage: limelight #{@options.join(' ')} <command> [options] [params]"
29
+ puts " commands:"
30
+ @commands.each do |command|
31
+ puts command
32
+ end
33
+ end
34
+
35
+ private #############################################
36
+
37
+ def sort_commands
38
+ Commands::LISTING.each_pair do |key, command|
39
+ if key[0...1] == "-"
40
+ @options << "[#{key}]"
41
+ else
42
+ @commands << "\t#{key}\t\t#{command.description}"
43
+ end
44
+ end
45
+ @commands.sort!
46
+ end
47
+
48
+ def load_listing #:nodoc:
49
+ Dir.entries(File.dirname(__FILE__)).each do |file|
50
+ if file != "." && file != ".."
51
+ require "limelight/commands/#{file.gsub('.rb', '')}"
52
+ end
53
+ end
54
+ end
55
+
56
+ end
57
+
58
+ end
59
+
60
+
61
+ end
@@ -0,0 +1,60 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require 'limelight/commands/command'
5
+
6
+ module Limelight
7
+ module Commands
8
+
9
+ # See the following usage summary.
10
+ #
11
+ # Usage: limelight open <production_path>
12
+ # Open a limelight production.
13
+ # options:
14
+ # -h, --help Prints this usage summary.
15
+ # -d, --drb_port=<port> Publish the Studio using DRb on the specified port.
16
+ #
17
+ class OpenCommand < Command
18
+
19
+ install_as "open"
20
+
21
+ DEFAULT_PRODUCTION = File.expand_path($LIMELIGHT_HOME + "/productions/startup")
22
+
23
+ attr_reader :drb_port
24
+
25
+ def initialize
26
+ self.print_backtrace = true
27
+ end
28
+
29
+ def self.description
30
+ return "Open a limelight production."
31
+ end
32
+
33
+ protected ###########################################
34
+
35
+ def parameter_description
36
+ return "<production_path>"
37
+ end
38
+
39
+ def do_requires
40
+ Main.initialize_context
41
+ require 'limelight/producer'
42
+ end
43
+
44
+ def build_options(spec) #:nodoc:
45
+ spec.on("-d <port>", "--drb_port=<port>", "Publish the Studio using DRb on the specified port.") { |value| @drb_port = value }
46
+ end
47
+
48
+ def parse_remainder(args)
49
+ @production_path = args.shift || DEFAULT_PRODUCTION
50
+ end
51
+
52
+ def process
53
+ Studio.publish_on_drb(@drb_port.to_i) if @drb_port
54
+ Studio.open(@production_path)
55
+ end
56
+
57
+ end
58
+
59
+ end
60
+ end
@@ -0,0 +1,45 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require 'limelight/commands/command'
5
+
6
+ module Limelight
7
+ module Commands
8
+
9
+ # See the following usage summary.
10
+ #
11
+ # Usage: limelight pack <production_path>
12
+ # Pack a limelight production into a .llp file.
13
+ # options:
14
+ # -h, --help Prints this usage summary.
15
+ #
16
+ class PackCommand < Command
17
+
18
+ install_as "pack"
19
+
20
+ def self.description #:nodoc:
21
+ return "Pack a limelight production into a .llp file."
22
+ end
23
+
24
+ protected ###########################################
25
+
26
+ def parameter_description #:nodoc:
27
+ return "<production_path>"
28
+ end
29
+
30
+ def parse_remainder(args) #:nodoc:
31
+ @production_path = args.shift
32
+ raise "Missing production path" if @production_path.nil?
33
+ end
34
+
35
+ def process #:nodoc:
36
+ packer = Limelight::Util::Packer.new
37
+ packer.pack(@production_path)
38
+ end
39
+
40
+ end
41
+
42
+ end
43
+
44
+
45
+ end
@@ -0,0 +1,44 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require 'limelight/commands/command'
5
+
6
+ module Limelight
7
+ module Commands
8
+
9
+ # See the following usage summary.
10
+ #
11
+ # Usage: limelight unpack <production_path>
12
+ # Unpack a limelight production into the tmp directory.
13
+ # options:
14
+ # -h, --help Prints this usage summary.
15
+ #
16
+ class UnpackCommand < Command
17
+
18
+ install_as "unpack"
19
+
20
+ def self.description #:nodoc:
21
+ return "Unpack a limelight production into the tmp directory."
22
+ end
23
+
24
+ protected ###########################################
25
+
26
+ def parameter_description #:nodoc:
27
+ return "<production_path>"
28
+ end
29
+
30
+ def parse_remainder(args) #:nodoc:
31
+ @production_path = args.shift
32
+ raise "Missing production path" if @production_path.nil?
33
+ end
34
+
35
+ def process #:nodoc:
36
+ Main.initialize_temp_directory
37
+ packer = Limelight::Util::Packer.new
38
+ location = packer.unpack(@production_path)
39
+ puts "Production was unpacked to: #{location}"
40
+ end
41
+
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,31 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require 'limelight/commands/command'
5
+
6
+ module Limelight
7
+ module Commands
8
+
9
+ # Prints the current Limelight version
10
+ #
11
+ class VersionCommand < Command
12
+
13
+ install_as "--version"
14
+
15
+ def self.description #:nodoc:
16
+ return "Prints the current Limelight version"
17
+ end
18
+
19
+ protected ###########################################
20
+
21
+ def process #:nodoc:
22
+ require 'limelight/version'
23
+ puts "Limelight, version #{VERSION::STRING}"
24
+ end
25
+
26
+ end
27
+
28
+ end
29
+
30
+
31
+ end
@@ -0,0 +1,37 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ module Limelight
5
+
6
+ class Data
7
+
8
+ class << self
9
+
10
+ def reset
11
+ @root = nil
12
+ end
13
+
14
+ def root
15
+ @root = Context.instance.os.dataRoot if @root == nil
16
+ return @root
17
+ end
18
+
19
+ def downloads_dir
20
+ return File.join(root, "Downloads")
21
+ end
22
+
23
+ def productions_dir
24
+ return File.join(root, "Productions")
25
+ end
26
+
27
+ def establish_data_dirs
28
+ Dir.mkdir(root) if !File.exists?(root)
29
+ Dir.mkdir(downloads_dir) if !File.exists?(downloads_dir)
30
+ Dir.mkdir(productions_dir) if !File.exists?(productions_dir)
31
+ end
32
+
33
+ end
34
+
35
+ end
36
+
37
+ end
@@ -0,0 +1,55 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ module Limelight
5
+
6
+ module DSL
7
+
8
+ # An Exception used by many of the DSL Builders. Allows nice errors messages, with line numbers, to be printed.
9
+ #
10
+ class BuildException < Exception
11
+
12
+ attr_reader :filename, :line_number
13
+
14
+ def initialize(filename, file_contents, e)
15
+ @filename = filename
16
+ @file_contents = file_contents
17
+ @original_exception = e
18
+ @line_number = find_line_number
19
+ super(build_error_message)
20
+ set_backtrace(e.backtrace)
21
+ end
22
+
23
+ def find_line_number
24
+ lines = [@original_exception.message].concat @original_exception.backtrace
25
+ line_number = nil
26
+ lines.each do |line|
27
+ match = line.match(/\(eval\):(\d+):/)
28
+ if (match)
29
+ line_number = match[1].to_i
30
+ break
31
+ end
32
+ end
33
+ return line_number
34
+ end
35
+
36
+ def build_error_message
37
+ lines = @file_contents.split("\n")
38
+ if @line_number
39
+ start_line = @line_number - 4 < 0 ? 0 : @line_number - 4
40
+ end_line = @line_number + 2 >= lines.size ? lines.size - 1: @line_number + 2
41
+ message = "#{@filename}:#{@line_number}: #{@original_exception.message}"
42
+ message << "\n\t----- #{@filename} lines #{start_line + 1} - #{end_line + 1} -----"
43
+ (start_line..end_line).each do |i|
44
+ message << "\n\t#{i == @line_number - 1 ? "*": " "} #{i+1}: #{lines[i]}"
45
+ end
46
+ else
47
+ message = "#{@filename}:? : #{@original_exception.message}"
48
+ end
49
+ message << "\n"
50
+ return message
51
+ end
52
+ end
53
+
54
+ end
55
+ end