atome 0.5.7.0.3 → 0.3191

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of atome might be problematic. Click here for more details.

Files changed (472) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -4
  3. data/README.md +5 -77
  4. data/Rakefile +7 -502
  5. data/app_builder_helpers/Rakefile +235 -0
  6. data/documentation/framework/enhance_atome.md +1 -1
  7. data/documentation/installation/atome_server.md +1 -66
  8. data/documentation/tutorials/tutorials.md +0 -7
  9. data/exe/atome +157 -819
  10. data/lib/atome/atome_native_extensions.rb +3 -0
  11. data/lib/atome/extensions/geolocation.rb +1 -1
  12. data/lib/atome/extensions/ping.rb +11 -10
  13. data/lib/atome/extensions/sha.rb +6 -8
  14. data/lib/atome/kernel/atome_genesis.rb +93 -0
  15. data/lib/atome/kernel/generators/shapes.rb +7 -0
  16. data/lib/atome/kernel/properties/geometry.rb +120 -0
  17. data/lib/atome/kernel/universe.rb +24 -295
  18. data/lib/atome/renderers/headless/headless.rb +0 -0
  19. data/lib/atome/renderers/headless/properties/generator.rb +0 -0
  20. data/lib/atome/renderers/opal/atome_opal_extensions.rb +4 -0
  21. data/lib/{platform_specific → atome/renderers}/opal/extensions/geolocation.rb +1 -1
  22. data/lib/atome/renderers/opal/extensions/ping.rb +13 -0
  23. data/lib/atome/renderers/opal/extensions/sha.rb +11 -0
  24. data/lib/atome/renderers/opal/opal_browser.rb +8 -0
  25. data/lib/{platform_specific → atome/renderers}/opal/opal_parser.rb +0 -1
  26. data/lib/atome/renderers/opal/properties/generator.rb +6 -0
  27. data/lib/atome/renderers/server/server.rb +0 -0
  28. data/lib/atome/version.rb +1 -2
  29. data/lib/atome.rb +16 -35
  30. data/sig/atome.rbs +0 -75
  31. data/vendor/assets/Guardfile +4 -0
  32. data/vendor/assets/Rakefile +2 -12
  33. data/vendor/assets/application/index.rb +2 -7
  34. data/vendor/assets/build/css/style.css +53 -0
  35. data/vendor/assets/build/index.html +24 -0
  36. data/vendor/assets/build/js/application.js +0 -0
  37. data/vendor/assets/build/js/third_parties/interact.min.js +4 -0
  38. data/vendor/assets/build/js/third_parties/popmotion.min.js +1 -0
  39. data/vendor/assets/examples/misc.rb +219 -0
  40. data/vendor/assets/examples/ping.rb +3 -0
  41. data/vendor/assets/examples/storage.rb +9 -0
  42. data/vendor/assets/examples/view_example.rb +21 -0
  43. data/vendor/assets/server/atome_server.rb +96 -33
  44. data/vendor/assets/server/config.ru +3 -8
  45. metadata +69 -512
  46. data/CHANGELOG.md +0 -21
  47. data/atome.gemspec +0 -100
  48. data/documentation/basic.md +0 -241
  49. data/documentation/deep learning/architecture.txt +0 -3763
  50. data/documentation/deep learning/atome.png +0 -0
  51. data/documentation/deep learning/basic_infos.txt +0 -289
  52. data/documentation/deep learning/example_of_users_code.rb +0 -1810
  53. data/documentation/deep learning/misc.txt +0 -24
  54. data/documentation/deep learning/ruby_js_example.rb +0 -272
  55. data/documentation/deep learning/wasm_script_help.text +0 -14
  56. data/documentation/installation/buiding_atome.md +0 -307
  57. data/lib/atome/atome.rb +0 -131
  58. data/lib/atome/extensions/atome.rb +0 -705
  59. data/lib/atome/extensions/mathematics.rb +0 -20
  60. data/lib/atome/genesis/atomes.rb +0 -109
  61. data/lib/atome/genesis/genesis.rb +0 -272
  62. data/lib/atome/genesis/particles/atome.rb +0 -4
  63. data/lib/atome/genesis/particles/communication.rb +0 -43
  64. data/lib/atome/genesis/particles/effect.rb +0 -14
  65. data/lib/atome/genesis/particles/event.rb +0 -344
  66. data/lib/atome/genesis/particles/geometry.rb +0 -31
  67. data/lib/atome/genesis/particles/hierarchy.rb +0 -105
  68. data/lib/atome/genesis/particles/identity.rb +0 -82
  69. data/lib/atome/genesis/particles/material.rb +0 -119
  70. data/lib/atome/genesis/particles/property.rb +0 -147
  71. data/lib/atome/genesis/particles/security.rb +0 -77
  72. data/lib/atome/genesis/particles/spatial.rb +0 -98
  73. data/lib/atome/genesis/particles/time.rb +0 -4
  74. data/lib/atome/genesis/particles/utility.rb +0 -261
  75. data/lib/atome/genesis/presets.rb +0 -10
  76. data/lib/atome/genesis/sparkle.rb +0 -217
  77. data/lib/atome/kernel/black_matter.rb +0 -22
  78. data/lib/atome/presets/atome.rb +0 -79
  79. data/lib/atome/utilities/color_helper/color/cmyk.rb +0 -263
  80. data/lib/atome/utilities/color_helper/color/css.rb +0 -7
  81. data/lib/atome/utilities/color_helper/color/grayscale.rb +0 -197
  82. data/lib/atome/utilities/color_helper/color/hsl.rb +0 -240
  83. data/lib/atome/utilities/color_helper/color/palette/adobecolor.rb +0 -260
  84. data/lib/atome/utilities/color_helper/color/palette/gimp.rb +0 -104
  85. data/lib/atome/utilities/color_helper/color/palette/monocontrast.rb +0 -164
  86. data/lib/atome/utilities/color_helper/color/palette.rb +0 -4
  87. data/lib/atome/utilities/color_helper/color/rgb/colors.rb +0 -167
  88. data/lib/atome/utilities/color_helper/color/rgb/contrast.rb +0 -57
  89. data/lib/atome/utilities/color_helper/color/rgb/metallic.rb +0 -28
  90. data/lib/atome/utilities/color_helper/color/rgb.rb +0 -715
  91. data/lib/atome/utilities/color_helper/color/yiq.rb +0 -62
  92. data/lib/atome/utilities/color_helper/color.rb +0 -415
  93. data/lib/atome/utilities/essentials.rb +0 -70
  94. data/lib/atome/utilities/sanitizer.rb +0 -13
  95. data/lib/atome/utilities/security.rb +0 -71
  96. data/lib/atome/utilities/utilities.rb +0 -656
  97. data/lib/atome_relative.rb +0 -39
  98. data/lib/molecules/_deprecated_examples/site.rb +0 -34
  99. data/lib/molecules/init.rb +0 -31
  100. data/lib/molecules/intuition/_deprecated_inputs.rb +0 -111
  101. data/lib/molecules/intuition/_deprecated_toolbox.rb +0 -282
  102. data/lib/molecules/intuition/utillities.rb +0 -408
  103. data/lib/platform_specific/opal/atome_opal_extensions.rb +0 -11
  104. data/lib/platform_specific/opal/extensions/color.rb +0 -30
  105. data/lib/platform_specific/opal/extensions/js.rb +0 -20
  106. data/lib/platform_specific/opal/extensions/object.rb +0 -6
  107. data/lib/platform_specific/opal/extensions/ping.rb +0 -31
  108. data/lib/platform_specific/opal/extensions/sha.rb +0 -25
  109. data/lib/platform_specific/opal/opal.rb +0 -5
  110. data/lib/platform_specific/wasm/atome_wasm_extensions.rb +0 -11
  111. data/lib/renderers/headless/headless.rb +0 -18
  112. data/lib/renderers/headless/index.rb +0 -6
  113. data/lib/renderers/headless/index_relative.rb +0 -6
  114. data/lib/renderers/headless/utility.rb +0 -6
  115. data/lib/renderers/html/atome.rb +0 -2
  116. data/lib/renderers/html/atome_html.rb +0 -22
  117. data/lib/renderers/html/communication.rb +0 -3
  118. data/lib/renderers/html/effect.rb +0 -51
  119. data/lib/renderers/html/event.rb +0 -59
  120. data/lib/renderers/html/geometry.rb +0 -49
  121. data/lib/renderers/html/hierarchy.rb +0 -248
  122. data/lib/renderers/html/html.rb +0 -1688
  123. data/lib/renderers/html/identity.rb +0 -104
  124. data/lib/renderers/html/index.rb +0 -19
  125. data/lib/renderers/html/index_relative.rb +0 -20
  126. data/lib/renderers/html/material.rb +0 -88
  127. data/lib/renderers/html/property.rb +0 -52
  128. data/lib/renderers/html/security.rb +0 -1
  129. data/lib/renderers/html/spatial.rb +0 -75
  130. data/lib/renderers/html/time.rb +0 -1
  131. data/lib/renderers/html/utility.rb +0 -170
  132. data/lib/renderers/renderer.rb +0 -16
  133. data/lib/renderers/server/index.rb +0 -4
  134. data/lib/renderers/server/index_relative.rb +0 -4
  135. data/lib/renderers/server/utility.rb +0 -4
  136. data/sig/atome_js.rbs +0 -1
  137. data/sig/batch.rbs +0 -7
  138. data/sig/browser_helper.rbs +0 -14
  139. data/sig/essentials.rbs +0 -11
  140. data/sig/genesis.rbs +0 -3
  141. data/sig/global_variables.rbs +0 -1
  142. data/sig/matrix.rbs +0 -5
  143. data/sig/object.rbs +0 -7
  144. data/sig/universe.rbs +0 -3
  145. data/src/utilities/host_mode.rb +0 -5
  146. data/vendor/assets/application/examples/affect.rb +0 -8
  147. data/vendor/assets/application/examples/aid.rb +0 -10
  148. data/vendor/assets/application/examples/allow_copy.rb +0 -13
  149. data/vendor/assets/application/examples/allow_system_right_click.rb +0 -16
  150. data/vendor/assets/application/examples/alternate.rb +0 -36
  151. data/vendor/assets/application/examples/animation.rb +0 -91
  152. data/vendor/assets/application/examples/apply.rb +0 -8
  153. data/vendor/assets/application/examples/atome.rb +0 -5
  154. data/vendor/assets/application/examples/atome_particle_validation.rb +0 -7
  155. data/vendor/assets/application/examples/atome_sparkle_use.rb +0 -6
  156. data/vendor/assets/application/examples/atomizer.rb +0 -86
  157. data/vendor/assets/application/examples/attach.rb +0 -34
  158. data/vendor/assets/application/examples/attached.rb +0 -45
  159. data/vendor/assets/application/examples/b64_to_image.rb +0 -9
  160. data/vendor/assets/application/examples/basic_understanding.rb +0 -54
  161. data/vendor/assets/application/examples/behavior.rb +0 -32
  162. data/vendor/assets/application/examples/blur.rb +0 -26
  163. data/vendor/assets/application/examples/border.rb +0 -75
  164. data/vendor/assets/application/examples/browse.rb +0 -17
  165. data/vendor/assets/application/examples/categories.rb +0 -5
  166. data/vendor/assets/application/examples/category.rb +0 -16
  167. data/vendor/assets/application/examples/center.rb +0 -7
  168. data/vendor/assets/application/examples/clear.rb +0 -96
  169. data/vendor/assets/application/examples/clones&monitoring.rb +0 -105
  170. data/vendor/assets/application/examples/code.rb +0 -13
  171. data/vendor/assets/application/examples/color.rb +0 -54
  172. data/vendor/assets/application/examples/compute.rb +0 -16
  173. data/vendor/assets/application/examples/console.rb +0 -4
  174. data/vendor/assets/application/examples/convert.rb +0 -163
  175. data/vendor/assets/application/examples/copy.rb +0 -25
  176. data/vendor/assets/application/examples/copybck.rb +0 -68
  177. data/vendor/assets/application/examples/css.rb +0 -6
  178. data/vendor/assets/application/examples/database_handling.rb +0 -39
  179. data/vendor/assets/application/examples/debug.rb +0 -78
  180. data/vendor/assets/application/examples/delete.rb +0 -105
  181. data/vendor/assets/application/examples/dig.rb +0 -13
  182. data/vendor/assets/application/examples/display.rb +0 -279
  183. data/vendor/assets/application/examples/display_bck.rb +0 -164
  184. data/vendor/assets/application/examples/drag.rb +0 -54
  185. data/vendor/assets/application/examples/drop.rb +0 -35
  186. data/vendor/assets/application/examples/duplicate.rb +0 -70
  187. data/vendor/assets/application/examples/edit.rb +0 -24
  188. data/vendor/assets/application/examples/encode.rb +0 -6
  189. data/vendor/assets/application/examples/encrypt.rb +0 -6
  190. data/vendor/assets/application/examples/example.rb +0 -27
  191. data/vendor/assets/application/examples/executor.rb +0 -36
  192. data/vendor/assets/application/examples/file.rb +0 -16
  193. data/vendor/assets/application/examples/fill.rb +0 -23
  194. data/vendor/assets/application/examples/find.rb +0 -158
  195. data/vendor/assets/application/examples/fit.rb +0 -26
  196. data/vendor/assets/application/examples/fonts.rb +0 -15
  197. data/vendor/assets/application/examples/generator_and_build.rb +0 -15
  198. data/vendor/assets/application/examples/getter.rb +0 -16
  199. data/vendor/assets/application/examples/grab.rb +0 -14
  200. data/vendor/assets/application/examples/gradient.rb +0 -40
  201. data/vendor/assets/application/examples/group.rb +0 -44
  202. data/vendor/assets/application/examples/help.rb +0 -17
  203. data/vendor/assets/application/examples/hierarchy.rb +0 -21
  204. data/vendor/assets/application/examples/history.rb +0 -32
  205. data/vendor/assets/application/examples/holder.rb +0 -62
  206. data/vendor/assets/application/examples/hypertext.rb +0 -113
  207. data/vendor/assets/application/examples/image.rb +0 -5
  208. data/vendor/assets/application/examples/import.rb +0 -33
  209. data/vendor/assets/application/examples/increment.rb +0 -23
  210. data/vendor/assets/application/examples/infos.rb +0 -10
  211. data/vendor/assets/application/examples/input.rb +0 -34
  212. data/vendor/assets/application/examples/int8.rb +0 -17
  213. data/vendor/assets/application/examples/js&ruby.rb +0 -18
  214. data/vendor/assets/application/examples/keyboard.rb +0 -59
  215. data/vendor/assets/application/examples/layout.rb +0 -38
  216. data/vendor/assets/application/examples/list.rb +0 -72
  217. data/vendor/assets/application/examples/localstorage.rb +0 -19
  218. data/vendor/assets/application/examples/login.rb +0 -84
  219. data/vendor/assets/application/examples/markup.rb +0 -4
  220. data/vendor/assets/application/examples/match.rb +0 -115
  221. data/vendor/assets/application/examples/matrix.rb +0 -118
  222. data/vendor/assets/application/examples/monitor.rb +0 -14
  223. data/vendor/assets/application/examples/on_resize.rb +0 -7
  224. data/vendor/assets/application/examples/on_the_fly_ruby_code_loading.rb +0 -9
  225. data/vendor/assets/application/examples/online.rb +0 -3
  226. data/vendor/assets/application/examples/opacity.rb +0 -9
  227. data/vendor/assets/application/examples/over.rb +0 -29
  228. data/vendor/assets/application/examples/paint.rb +0 -29
  229. data/vendor/assets/application/examples/particles.rb +0 -4
  230. data/vendor/assets/application/examples/percent_to_px.rb +0 -4
  231. data/vendor/assets/application/examples/play.rb +0 -50
  232. data/vendor/assets/application/examples/preset.rb +0 -33
  233. data/vendor/assets/application/examples/random.rb +0 -42
  234. data/vendor/assets/application/examples/raw_html.rb +0 -48
  235. data/vendor/assets/application/examples/read.rb +0 -13
  236. data/vendor/assets/application/examples/recorder.rb +0 -74
  237. data/vendor/assets/application/examples/refresh.rb +0 -62
  238. data/vendor/assets/application/examples/remove.rb +0 -60
  239. data/vendor/assets/application/examples/repeat.rb +0 -26
  240. data/vendor/assets/application/examples/resize.rb +0 -17
  241. data/vendor/assets/application/examples/scroll.rb +0 -11
  242. data/vendor/assets/application/examples/security.rb +0 -76
  243. data/vendor/assets/application/examples/select_text.rb +0 -18
  244. data/vendor/assets/application/examples/selected.rb +0 -35
  245. data/vendor/assets/application/examples/server.rb +0 -24
  246. data/vendor/assets/application/examples/shadow.rb +0 -60
  247. data/vendor/assets/application/examples/shapes.rb +0 -6
  248. data/vendor/assets/application/examples/shortcut.rb +0 -25
  249. data/vendor/assets/application/examples/site.rb +0 -41
  250. data/vendor/assets/application/examples/size.rb +0 -17
  251. data/vendor/assets/application/examples/sliders.rb +0 -17
  252. data/vendor/assets/application/examples/smooth.rb +0 -9
  253. data/vendor/assets/application/examples/style.rb +0 -4
  254. data/vendor/assets/application/examples/sub_atome_manipulation.rb +0 -20
  255. data/vendor/assets/application/examples/svg_img_to_vector.rb +0 -6
  256. data/vendor/assets/application/examples/svg_vectorizer.rb +0 -21
  257. data/vendor/assets/application/examples/sync.rb +0 -38
  258. data/vendor/assets/application/examples/table.rb +0 -76
  259. data/vendor/assets/application/examples/tagged.rb +0 -24
  260. data/vendor/assets/application/examples/terminal.rb +0 -4
  261. data/vendor/assets/application/examples/test.rb +0 -584
  262. data/vendor/assets/application/examples/text.rb +0 -5
  263. data/vendor/assets/application/examples/tick.rb +0 -29
  264. data/vendor/assets/application/examples/tools.rb +0 -666
  265. data/vendor/assets/application/examples/touch.rb +0 -41
  266. data/vendor/assets/application/examples/type_mutation.rb +0 -18
  267. data/vendor/assets/application/examples/unit.rb +0 -14
  268. data/vendor/assets/application/examples/universe.rb +0 -8
  269. data/vendor/assets/application/examples/vector.rb +0 -37
  270. data/vendor/assets/application/examples/video.rb +0 -14
  271. data/vendor/assets/application/examples/wait.rb +0 -6
  272. data/vendor/assets/application/examples/www.rb +0 -10
  273. data/vendor/assets/server/atome_server_wasm.rb +0 -54
  274. data/vendor/assets/server/capture.rb +0 -10
  275. data/vendor/assets/server/database.rb +0 -63
  276. data/vendor/assets/server/eDen.rb +0 -302
  277. data/vendor/assets/server/extensions.rb +0 -13
  278. data/vendor/assets/src/css/style.css +0 -167
  279. data/vendor/assets/src/index.html +0 -45
  280. data/vendor/assets/src/index_opal.html +0 -40
  281. data/vendor/assets/src/index_server.html +0 -38
  282. data/vendor/assets/src/index_server_wasm.html +0 -45
  283. data/vendor/assets/src/index_wasm.html +0 -50
  284. data/vendor/assets/src/js/atome/atome.js +0 -506
  285. data/vendor/assets/src/js/atome/atome_helpers/add_font.js +0 -46
  286. data/vendor/assets/src/js/atome/atome_helpers/atome_animate.js +0 -65
  287. data/vendor/assets/src/js/atome/atome_helpers/atome_drag.js +0 -124
  288. data/vendor/assets/src/js/atome/atome_helpers/atome_drop.js +0 -12
  289. data/vendor/assets/src/js/atome/atome_helpers/atome_events.js +0 -171
  290. data/vendor/assets/src/js/atome/atome_helpers/atome_over.js +0 -43
  291. data/vendor/assets/src/js/atome/atome_helpers/atome_sort.js +0 -20
  292. data/vendor/assets/src/js/atome/atome_helpers/atome_time.js +0 -10
  293. data/vendor/assets/src/js/atome/atome_helpers/atome_video.js +0 -12
  294. data/vendor/assets/src/js/atome/atome_helpers/communication.js +0 -35
  295. data/vendor/assets/src/js/atome/atome_helpers/file.js +0 -12
  296. data/vendor/assets/src/js/atome/specific/opal.js +0 -111
  297. data/vendor/assets/src/js/atome/specific/wasm.js +0 -123
  298. data/vendor/assets/src/js/molecules/web.js +0 -4
  299. data/vendor/assets/src/js/third_parties/browser.script.iife.min.js +0 -13
  300. data/vendor/assets/src/js/third_parties/fabric.min.js +0 -1
  301. data/vendor/assets/src/js/third_parties/html-to-image.min.js +0 -2
  302. data/vendor/assets/src/js/third_parties/interact.min.js +0 -3
  303. data/vendor/assets/src/js/third_parties/jsencrypt.min.js +0 -2
  304. data/vendor/assets/src/js/third_parties/papaparse.min.js +0 -7
  305. data/vendor/assets/src/js/third_parties/popmotion.min.js +0 -1
  306. data/vendor/assets/src/js/third_parties/sortable.min.js +0 -2
  307. data/vendor/assets/src/js/third_parties/three.min.js +0 -6
  308. data/vendor/assets/src/js/third_parties/w3color.js +0 -646
  309. data/vendor/assets/src/js/third_parties/wad.min.js +0 -9
  310. data/vendor/assets/src/js/third_parties/zim.min.js +0 -1
  311. data/vendor/assets/src/medias/audios/audio_missing.wav +0 -0
  312. data/vendor/assets/src/medias/audios/clap.wav +0 -0
  313. data/vendor/assets/src/medias/audios/cowbell.wav +0 -0
  314. data/vendor/assets/src/medias/audios/hihat.wav +0 -0
  315. data/vendor/assets/src/medias/audios/kick.wav +0 -0
  316. data/vendor/assets/src/medias/audios/riff.m4a +0 -0
  317. data/vendor/assets/src/medias/audios/snare.wav +0 -0
  318. data/vendor/assets/src/medias/audios/tom.wav +0 -0
  319. data/vendor/assets/src/medias/fonts/Roboto/LICENSE.txt +0 -202
  320. data/vendor/assets/src/medias/fonts/Roboto/Roboto-Black.ttf +0 -0
  321. data/vendor/assets/src/medias/fonts/Roboto/Roboto-BlackItalic.ttf +0 -0
  322. data/vendor/assets/src/medias/fonts/Roboto/Roboto-Bold.ttf +0 -0
  323. data/vendor/assets/src/medias/fonts/Roboto/Roboto-BoldItalic.ttf +0 -0
  324. data/vendor/assets/src/medias/fonts/Roboto/Roboto-Italic.ttf +0 -0
  325. data/vendor/assets/src/medias/fonts/Roboto/Roboto-Light.ttf +0 -0
  326. data/vendor/assets/src/medias/fonts/Roboto/Roboto-LightItalic.ttf +0 -0
  327. data/vendor/assets/src/medias/fonts/Roboto/Roboto-Medium.ttf +0 -0
  328. data/vendor/assets/src/medias/fonts/Roboto/Roboto-MediumItalic.ttf +0 -0
  329. data/vendor/assets/src/medias/fonts/Roboto/Roboto-Regular.ttf +0 -0
  330. data/vendor/assets/src/medias/fonts/Roboto/Roboto-Thin.ttf +0 -0
  331. data/vendor/assets/src/medias/fonts/Roboto/Roboto-ThinItalic.ttf +0 -0
  332. data/vendor/assets/src/medias/fonts/Roboto_Slab/LICENSE.txt +0 -202
  333. data/vendor/assets/src/medias/fonts/Roboto_Slab/README.txt +0 -71
  334. data/vendor/assets/src/medias/fonts/Roboto_Slab/RobotoSlab-VariableFont_wght.ttf +0 -0
  335. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Black.ttf +0 -0
  336. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Bold.ttf +0 -0
  337. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-ExtraBold.ttf +0 -0
  338. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-ExtraLight.ttf +0 -0
  339. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Light.ttf +0 -0
  340. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Medium.ttf +0 -0
  341. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Regular.ttf +0 -0
  342. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-SemiBold.ttf +0 -0
  343. data/vendor/assets/src/medias/fonts/Roboto_Slab/static/RobotoSlab-Thin.ttf +0 -0
  344. data/vendor/assets/src/medias/images/atome.svg +0 -12
  345. data/vendor/assets/src/medias/images/ballanim.png +0 -0
  346. data/vendor/assets/src/medias/images/blank.png +0 -0
  347. data/vendor/assets/src/medias/images/green_planet.png +0 -0
  348. data/vendor/assets/src/medias/images/icons/Lowpass.svg +0 -8
  349. data/vendor/assets/src/medias/images/icons/activate.svg +0 -3
  350. data/vendor/assets/src/medias/images/icons/audio.svg +0 -7
  351. data/vendor/assets/src/medias/images/icons/band_pass.svg +0 -8
  352. data/vendor/assets/src/medias/images/icons/clear.svg +0 -5
  353. data/vendor/assets/src/medias/images/icons/color.svg +0 -5
  354. data/vendor/assets/src/medias/images/icons/copy.svg +0 -8
  355. data/vendor/assets/src/medias/images/icons/create.svg +0 -3
  356. data/vendor/assets/src/medias/images/icons/delete.svg +0 -8
  357. data/vendor/assets/src/medias/images/icons/edit-.svg +0 -4
  358. data/vendor/assets/src/medias/images/icons/edit.svg +0 -4
  359. data/vendor/assets/src/medias/images/icons/edition.svg +0 -4
  360. data/vendor/assets/src/medias/images/icons/email.svg +0 -13
  361. data/vendor/assets/src/medias/images/icons/equalizer-.svg +0 -5
  362. data/vendor/assets/src/medias/images/icons/equalizer.svg +0 -5
  363. data/vendor/assets/src/medias/images/icons/filter.svg +0 -4
  364. data/vendor/assets/src/medias/images/icons/folder.svg +0 -4
  365. data/vendor/assets/src/medias/images/icons/group.svg +0 -6
  366. data/vendor/assets/src/medias/images/icons/hamburger.svg +0 -8
  367. data/vendor/assets/src/medias/images/icons/high_pass.svg +0 -5
  368. data/vendor/assets/src/medias/images/icons/link.svg +0 -4
  369. data/vendor/assets/src/medias/images/icons/load.svg +0 -4
  370. data/vendor/assets/src/medias/images/icons/low_pass.svg +0 -5
  371. data/vendor/assets/src/medias/images/icons/mail_gray.svg +0 -6
  372. data/vendor/assets/src/medias/images/icons/mail_green.svg +0 -6
  373. data/vendor/assets/src/medias/images/icons/mail_orange.svg +0 -6
  374. data/vendor/assets/src/medias/images/icons/microphone.svg +0 -7
  375. data/vendor/assets/src/medias/images/icons/midi_in.svg +0 -4
  376. data/vendor/assets/src/medias/images/icons/midi_out.svg +0 -4
  377. data/vendor/assets/src/medias/images/icons/modules.svg +0 -11
  378. data/vendor/assets/src/medias/images/icons/paste.svg +0 -4
  379. data/vendor/assets/src/medias/images/icons/pause.svg +0 -5
  380. data/vendor/assets/src/medias/images/icons/play.svg +0 -7
  381. data/vendor/assets/src/medias/images/icons/record.svg +0 -4
  382. data/vendor/assets/src/medias/images/icons/save.svg +0 -5
  383. data/vendor/assets/src/medias/images/icons/select--.svg +0 -4
  384. data/vendor/assets/src/medias/images/icons/select-.svg +0 -5
  385. data/vendor/assets/src/medias/images/icons/select-all.svg +0 -4
  386. data/vendor/assets/src/medias/images/icons/select.svg +0 -4
  387. data/vendor/assets/src/medias/images/icons/settings.svg +0 -5
  388. data/vendor/assets/src/medias/images/icons/settings0.svg +0 -2
  389. data/vendor/assets/src/medias/images/icons/settings1.svg +0 -17
  390. data/vendor/assets/src/medias/images/icons/settings2.svg +0 -25
  391. data/vendor/assets/src/medias/images/icons/settings_old.svg +0 -6
  392. data/vendor/assets/src/medias/images/icons/shape.svg +0 -7
  393. data/vendor/assets/src/medias/images/icons/speaker.svg +0 -6
  394. data/vendor/assets/src/medias/images/icons/stop.svg +0 -4
  395. data/vendor/assets/src/medias/images/icons/tool.svg +0 -7
  396. data/vendor/assets/src/medias/images/icons/tools.svg +0 -9
  397. data/vendor/assets/src/medias/images/icons/undo.svg +0 -4
  398. data/vendor/assets/src/medias/images/icons/undo2.svg +0 -4
  399. data/vendor/assets/src/medias/images/icons/validate.svg +0 -9
  400. data/vendor/assets/src/medias/images/icons/vie.svg +0 -3
  401. data/vendor/assets/src/medias/images/icons/wave-saw.svg +0 -3
  402. data/vendor/assets/src/medias/images/icons/wave-sine.svg +0 -3
  403. data/vendor/assets/src/medias/images/icons/wave-square-.svg +0 -4
  404. data/vendor/assets/src/medias/images/icons/wave-square.svg +0 -3
  405. data/vendor/assets/src/medias/images/icons/wave-triangle.svg +0 -3
  406. data/vendor/assets/src/medias/images/icons/waveform-.svg +0 -4
  407. data/vendor/assets/src/medias/images/icons/waveform.svg +0 -7
  408. data/vendor/assets/src/medias/images/logos/Facebook.svg +0 -8
  409. data/vendor/assets/src/medias/images/logos/GitHub Black.svg +0 -7
  410. data/vendor/assets/src/medias/images/logos/GitHub.svg +0 -7
  411. data/vendor/assets/src/medias/images/logos/LinkedIn-full.svg +0 -109
  412. data/vendor/assets/src/medias/images/logos/LinkedIn.svg +0 -11
  413. data/vendor/assets/src/medias/images/logos/Orange/Facebook.svg +0 -8
  414. data/vendor/assets/src/medias/images/logos/Orange/TikTok.svg +0 -11
  415. data/vendor/assets/src/medias/images/logos/Orange/Twitter.svg +0 -8
  416. data/vendor/assets/src/medias/images/logos/Orange/instagram.svg +0 -8
  417. data/vendor/assets/src/medias/images/logos/Orange/vimeo.svg +0 -8
  418. data/vendor/assets/src/medias/images/logos/Orange/youtube.svg +0 -7
  419. data/vendor/assets/src/medias/images/logos/TikTok.svg +0 -11
  420. data/vendor/assets/src/medias/images/logos/Twitter.svg +0 -35
  421. data/vendor/assets/src/medias/images/logos/X.svg +0 -5
  422. data/vendor/assets/src/medias/images/logos/YouTube.svg +0 -1
  423. data/vendor/assets/src/medias/images/logos/apple.svg +0 -4
  424. data/vendor/assets/src/medias/images/logos/atome.svg +0 -12
  425. data/vendor/assets/src/medias/images/logos/freebsd.png +0 -0
  426. data/vendor/assets/src/medias/images/logos/freebsd.svg +0 -8
  427. data/vendor/assets/src/medias/images/logos/gray/Facebook.svg +0 -8
  428. data/vendor/assets/src/medias/images/logos/gray/TikTok.svg +0 -11
  429. data/vendor/assets/src/medias/images/logos/gray/Twitter.svg +0 -8
  430. data/vendor/assets/src/medias/images/logos/gray/instagram.svg +0 -8
  431. data/vendor/assets/src/medias/images/logos/gray/vimeo.svg +0 -8
  432. data/vendor/assets/src/medias/images/logos/gray/youtube.svg +0 -7
  433. data/vendor/assets/src/medias/images/logos/gray/youtube2.svg +0 -13
  434. data/vendor/assets/src/medias/images/logos/instagram.svg +0 -6
  435. data/vendor/assets/src/medias/images/logos/tiktok_back.svg +0 -1
  436. data/vendor/assets/src/medias/images/logos/vimeo.svg +0 -17
  437. data/vendor/assets/src/medias/images/noise.svg +0 -17
  438. data/vendor/assets/src/medias/images/red_planet.png +0 -0
  439. data/vendor/assets/src/medias/images/tile.png +0 -0
  440. data/vendor/assets/src/medias/texts/lorem.txt +0 -1
  441. data/vendor/assets/src/medias/utils/infos/color.rb +0 -29
  442. data/vendor/assets/src/medias/utils/infos/width.rb +0 -25
  443. data/vendor/assets/src/medias/videos/video_missing.mp4 +0 -0
  444. data/vendor/assets/src-tauri/.gitignore +0 -4
  445. data/vendor/assets/src-tauri/Cargo.toml +0 -27
  446. data/vendor/assets/src-tauri/build.rs +0 -3
  447. data/vendor/assets/src-tauri/icons/128x128.png +0 -0
  448. data/vendor/assets/src-tauri/icons/128x128@2x.png +0 -0
  449. data/vendor/assets/src-tauri/icons/32x32.png +0 -0
  450. data/vendor/assets/src-tauri/icons/Square107x107Logo.png +0 -0
  451. data/vendor/assets/src-tauri/icons/Square142x142Logo.png +0 -0
  452. data/vendor/assets/src-tauri/icons/Square150x150Logo.png +0 -0
  453. data/vendor/assets/src-tauri/icons/Square284x284Logo.png +0 -0
  454. data/vendor/assets/src-tauri/icons/Square30x30Logo.png +0 -0
  455. data/vendor/assets/src-tauri/icons/Square310x310Logo.png +0 -0
  456. data/vendor/assets/src-tauri/icons/Square44x44Logo.png +0 -0
  457. data/vendor/assets/src-tauri/icons/Square71x71Logo.png +0 -0
  458. data/vendor/assets/src-tauri/icons/Square89x89Logo.png +0 -0
  459. data/vendor/assets/src-tauri/icons/StoreLogo.png +0 -0
  460. data/vendor/assets/src-tauri/icons/icon.icns +0 -0
  461. data/vendor/assets/src-tauri/icons/icon.ico +0 -0
  462. data/vendor/assets/src-tauri/icons/icon.png +0 -0
  463. data/vendor/assets/src-tauri/src/main.rs +0 -71
  464. data/vendor/assets/src-tauri/tauri.conf.json +0 -70
  465. data/vendor/assets/src-wasm/wasm/wasi-vfs-osx_arm +0 -0
  466. data/vendor/assets/src-wasm/wasm/wasi-vfs-osx_x86 +0 -0
  467. data/vendor/assets/src-wasm/wasm/wasi-vfs-unix +0 -0
  468. data/vendor/assets/src-wasm/wasm/wasi-vfs.exe +0 -0
  469. /data/vendor/assets/{src → build}/favicon.ico +0 -0
  470. /data/vendor/assets/{src/js/third_parties → build/js}/ping.min.js +0 -0
  471. /data/vendor/assets/{src → build}/js/third_parties/interact.min.js.map +0 -0
  472. /data/vendor/assets/{src → build}/js/third_parties/sha256.min.js +0 -0
data/exe/atome CHANGED
@@ -4,876 +4,214 @@
4
4
  require 'fileutils'
5
5
  require 'securerandom'
6
6
  require 'digest/sha2'
7
- require 'pathname'
8
- require 'opal'
9
- require 'parser'
10
- require 'uglifier'
11
- require 'rubygems'
12
- require 'gems'
13
-
14
- # utils
15
-
16
- def modify_and_copy_file(source_path, destination_path, destination_dir)
17
-
18
- file_content = File.read(source_path)
19
- cleaned_content = file_content.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '')
20
- modified_code = cleaned_content.gsub(/require\s+(['"])(.*?)\1/) do |match|
21
- quote = $1
22
- relative_path = $2
23
- if relative_path.start_with?('./')
24
- relative_path_copy = "#{relative_path}"
25
- relative_path_copy.slice!(0, 2)
26
- destination_dir_copy = "#{destination_dir}"
27
- destination_dir_copy.slice!(0, 2)
28
- "require #{quote}#{relative_path_copy}#{quote}"
29
- else
30
- match
31
- end
7
+ # below are the methods needed for atome creation and run
32
8
 
9
+ def found_path(arg_name)
10
+ project_name = ARGV[ARGV.find_index(arg_name) + 1]
11
+ path = `pwd`.chomp
12
+ if project_name != 'run' && project_name != 'guard' && !project_name.nil? && project_name != 'port:' && project_name != 'server' && project_name != 'build'
13
+ path = "#{path}/#{project_name}"
33
14
  end
34
- File.write(destination_path, modified_code)
15
+ path
35
16
  end
36
17
 
37
- def process_directories(source_dir, destination_dir)
38
-
39
- Dir.entries(source_dir).each do |entry|
40
- next if entry == '.' || entry == '..'
41
-
42
- source_path = File.join(source_dir, entry)
43
- destination_path = File.join(destination_dir, entry)
18
+ def delete_all(dir, user_application = false)
19
+ Dir.foreach(dir) do |e|
20
+ next if %w[. ..].include? e
44
21
 
45
- if File.directory?(source_path)
46
- Dir.mkdir(destination_path) unless Dir.exist?(destination_path)
47
- process_directories(source_path, destination_path)
48
- elsif File.file?(source_path)
49
- modify_and_copy_file(source_path, destination_path, destination_dir)
50
- end
51
- end
52
- end
53
-
54
- # builders
55
- def build_aui(destination, project_name)
56
- path = "#{destination}/#{project_name}/src/utilities/"
57
- FileUtils.mkdir_p(path) unless Dir.exist?(path)
58
- uuid = SecureRandom.uuid
59
- sha = Digest::SHA256.hexdigest(uuid)
60
- coded_id = sha.gsub('-', '_')
61
- aui_file = <<~STR
62
- class Atome
63
- def self.aui
64
- "#{coded_id}"
22
+ full_name = dir + File::Separator + e
23
+ if FileTest.directory?(full_name)
24
+ delete_all(full_name, user_application) if user_application && dir != 'application'
25
+ else
26
+ File.delete(full_name)
27
+ end
28
+ end
29
+ Dir.delete(dir) if user_application && dir != 'application'
30
+ end
31
+
32
+ def build_app(path, production)
33
+ # current_path = `pwd`.chomp
34
+ # now run the rake task to build the needed libraries (atome, renderers, etc...)
35
+ app_builder_helpers = File.join(File.dirname(__FILE__), '../app_builder_helpers')
36
+ # now run the rake task to compile user code to javascript
37
+ `cd #{app_builder_helpers};rake build_user_code[#{path},#{production}]`
38
+ end
39
+
40
+ def create_application(project_name, force, production)
41
+ # print "directory already exist, use force to overwrite"
42
+ new_app_creation = false
43
+ current_path = `pwd`.chomp
44
+ unless force && File.directory?(project_name)
45
+ new_app_creation = true
46
+ Dir.mkdir project_name
47
+ # now lets create the application identity
48
+ uuid = SecureRandom.uuid
49
+ sha = Digest::SHA256.hexdigest(uuid)
50
+ coded_id = sha.gsub('-', '_')
51
+ added_content = <<~STR
52
+ class Atome
53
+ def self.aui
54
+ "#{coded_id}"
55
+ end
65
56
  end
57
+ STR
58
+ file_location = "#{current_path}/#{project_name}/aui.rb"
59
+ File.new file_location, 'w'
60
+ File.open(file_location, 'w') do |f|
61
+ f.puts added_content
66
62
  end
67
- STR
68
- File.new("#{path}aui.rb", 'w')
69
- File.open("#{path}aui.rb", 'w') do |f|
70
- f.puts aui_file
71
- end
72
- # now building opal version
73
- js_directory = "#{destination}/#{project_name}/src/js"
74
- opal_js = "#{js_directory}/aui.js"
75
- FileUtils.mkdir_p(js_directory)
76
- File.new opal_js, 'w'
77
- # we add platform_specific script to the Opal framework
78
- opal_content = Opal::Builder.build("#{path}aui.rb").to_s
79
- File.open(opal_js, 'w') do |f|
80
- f.puts opal_content
81
63
  end
82
64
 
83
- end
84
-
85
- def build_host_mode(destination, project_name, mode)
86
- path = "#{destination}/#{project_name}/src/utilities/"
87
- FileUtils.mkdir_p(path) unless Dir.exist?(path)
88
- host_type = <<~STR
89
- class Atome
90
- def self.host
91
- "#{mode}"
92
- end
65
+ gem_assets_location = File.join(File.dirname(__FILE__), '../vendor/assets/')
66
+ app_builder_helpers = File.join(File.dirname(__FILE__), '../app_builder_helpers')
67
+ target_template_location = "#{current_path}/#{project_name}"
68
+ Dir.entries(gem_assets_location).select do |entry|
69
+ if File.join(entry) && !%w[. ..].include?(entry)
70
+ entry = "#{File.dirname(__FILE__)}/../vendor/assets/#{entry}"
71
+ FileUtils.cp_r entry, target_template_location
93
72
  end
94
- STR
95
- File.new("#{path}host_mode.rb", 'w')
96
- File.open("#{path}host_mode.rb", 'w') do |f|
97
- f.puts host_type
98
- end
99
- # now building opal version
100
- js_directory = "#{destination}/#{project_name}/src/js"
101
- opal_js = "#{js_directory}/host_mode.js"
102
- File.new opal_js, 'w'
103
- # we add platform_specific script to the Opal framework
104
- opal_content = Opal::Builder.build("#{path}host_mode.rb").to_s
105
- File.open(opal_js, 'w') do |f|
106
- f.puts opal_content
107
- end
108
- end
109
-
110
- # opal compilation
111
- def build_opal_application(_source, destination, project_name)
112
- # first we need to remplace all './require ' with require so opal can parse the path
113
- Dir.mkdir("#{destination}/#{project_name}/tmp") unless Dir.exist?("#{destination}/#{project_name}/tmp")
114
- unless Dir.exist?("#{destination}/#{project_name}/tmp/application")
115
- Dir.mkdir("#{destination}/#{project_name}/tmp/application")
116
- end
117
- process_directories("#{destination}/#{project_name}/application", "#{destination}/#{project_name}/tmp/application")
118
-
119
- opal_compiler_content = <<STR
120
- # frozen_string_literal: true
121
-
122
- require 'opal'
123
- application_js = "../../src/js/application.js"
124
- builder = Opal::Builder.new
125
- builder.append_paths("./")
126
- application_content = builder.build("./index.rb").to_s
127
- File.open(application_js, 'w') do |f|
128
- f.puts application_content
129
- end
130
- STR
131
-
132
- # we create an hidden file
133
- opal_compiler = "#{destination}/#{project_name}/tmp/application/.opal_compiler.rb"
134
- File.open(opal_compiler, 'w') do |f|
135
- f.puts opal_compiler_content
136
- end
137
- if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
138
- # code to exec with Windows
139
- `cd #{destination}\\#{project_name}\\tmp\\application\\ && echo %cd% && ruby .opal_compiler.rb`
140
-
141
- elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
142
- # code to exec with MacOS
143
- `cd #{destination}/#{project_name}/tmp/application/;pwd;ruby .opal_compiler.rb`
144
-
145
- else
146
- # code to exec with Unix/Linux
147
- `cd #{destination}/#{project_name}/tmp/application/;pwd;ruby .opal_compiler.rb`
148
- end
149
-
150
- end
151
-
152
- def add_to_application_folder(script_source, destination, project_name)
153
- # this method is to add addition script to the application folder (useful for test per example)
154
- destination_dir = "#{destination}/#{project_name}/application"
155
- FileUtils.cp_r(Dir["#{script_source}/*"], destination_dir)
156
- end
157
-
158
- def build_opal_library(atome_source, destination, project_name, production = nil)
159
-
160
- user_project_path = "#{destination}/#{project_name}"
161
- opal_directory = "#{user_project_path}/src/js/opal"
162
- opal_js = "#{opal_directory}/opal.js"
163
- Dir.mkdir(opal_directory) unless File.directory?(opal_directory)
164
- File.new opal_js, 'w'
165
- # we add platform_specific script to the Opal framework
166
- opal_content = Opal::Builder.build("#{atome_source}/lib/platform_specific/opal/opal.rb").to_s
167
- File.open(opal_js, 'w') do |f|
168
- f.puts opal_content
169
- end
170
- end
171
-
172
- def create_application(source, destination, project_name)
173
- project_path = "#{destination}/#{project_name}"
174
- FileUtils.mkdir_p(destination) unless Dir.exist?(destination)
175
- FileUtils.mkdir_p(project_path) unless Dir.exist?(project_path)
176
- files_list = ['application', 'server', 'src', 'src-tauri', 'src-wasm', 'Guardfile', 'Rakefile']
177
- file_to_refresh = ['application', 'server', 'src', 'src-tauri', 'Rakefile']
178
- # we delete many folder to ensure they'll refreshed
179
- file_to_refresh.each do |file|
180
- FileUtils.rm_rf("#{destination}/#{project_name}/#{file}")
181
- end
182
- # we copy all folder to be refreshed
183
- files_list.each do |file|
184
- FileUtils.cp_r("#{source}/vendor/assets/#{file}", "#{destination}/#{project_name}/#{file}")
185
- end
186
- build_aui(destination, project_name)
187
- # now lets add eVe now
188
- # if eVe_copy
189
- # # we update eVe first
190
- # gem_spec = Gem::Specification.find_by_name('atome_eVe')
191
- # gem_path = gem_spec.gem_dir
192
- # puts "eve location : #{gem_path}"
193
- # FileUtils.cp_r(Dir["#{gem_path}/*"], source+"/lib/eVe/")
194
- # end
195
- # build eVe kernel
196
- # build_eVe_kernel_for_opal(source, destination, project_name)
197
- end
198
-
199
- def update_application(source, destination, project_name)
200
- project_path = "#{destination}/#{project_name}"
201
- FileUtils.mkdir_p(destination) unless Dir.exist?(destination)
202
- FileUtils.mkdir_p(project_path) unless Dir.exist?(project_path)
203
- files_list = ['application', 'server', 'src', 'src-tauri', 'src-wasm', 'Guardfile', 'Rakefile']
204
- file_to_refresh = ['application', 'server', 'src',]
205
- # we delete many folder to ensure they'll refreshed
206
- file_to_refresh.each do |file|
207
- FileUtils.rm_rf("#{destination}/#{project_name}/#{file}")
208
- end
209
- # we copy all folder to be refreshed
210
- files_list.each do |file|
211
- FileUtils.cp_r("#{source}/vendor/assets/#{file}", "#{destination}/#{project_name}/#{file}") unless Dir.exist?(file)
212
- end
213
- build_aui(destination, project_name)
214
- end
215
-
216
- def build_opal_parser(source, destination, project_name)
217
- parser_js = "#{destination}/#{project_name}/src/js/opal/opal_parser.js"
218
- File.new parser_js, 'w'
219
- parser_content = Opal::Builder.build("#{source}/lib/platform_specific/opal/opal_parser.rb").to_s
220
- File.open(parser_js, 'w') do |f|
221
- f.puts parser_content
222
- end
223
- end
224
-
225
- def build_atome_kernel_for_opal(source, destination, project_name)
226
- # now lets build the atome kernel
227
- atome_directory = "#{destination}/#{project_name}/src/js/atome"
228
- kernel_js = "#{atome_directory}/kernel.js"
229
- FileUtils.mkdir_p(atome_directory)
230
- File.new kernel_js, 'w'
231
- builder = Opal::Builder.new
232
- builder.append_paths("#{source}/lib/")
233
- kernel_content = builder.build("#{source}/lib/atome.rb").to_s
234
- File.open(kernel_js, 'w') do |f|
235
- f.puts kernel_content
236
73
  end
237
- end
238
-
239
- # def build_eVe_kernel_for_opal(source, destination, project_name)
240
- #
241
- # gem_name = 'atome_eVe'
242
- # # begin
243
- # Gem::Specification.find_by_name(gem_name)
244
- # # puts " gem 'eve' est installée."
245
- # gem_spec = Gem::Specification.find_by_name(gem_name)
246
- # gem_path = gem_spec.gem_dir
247
- # # puts "Le chemin vers la gem '#{gem_name}' est '#{gem_path}'"
248
- # # puts '-----'
249
- # # puts "==> #{gem_path}/lib/eVe.rb"
250
- # # rescue Gem::LoadError
251
- # # # Code à exécuter si la gemme 'eve' n'est pas installée
252
- # # puts "La gem '#{gem_name}' n'est pas installée."
253
- # # end
254
- # # now lets build the atome kernel
255
- # atome_directory = "#{destination}/#{project_name}/src/js/atome"
256
- # kernel_js = "#{atome_directory}/eVe_kernel.js"
257
- # FileUtils.mkdir_p(atome_directory)
258
- # File.new kernel_js, 'w'
259
- # builder = Opal::Builder.new
260
- # builder.append_paths("#{source}/lib/")
261
- # kernel_content = builder.build("#{gem_path}/lib/eVe.rb").to_s
262
- # File.open(kernel_js, 'w') do |f|
263
- # f.puts kernel_content
264
- # end
265
- # end
266
-
267
- def build_opal_extensions(source, destination, project_name)
268
- opal_directory = "#{destination}/#{project_name}/src/js/opal"
269
- extensions_js = "#{opal_directory}/atome_opal_extensions.js"
270
- File.new extensions_js, 'w'
271
- builder = Opal::Builder.new
272
- builder.append_paths("#{source}/lib/platform_specific/opal/")
273
- extensions_content = builder.build("#{source}/lib/platform_specific/opal/atome_opal_extensions.rb").to_s
274
- File.open(extensions_js, 'w') do |f|
275
- f.puts extensions_content
276
- end
277
- end
278
-
279
- # wasm compilation
280
- def wasm_common(source, destination, project_name, wasi_file, host_mode, script_source = nil)
281
- # create_application(source, destination, project_name)
282
- # the line below is to add addition script to the application folder (useful for test per example)
283
- add_to_application_folder(script_source, destination, project_name) if script_source
284
- # build host_mode
285
- build_host_mode(destination, project_name, host_mode)
286
- # build wasm
287
- build_for_wasm(source, destination, project_name, wasi_file)
288
- end
289
-
290
- def wasm_initialize (source, destination, project_name, wasi_source)
291
- application_location = "#{destination}/#{project_name}"
292
- wasm_location = "#{application_location}/src/wasm/"
293
- Dir.mkdir(wasm_location) unless Dir.exist?(wasm_location)
294
-
295
- wasm_temp_folder = "#{application_location}/tmp"
296
- Dir.mkdir(wasm_temp_folder) unless Dir.exist?(wasm_temp_folder)
297
- #### IMPORTANT TO REFRESH RUBY WASM TO THE LATEST VERSION, (when ruby_browser get far too large)
298
- # and UNCOMMENT the line below : ('curl -LO ....')
299
- unless File.exist?("#{wasm_temp_folder}/ruby-3_2-wasm32-unknown-wasi-full-js.tar.gz")
300
-
301
- if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
302
- application_location = "#{destination}\\#{project_name}"
303
- wasm_temp_folder = "#{application_location}\\tmp"
304
- `cd /d #{wasm_temp_folder} && curl -LO https://github.com/ruby/ruby.wasm/releases/download/2023-11-17-a/ruby-3_2-wasm32-unknown-wasi-full-js.tar.gz
305
- `
306
- elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
307
- # code to exec with MacOS
308
- # `cd #{wasm_temp_folder};curl -LO https://github.com/ruby/ruby.wasm/releases/latest/download/ruby-3_2-wasm32-unknown-wasi-full-js.tar.gz`
309
- `cd #{wasm_temp_folder};curl -LO https://github.com/ruby/ruby.wasm/releases/download/2023-11-17-a/ruby-3_2-wasm32-unknown-wasi-full-js.tar.gz`
310
- # debug : https://github.com/ruby/ruby.wasm/releases/download/2023-11-17-a/ruby-3_2-wasm32-unknown-wasi-minimal-js-debug.tar.gz
311
- # standard : `cd #{wasm_temp_folder};curl -LO https://github.com/ruby/ruby.wasm/releases/download/2023-11-17-a/ruby-3_2-wasm32-unknown-wasi-full-js.tar.gz`
312
-
313
- else
314
- # code to exec with Unix/Linux
315
- `cd #{wasm_temp_folder};curl -LO https://github.com/ruby/ruby.wasm/releases/download/2023-11-17-a/ruby-3_2-wasm32-unknown-wasi-full-js.tar.gz`
74
+ # now run the rake task to build the needed libraries (atome, renderers, etc...)
75
+ `cd #{app_builder_helpers};rake system_builder[#{current_path}/#{project_name},#{production}]`
76
+ if new_app_creation
77
+ # now adding name to the app
78
+ index_html = "#{current_path}/#{project_name}/build/index.html"
79
+ index_html_content = File.open(index_html).read
80
+ index_html_content = index_html_content.gsub('<title>atome</title>', "<title>#{project_name}</title>")
81
+ File.open(index_html, 'w') do |f|
82
+ f.puts index_html_content
316
83
  end
317
-
318
84
  end
319
-
320
- if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
321
- # code to exec with Windows
322
- application_location = "#{destination}\\#{project_name}"
323
-
324
- `cd /d #{wasm_temp_folder} && tar xfz ruby-3_2-wasm32-unknown-wasi-full-js.tar.gz`
325
- `move #{wasm_temp_folder}\\3_2-wasm32-unknown-wasi-full-js\\usr\\local\\bin\\ruby #{wasm_temp_folder}\\system_ruby_browser.wasm`
326
- `del #{application_location}\\src\\wasm\\ruby_browser.wasm`
327
- elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
328
- # code to exec with MacOS
329
- `cd #{wasm_temp_folder}; tar xfz ruby-3_2-wasm32-unknown-wasi-full-js.tar.gz`
330
- `mv #{wasm_temp_folder}/3_2-wasm32-unknown-wasi-full-js/usr/local/bin/ruby #{wasm_temp_folder}/system_ruby_browser.wasm`
331
- `rm -f #{application_location}/src/wasm/ruby_browser.wasm`
332
- else
333
- # code to exec with Unix/Linux
334
- `cd #{wasm_temp_folder}; tar xfz ruby-3_2-wasm32-unknown-wasi-full-js.tar.gz`
335
- `mv #{wasm_temp_folder}/3_2-wasm32-unknown-wasi-full-js/usr/local/bin/ruby #{wasm_temp_folder}/system_ruby_browser.wasm`
336
- `rm -f #{application_location}/src/wasm/ruby_browser.wasm`
337
- end
338
-
339
- if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
340
- # code to exec with Windows
341
- cmd = <<~STRDELIM
342
- "#{application_location}\\src-wasm\\wasm\\#{wasi_source}" pack "#{wasm_temp_folder}\\system_ruby_browser.wasm"
343
- -mapdir usr::"#{wasm_temp_folder}\\3_2-wasm32-unknown-wasi-full-js\\usr"
344
- -mapdir lib::"#{source}\\lib\\"
345
- -mapdir \::"#{application_location}\\application\\"
346
- -mapdir utilities::"#{application_location}\\src\\utilities\\"
347
- -o "#{application_location}\\src\\wasm\\ruby_browser.wasm"
348
- STRDELIM
349
- elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
350
- # code to exec with MacOS
351
- cmd = <<~STRDELIM
352
- #{application_location}/src-wasm/wasm/#{wasi_source} pack #{wasm_temp_folder}/system_ruby_browser.wasm
353
- --mapdir usr::#{wasm_temp_folder}/3_2-wasm32-unknown-wasi-full-js/usr
354
- --mapdir lib::#{source}/lib/
355
- --mapdir /::#{application_location}/application/
356
- --mapdir utilities::#{application_location}/src/utilities/
357
- -o #{application_location}/src/wasm/ruby_browser.wasm
358
- STRDELIM
359
- else
360
- # code to exec with Unix/Linux
361
- cmd = <<~STRDELIM
362
- #{application_location}/src-wasm/wasm/#{wasi_source} pack #{wasm_temp_folder}/system_ruby_browser.wasm
363
- --mapdir usr::#{wasm_temp_folder}/3_2-wasm32-unknown-wasi-full-js/usr
364
- --mapdir lib::#{source}/lib/
365
- --mapdir /::#{application_location}/application/
366
- --mapdir utilities::#{application_location}/src/utilities/
367
- -o #{application_location}/src/wasm/ruby_browser.wasm
368
- STRDELIM
369
- end
370
-
371
- cleaned_cmd = cmd.lines.reject { |line| line.start_with?('#') }.join
372
- command = cleaned_cmd.chomp.gsub("\n", ' ')
373
- system(command)
374
- end
375
-
376
- def build_for_wasm(source, destination, project_name, wasi_file)
377
- wasm_initialize(source, destination, project_name, wasi_file)
378
85
  end
379
86
 
380
- def build_for_osx(destination, mode = :dev)
381
- # dev or build
382
- if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
383
- # code to exec with Windows
384
- `cd /d #{destination} && cargo tauri #{mode}`
385
- elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
386
- # code to exec with MacOS
387
- `cd #{destination};cargo tauri #{mode}`
388
- else
389
- # code to exec with Unix/Linux
390
- `cd #{destination};cargo tauri #{mode}`
391
- end
392
-
87
+ def update_application(project_name, production)
88
+ app_builder_helpers = File.join(File.dirname(__FILE__), '../app_builder_helpers')
89
+ `cd #{app_builder_helpers};rake system_updater[#{project_name},#{production}]`
393
90
  end
394
91
 
395
- def init_server(destination, project_name, port, prod, ru_file)
396
-
397
- if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
398
- # code to exec with Windows
399
- File.open("#{destination}\\#{project_name}\\server\\config.ru", "w") do |f|
400
- f.write(ru_file)
401
- end
402
- # `cd /d #{destination}\\#{project_name}\\server && puma --port #{port} #{prod}`
403
- # system("start cmd /c cd /d #{destination}\\#{project_name}\\server && puma --port #{port} #{prod}")
404
- system("cd /d \"#{destination}\\#{project_name}\\server\" && puma --port #{port} #{prod}")
405
-
406
- elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
407
- # code to exec with MacOS
408
- File.open("#{destination}/#{project_name}/server/config.ru", "w") do |f|
409
- f.write(ru_file)
410
- end
411
- # `cd #{destination}/#{project_name}/server;puma --port #{port} #{prod}`
412
- system("cd #{destination}/#{project_name}/server && puma --port #{port} #{prod}")
413
-
414
- else
415
- # code to exec with Unix/Linux
416
- File.open("#{destination}/#{project_name}/server/config.ru", "w") do |f|
417
- f.write(ru_file)
92
+ def guard_check
93
+ if ARGV.include?('guard')
94
+ loop do
95
+ sleep 9
418
96
  end
419
- # `cd #{destination}/#{project_name}/server;puma --port #{port} #{prod}`
420
- system("cd #{destination}/#{project_name}/server && puma --port #{port} #{prod}")
421
97
  end
422
98
  end
423
99
 
424
- def build_for_opal_server(destination, project_name, port, production, run_server = true)
425
- if production
426
- prod = '--env production'
427
- ru_file = <<STR
428
- require 'roda'
429
- require './atome_server.rb'
430
- run App.app.freeze
431
- STR
100
+ def run_application(build_target, location, port = 9292)
101
+ case build_target
102
+ when :server
103
+ # require 'atome'
104
+ threads = []
105
+ threads << Thread.new do
106
+ sleep 1.5
107
+ `open http://localhost:9292/index`
108
+ end
109
+ `cd #{location}/server;rackup --server puma --port #{port} --env production`
110
+ when :browser
111
+ `cd #{location}/build;open index.html`
112
+ guard_check
113
+ when :native
114
+ # freebsd
115
+ when :linux
116
+ # freebsd
117
+ when :osx
118
+ # osx
119
+ when :windows
120
+ # windows
432
121
  else
433
- ru_file = <<STR
434
- require 'roda'
435
- require 'rack/unreloader'
436
- Unreloader = Rack::Unreloader.new(subclasses: %w[Roda]) { App }
437
- Unreloader.require './atome_server.rb'
438
- run Unreloader
439
- require './atome_server.rb'
440
- STR
441
- end
442
- if run_server ==true
443
- init_server(destination, project_name, port, prod, ru_file)
122
+ `cd #{location}/build;open index.html`
123
+ guard_check
444
124
  end
445
125
 
446
126
  end
447
127
 
448
- def build_for_wasm_server(destination, project_name, port, production, run_server = true)
449
- if production
450
- prod = '--env production'
451
- ru_file = <<STR
452
- require 'roda'
453
- require './atome_server_wasm.rb'
454
- run App.app.freeze
455
- STR
456
- else
457
- ru_file = <<STR
458
- require 'roda'
459
- require 'rack/unreloader'
460
- Unreloader = Rack::Unreloader.new(subclasses: %w[Roda]) { App }
461
- Unreloader.require './atome_server_wasm.rb'
462
- run Unreloader
463
- require './atome_server.rb'
464
- STR
465
- end
466
- if run_server ==true
467
- init_server(destination, project_name, port, prod, ru_file)
468
- end
469
- # if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
470
- # # code to exec with Windows
471
- # File.open("#{destination}\\#{project_name}\\server\\config.ru", "w") do |f|
472
- # f.write(ru_file)
473
- # end
474
- # `cd /d #{destination}\\#{project_name}\\server && puma --port #{port} #{prod}`
475
- # elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
476
- # # code to exec with MacOS
477
- # File.open("#{destination}/#{project_name}/server/config.ru", "w") do |f|
478
- # f.write(ru_file)
479
- # end
480
- # `cd #{destination}/#{project_name}/server;puma --port #{port} #{prod}`
481
- # else
482
- # # code to exec with Unix/Linux
483
- # File.open("#{destination}/#{project_name}/server/config.ru", "w") do |f|
484
- # f.write(ru_file)
485
- # end
486
- # `cd #{destination}/#{project_name}/server;puma --port #{port} #{prod}`
487
- # end
128
+ # below we analyse the ARGV
129
+ location = '/'
130
+ force = nil
131
+ production = nil
132
+ port = 9292
488
133
 
489
- end
134
+ production = 'production' if ARGV.include?('production')
490
135
 
491
- # utils
492
- def ensure_rb_extension(filename)
493
- filename.end_with?('.rb') ? filename : "#{filename}.rb"
494
- end
136
+ force = 'force' if ARGV.include?('force')
495
137
 
496
- def find_requires(file)
497
- requires = []
498
- File.foreach(file) do |line|
499
- trimmed_line = line.strip
500
- if trimmed_line.start_with?('require ') || trimmed_line.start_with?('require_relative ')
501
- match = trimmed_line.match(/['"]([^'"]+)['"]/)
502
- if match
503
- path = match[1].end_with?('.rb') ? match[1][0...-3] : match[1]
504
- requires << path
505
- end
506
- end
507
- end
508
- requires
509
- end
138
+ port = ARGV[ARGV.find_index('port:') + 1] if ARGV.include?('port:')
510
139
 
511
- def copy_file(source, destination)
512
- return if source == 'server.rb'
140
+ platforms = %w[android browser server osx freebsd ios linux osx windows]
141
+ # now setting build_target
513
142
 
514
- FileUtils.mkdir_p(File.dirname(destination))
515
- FileUtils.cp(source, destination)
516
- end
143
+ build_target = 'browser'
517
144
 
518
- def copy_with_requires(source, destination, base_folder)
519
- destination_file = File.join(destination, source.sub(base_folder + '/', ''))
520
- copy_file(source, destination_file)
521
- find_requires(source).each do |relative_path|
522
- required_file = File.join(base_folder, "#{relative_path}.rb")
523
- copy_with_requires(required_file, destination, base_folder) if File.exist?(required_file)
524
- end
145
+ platforms.each do |platform|
146
+ build_target = platform if ARGV.include?(platform)
525
147
  end
526
148
 
527
- # below we analyse the ARGV
528
- location = if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
529
- # code to exec with Windows
530
- '\\'
531
- elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
532
- # code to exec with MacOS
533
- '/'
534
- else
535
- # code to exec with Unix/Linux
536
- '/'
537
- end
538
-
539
- project_name = ARGV[1]
540
-
541
- if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
542
- # code to exec with Windows
543
- destination = `cd`.chomp
544
- wasi_file = 'wasi-vfs.exe'
545
-
546
- elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
547
- # code to exec with MacOS
548
- destination = `pwd`.chomp
549
- wasi_file = 'wasi-vfs-osx_arm' # default to osx arm
550
- else
551
- # code to exec with Unix/Linux
552
- destination = `pwd`.chomp
553
- wasi_file = 'wasi-vfs-unix'
149
+ if ARGV.include?('create')
150
+ project_name = ARGV[1]
151
+ location = "/#{project_name}"
152
+ create_application(project_name, force, production)
554
153
  end
555
154
 
556
- source = Pathname(__FILE__).parent.parent.to_s
557
-
558
- # TODO : get wasi params from ARG to allow compile on windows / Unix
559
- if ARGV.include?('create')
560
- create_application(source, destination, project_name)
561
- # create_application(source, destination, project_name, production)
562
- # build opal
563
- build_opal_library(source, destination, project_name)
564
- # build parser
565
- build_opal_parser(source, destination, project_name)
566
- # build atome kernel
567
- build_atome_kernel_for_opal(source, destination, project_name)
568
- # build host_mode
569
- build_host_mode(destination, project_name, 'web-opal')
570
- # build Opal extensions
571
- build_opal_extensions(source, destination, project_name)
572
- # build application
573
- build_opal_application(source, destination, project_name)
155
+ if ARGV.include?('build')
156
+ path = found_path('build')
157
+ build_app(path, production)
574
158
  end
575
159
 
576
160
  if ARGV.include?('update')
577
-
578
- gem_name = 'atome'
579
- local_gem_spec = Gem::Specification.find_by_name(gem_name) rescue nil
580
- if local_gem_spec.nil?
581
- puts " #{gem_name} gem is not install will install from distant server"
582
- system("gem update #{gem_name}")
583
- else
584
- available_versions = Gem::Specification.find_all_by_name(gem_name).map(&:version)
585
-
586
- latest_version = available_versions.max
587
-
588
- if latest_version > local_gem_spec.version
589
- puts "update availlable: #{local_gem_spec.version} -> #{latest_version}"
590
- system("gem update #{gem_name}")
591
- else
592
- puts "No update necessary '#{gem_name}'. current version : #{local_gem_spec.version}"
593
- end
594
- end
595
-
596
-
597
161
  # TODO: also update index.html and all other files except the application folder
598
- # we check we are in atome app
599
- if Dir.exist?("#{destination}/application") && !Dir.exist?("#{destination}/vendor")
600
- # first we delete everything but application
601
-
602
- files_to_treat = %w[server src-tauri src-wasm Guardfile Rakefile src/css src/js/atome src/js/molecules src/js/third_parties
603
- src/favicon.ico src/index_wasm.html src/index_opal.html src/index_server.html src/index_server_wasm.html]
604
- files_to_treat.each do |item|
605
- item_path = File.join(destination, item)
606
- if File.directory?(item_path)
607
- FileUtils.rm_rf(item_path) unless item == '.' || item == '..'
608
- elsif File.file?(item_path)
609
- File.delete(item_path)
610
- end
611
- source_item = "#{source}/vendor/assets/#{item}"
612
- FileUtils.cp_r(source_item, item)
613
- end
614
- # now rebuilding aop lib
615
- # build opal
616
- build_opal_library(source, destination, project_name)
617
- # build parser
618
- build_opal_parser(source, destination, project_name)
619
- # build atome kernel
620
- build_atome_kernel_for_opal(source, destination, project_name)
621
- # build host_mode
622
- build_host_mode(destination, project_name, 'web-opal')
623
- # build Opal extensions
624
- build_opal_extensions(source, destination, project_name)
625
- # build application
626
- build_opal_application(source, destination, project_name)
627
-
628
- ########################
629
-
630
- # unless Dir.exist?("#{destination}/vendor")
631
- # Dir.mkdir("#{destination}/vendor")
632
- # end
633
-
634
- #######################
635
-
636
- puts "your application is up to date"
637
- end
638
-
639
- # now we get the version of the atome gem
640
- gem_name = 'atome'
641
- local_gem_spec = Gem::Specification.find_by_name(gem_name) rescue nil
642
- latest_version=local_gem_spec.version
643
- puts "#{gem_name} #{latest_version} is now installed "
644
-
162
+ path = found_path('update')
163
+ update_application(path, production)
645
164
  end
646
165
 
647
- current_path = Pathname.new(Dir.pwd)
648
- project_name = current_path.basename.to_s
649
- destination = current_path.parent.to_s
650
-
651
- if ARGV.include?('run')
652
- case ARGV[1]
653
- when 'opal'
654
-
655
- guard_content = <<STR
656
- guard 'rake', first_match: true, :task => 'build_opal' do
657
- watch(%r{^server.+\.rb})
658
- watch(%r{^application.+\.rb})
659
- end
660
- STR
661
-
662
- File.open("./#{location}/Guardfile", "w") do |f|
663
- f.write(guard_content)
664
- end
665
- puts 'guarding'
166
+ if ARGV.include?('guard')
167
+ Thread.new do
168
+ sleep 1.2
666
169
  Dir.chdir("./#{location}") do
667
170
  `guard`
668
171
  end
669
- when 'wasm' # osx wasi
670
- guard_content = <<STR
671
- guard 'rake', first_match: true, :task => 'build_wasm' do
672
- watch(%r{^server.+\.rb})
673
- watch(%r{^application.+\.rb})
674
- end
675
- STR
676
-
677
- File.open("./#{location}/Guardfile", "w") do |f|
678
- f.write(guard_content)
679
- end
680
- puts 'guarding'
681
- Dir.chdir("./#{location}") do
682
- `guard`
683
- end
684
- when 'server'
685
- guard_content = <<STR
686
- guard 'rake', first_match: true, :task => 'build_server' do
687
- watch(%r{^server.+\.rb})
688
- watch(%r{^application.+\.rb})
172
+ end
689
173
  end
690
174
 
691
- STR
175
+ if ARGV.include?('run')
176
+ path = if location != '/'
177
+ "#{`pwd`.chomp}/#{location}"
178
+ else
179
+ found_path('run')
180
+ end
692
181
 
693
- File.open("./#{location}/Guardfile", "w") do |f|
694
- f.write(guard_content)
695
- end
696
- puts 'guarding'
697
- threads = []
698
- Dir.chdir("./#{location}") do
699
- threads << Thread.new do
700
- `guard`
701
- end
702
- end
703
- when 'osx'
182
+ case build_target
704
183
  when 'android'
705
- # to be filled
184
+ # TODO: write code here
185
+ when 'browser'
186
+ run_application(:browser, path)
187
+ when 'freebsd'
188
+ # TODO: write code here
706
189
  when 'ios'
707
- # to be filled
708
- when 'windows'
709
- # to be filled
190
+ # TODO: write code here
710
191
  when 'linux'
711
- # to be filled
712
- when 'freebsd'
713
- # to be filled
714
- end
715
-
716
- end
717
-
718
- if ARGV.include?('sparkle')
719
- temp_dir = if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
720
- 'C:\Windows\Temp'
721
- # code to exec with Windows
722
- elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
723
- '/tmp'
724
- # code to exec with MacOS
725
- else
726
- '/tmp'
727
- # code to exec with Unix/Linux
728
- end
729
-
730
- `cd #{temp_dir}; atome create atome_app` unless Dir.exist?("#{temp_dir}/atome_app")
731
- # search for server file
732
- if File.exist?('server.rb')
733
- file_content = File.read('server.rb')
734
- File.write("#{temp_dir}/atome_app/server/atome_server.rb", file_content)
735
- base_folder = File.dirname(project_name)
736
- copy_with_requires('server.rb', "#{temp_dir}/atome_app/server", base_folder)
737
- end
738
- project_name = ARGV[1]
739
- if project_name.nil? || project_name == 'opal' || project_name == 'wasm' || project_name == 'server'
740
- project_name = 'index.rb'
741
- end
742
- project_name = ensure_rb_extension(project_name)
743
- base_folder = File.dirname(project_name)
744
- copy_with_requires(project_name, "#{temp_dir}/atome_app/application", base_folder)
745
-
746
- if ARGV.include?('opal')
747
- `cd #{temp_dir}/atome_app;atome run opal`
748
-
749
- elsif ARGV.include?('wasm')
750
- `cd #{temp_dir}/atome_app;atome run wasm`
751
-
752
- elsif ARGV.include?('server')
753
- `cd #{temp_dir}/atome_app;atome run server`
754
- else
755
- `cd #{temp_dir}/atome_app;atome run opal`
756
- end
757
- else
758
- if ARGV.include?('opal')
759
- puts 'building Opal'
760
-
761
- build_opal_application(nil, destination, project_name)
762
- # build host_mode
763
- build_host_mode(destination, project_name, 'web-opal')
764
- # build Opal extensions
765
- if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
766
- # code to exec for Windows
767
- `start "" "#{destination}\\#{project_name}\\src\\index_opal.html"`
768
- elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
769
- # code to exec for MacOS
770
- `open #{destination}/#{project_name}/src/index_opal.html`
771
- else
772
- # code to exec for Unix/Linux
773
- `open #{destination}/#{project_name}/src/index_opal.html`
774
- end
775
-
776
- puts "opal ready!"
777
- end
778
-
779
- if ARGV.include?('wasm')
780
- puts 'building Ruby wasm'
781
- wasi_file = 'wasi-vfs-osx_arm'
782
- wasm_common(source, destination, project_name, wasi_file, :pure_wasi)
783
-
784
- if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
785
- # code to exec for Windows
786
- `start "" "#{destination}\\#{project_name}\\src\\index_wasm.html"`
787
- elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
788
- # code to exec for MacOS
789
- `open #{destination}/#{project_name}/src/index_wasm.html`
790
- else
791
- # code to exec for Unix/Linux
792
- `open #{destination}/#{project_name}/src/index_wasm.html`
793
- end
794
-
795
- end
796
-
797
- if ARGV.include?('server')
798
- puts 'building Server'
799
- build_opal_application(nil, destination, project_name)
800
- build_host_mode(destination, project_name, 'web-opal')
801
- threads = []
802
- threads << Thread.new do
803
- # sleep 1
804
- # if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
805
- # # code to exec with Windows
806
- # `start "" "#{destination}\\#{project_name}\\src\\index_server.html`
807
- # elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
808
- # # code to exec with MacOS
809
- # `open http://localhost:9292`
810
- # else
811
- # # code to exec with Unix/Linux
812
- # `open http://localhost:9292`
813
- # end
814
- end
815
- threads << Thread.new do
816
- build_for_opal_server(destination, project_name, 9292, false)
817
- end
818
-
819
- threads.each(&:join)
820
-
821
- end
822
-
823
- if ARGV.include?('wasm_server')
824
- puts 'building Server'
825
- build_opal_application(nil, destination, project_name)
826
- build_host_mode(destination, project_name, 'web-opal')
827
- threads = []
828
- # threads << Thread.new do
829
- # # sleep 1
830
- # # if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
831
- # # # code to exec with Windows
832
- # # `start "" "#{destination}\\#{project_name}\\src\\index_server.html`
833
- # # elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
834
- # # # code to exec with MacOS
835
- # # `open http://localhost:9292`
836
- # # else
837
- # # # code to exec with Unix/Linux
838
- # # `open http://localhost:9292`
839
- # # end
840
- # end
841
- threads << Thread.new do
842
- build_for_wasm_server(destination, project_name, 9292, false)
843
- end
844
- threads.each(&:join)
845
- puts 'wasm server is running'
846
- end
847
-
848
- if ARGV.include?('server_refresh')
849
- puts 're building Server'
850
- build_opal_application(nil, destination, project_name)
851
- timestamp = Time.now.strftime("%Y%m%d%H%M%S")
852
-
853
- if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
854
- # code to exec with Windows
855
- # `start #{destination}\\#{project_name}\\src\\index_server.html`
856
- `start http://localhost:9292?date=#{timestamp}`
857
- elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
858
- # code to exec with MacOS
859
- `open http://localhost:9292?date=#{timestamp}`
860
- else
861
- # code to exec with Unix/Linux
862
- `open http://localhost:9292?date=#{timestamp}`
192
+ # TODO: write code here
193
+ when 'osx'
194
+ run_application(:osx, path)
195
+ when 'server'
196
+ config_location = "#{path}/server/config.ru"
197
+ file = File.open(config_location)
198
+ text = file.read
199
+ text = text.gsub('run Unreloader', '')
200
+ text = text.gsub('run App.freeze.app', '')
201
+ text = text.gsub(/^$\n/, '')
202
+ text = if production == 'production'
203
+ "#{text}run App.freeze.app"
204
+ else
205
+ "#{text}run Unreloader"
206
+ end
207
+ File.open(config_location, 'w') do |f|
208
+ f.puts text
863
209
  end
210
+ run_application(:server, path, port)
211
+ when 'windows'
212
+ # TODO: write code here
213
+ else
214
+ run_application(:browser, path)
864
215
  end
865
216
 
866
- if ARGV.include?('osx')
867
- puts 'building osx'
868
- wasi_file = 'wasi-vfs-osx_arm'
869
- wasm_common(source, destination, project_name, wasi_file, :tauri)
870
- build_for_osx(destination)
871
- end
872
-
873
- puts 'building Android' if ARGV.include?('android')
874
- puts 'building iOS' if ARGV.include?('ios')
875
- puts 'building Windows' if ARGV.include?('windows')
876
- puts 'building Linux' if ARGV.include?('linux')
877
- puts 'building Freebsd' if ARGV.include?('freebsd')
878
-
879
- end
217
+ end