gina 0.0.9-p91c → 0.1.1-alpha.100

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 (466) hide show
  1. package/AUTHORS +2 -1
  2. package/INSTALL.md +46 -0
  3. package/{core/asset/html/static.html → Icon/r} +0 -0
  4. package/LICENSE +1 -1
  5. package/README-4Contributors.md +96 -0
  6. package/README.md +397 -101
  7. package/bin/cli +305 -0
  8. package/bin/cli-debug +60 -0
  9. package/bin/cmd +184 -0
  10. package/bin/gina +180 -0
  11. package/config/logger.json +17 -0
  12. package/framework/v0.1.1-alpha.100/AUTHORS +7 -0
  13. package/{core/utils/lib/inherits → framework/v0.1.1-alpha.100}/LICENSE +1 -1
  14. package/framework/v0.1.1-alpha.100/VERSION +1 -0
  15. package/{core/locales/dist/language/en.json → framework/v0.1.1-alpha.100/core/asset/html/nolayout.html} +0 -0
  16. package/{core/locales/dist/language/fr.json → framework/v0.1.1-alpha.100/core/asset/html/static.html} +0 -0
  17. package/{core → framework/v0.1.1-alpha.100/core}/asset/img/android-chrome-192x192.png +0 -0
  18. package/{core → framework/v0.1.1-alpha.100/core}/asset/img/android-chrome-512x512.png +0 -0
  19. package/{core → framework/v0.1.1-alpha.100/core}/asset/img/apple-touch-icon.png +0 -0
  20. package/{core → framework/v0.1.1-alpha.100/core}/asset/img/favicon-16x16.png +0 -0
  21. package/{core → framework/v0.1.1-alpha.100/core}/asset/img/favicon-32x32.png +0 -0
  22. package/{core → framework/v0.1.1-alpha.100/core}/asset/img/favicon.ico +0 -0
  23. package/framework/v0.1.1-alpha.100/core/asset/js/plugin/dist/gina.js +20904 -0
  24. package/framework/v0.1.1-alpha.100/core/asset/js/plugin/dist/gina.js.map +56 -0
  25. package/framework/v0.1.1-alpha.100/core/asset/js/plugin/dist/gina.min.css +1 -0
  26. package/framework/v0.1.1-alpha.100/core/asset/js/plugin/dist/gina.min.css.map +1 -0
  27. package/framework/v0.1.1-alpha.100/core/asset/js/plugin/dist/gina.min.js +736 -0
  28. package/framework/v0.1.1-alpha.100/core/asset/js/plugin/dist/gina.min.js.map +56 -0
  29. package/framework/v0.1.1-alpha.100/core/asset/js/plugin/dist/gina.onload.min.js +5 -0
  30. package/framework/v0.1.1-alpha.100/core/asset/js/plugin/dist/gina.onload.min.js.map +8 -0
  31. package/framework/v0.1.1-alpha.100/core/asset/js/plugin/readme.md +192 -0
  32. package/framework/v0.1.1-alpha.100/core/asset/js/plugin/uuid.json +23 -0
  33. package/framework/v0.1.1-alpha.100/core/config.js +2308 -0
  34. package/framework/v0.1.1-alpha.100/core/connectors/couchbase/index.js +757 -0
  35. package/framework/v0.1.1-alpha.100/core/connectors/couchbase/lib/connector.js +20 -0
  36. package/framework/v0.1.1-alpha.100/core/connectors/couchbase/lib/connector.v2.js +429 -0
  37. package/framework/v0.1.1-alpha.100/core/connectors/couchbase/lib/connector.v3.js +432 -0
  38. package/framework/v0.1.1-alpha.100/core/connectors/couchbase/lib/n1ql.js +14 -0
  39. package/framework/v0.1.1-alpha.100/core/connectors/couchbase/lib/session-store.js +21 -0
  40. package/framework/v0.1.1-alpha.100/core/connectors/couchbase/lib/session-store.v2.js +258 -0
  41. package/framework/v0.1.1-alpha.100/core/connectors/couchbase/lib/session-store.v3.js +341 -0
  42. package/{core → framework/v0.1.1-alpha.100/core}/controller/controller.framework.js +3 -2
  43. package/framework/v0.1.1-alpha.100/core/controller/controller.js +3990 -0
  44. package/{core → framework/v0.1.1-alpha.100/core}/controller/index.js +5 -5
  45. package/framework/v0.1.1-alpha.100/core/deps/busboy/.travis.yml +17 -0
  46. package/framework/v0.1.1-alpha.100/core/deps/busboy/LICENSE +19 -0
  47. package/framework/v0.1.1-alpha.100/core/deps/busboy/README.md +225 -0
  48. package/framework/v0.1.1-alpha.100/core/deps/busboy/deps/encoding/encoding-indexes.js +73 -0
  49. package/framework/v0.1.1-alpha.100/core/deps/busboy/deps/encoding/encoding.js +2391 -0
  50. package/framework/v0.1.1-alpha.100/core/deps/busboy/lib/main.js +89 -0
  51. package/framework/v0.1.1-alpha.100/core/deps/busboy/lib/types/multipart.js +328 -0
  52. package/framework/v0.1.1-alpha.100/core/deps/busboy/lib/types/urlencoded.js +214 -0
  53. package/framework/v0.1.1-alpha.100/core/deps/busboy/lib/utils.js +191 -0
  54. package/framework/v0.1.1-alpha.100/core/deps/busboy/package.json +69 -0
  55. package/framework/v0.1.1-alpha.100/core/deps/swig-client/swig-2.0.0.min.js +5 -0
  56. package/{core → framework/v0.1.1-alpha.100/core}/dev/index.js +5 -5
  57. package/{core → framework/v0.1.1-alpha.100/core}/dev/lib/class.js +1 -1
  58. package/{core → framework/v0.1.1-alpha.100/core}/dev/lib/factory.js +1 -1
  59. package/{core → framework/v0.1.1-alpha.100/core}/dev/lib/tools.js +0 -0
  60. package/framework/v0.1.1-alpha.100/core/gna.js +1070 -0
  61. package/{core → framework/v0.1.1-alpha.100/core}/locales/README.md +41 -2
  62. package/{core → framework/v0.1.1-alpha.100/core}/locales/currency.json +0 -0
  63. package/{core/plugins/README.md → framework/v0.1.1-alpha.100/core/locales/dist/language/en.json} +0 -0
  64. package/{core/plugins/lib/intl/README.md → framework/v0.1.1-alpha.100/core/locales/dist/language/fr.json} +0 -0
  65. package/{core → framework/v0.1.1-alpha.100/core}/locales/dist/region/en.json +0 -0
  66. package/framework/v0.1.1-alpha.100/core/locales/dist/region/fr.json +9492 -0
  67. package/{core → framework/v0.1.1-alpha.100/core}/locales/index.js +5 -4
  68. package/{core → framework/v0.1.1-alpha.100/core}/locales/src/make.js +15 -12
  69. package/{core → framework/v0.1.1-alpha.100/core}/locales/src/resources/currency.csv +0 -0
  70. package/{core → framework/v0.1.1-alpha.100/core}/locales/src/resources/region.csv +0 -0
  71. package/{core → framework/v0.1.1-alpha.100/core}/locales/src/resources/region.mapping.json +0 -0
  72. package/{core → framework/v0.1.1-alpha.100/core}/mime.types +0 -0
  73. package/{core → framework/v0.1.1-alpha.100/core}/model/entity.js +156 -196
  74. package/{core → framework/v0.1.1-alpha.100/core}/model/index.js +67 -48
  75. package/{core → framework/v0.1.1-alpha.100/core}/model/template/entityFactory.js +2 -2
  76. package/{core → framework/v0.1.1-alpha.100/core}/model/template/index.js +8 -10
  77. package/{core/plugins/lib/storage → framework/v0.1.1-alpha.100/core/plugins}/README.md +0 -0
  78. package/{core → framework/v0.1.1-alpha.100/core}/plugins/index.js +3 -3
  79. package/{core/plugins/lib/validator → framework/v0.1.1-alpha.100/core/plugins/lib/file}/README.md +0 -0
  80. package/{core/plugins/lib/intl → framework/v0.1.1-alpha.100/core/plugins/lib/file}/build.json +0 -0
  81. package/framework/v0.1.1-alpha.100/core/plugins/lib/file/package.json +25 -0
  82. package/{core/utils/lib/collection → framework/v0.1.1-alpha.100/core/plugins/lib/intl}/README.md +0 -0
  83. package/{core/plugins/lib/storage → framework/v0.1.1-alpha.100/core/plugins/lib/intl}/build.json +0 -0
  84. package/{core → framework/v0.1.1-alpha.100/core}/plugins/lib/intl/package.json +3 -3
  85. package/{core → framework/v0.1.1-alpha.100/core}/plugins/lib/intl/src/main.js +17 -1
  86. package/{core/utils/lib/routing → framework/v0.1.1-alpha.100/core/plugins/lib/storage}/README.md +0 -0
  87. package/{core/plugins/lib/validator → framework/v0.1.1-alpha.100/core/plugins/lib/storage}/build.json +0 -0
  88. package/{core → framework/v0.1.1-alpha.100/core}/plugins/lib/storage/package.json +2 -2
  89. package/{core → framework/v0.1.1-alpha.100/core}/plugins/lib/storage/src/main.js +91 -85
  90. package/{core/utils/lib/url → framework/v0.1.1-alpha.100/core/plugins/lib/validator}/README.md +0 -0
  91. package/{core/utils/lib/collection → framework/v0.1.1-alpha.100/core/plugins/lib/validator}/build.json +0 -0
  92. package/{core → framework/v0.1.1-alpha.100/core}/plugins/lib/validator/package.json +3 -3
  93. package/framework/v0.1.1-alpha.100/core/plugins/lib/validator/src/form-validator.js +1762 -0
  94. package/framework/v0.1.1-alpha.100/core/plugins/lib/validator/src/main.js +6917 -0
  95. package/framework/v0.1.1-alpha.100/core/router.js +664 -0
  96. package/framework/v0.1.1-alpha.100/core/server.express.js +213 -0
  97. package/framework/v0.1.1-alpha.100/core/server.isaac.js +386 -0
  98. package/framework/v0.1.1-alpha.100/core/server.js +3010 -0
  99. package/{core → framework/v0.1.1-alpha.100/core}/status.codes +8 -0
  100. package/framework/v0.1.1-alpha.100/core/template/boilerplate/bundle/config/app.json +6 -0
  101. package/framework/v0.1.1-alpha.100/core/template/boilerplate/bundle/config/routing.json +11 -0
  102. package/framework/v0.1.1-alpha.100/core/template/boilerplate/bundle/config/settings.json +9 -0
  103. package/framework/v0.1.1-alpha.100/core/template/boilerplate/bundle/config/settings.server.json +30 -0
  104. package/framework/v0.1.1-alpha.100/core/template/boilerplate/bundle/config/templates.json +42 -0
  105. package/framework/v0.1.1-alpha.100/core/template/boilerplate/bundle/controllers/controller.content.js +39 -0
  106. package/framework/v0.1.1-alpha.100/core/template/boilerplate/bundle/controllers/controller.js +30 -0
  107. package/framework/v0.1.1-alpha.100/core/template/boilerplate/bundle/controllers/setup.js +111 -0
  108. package/{core/template/samples → framework/v0.1.1-alpha.100/core/template/boilerplate}/bundle/index.js +0 -0
  109. package/{core/template/samples/bundle → framework/v0.1.1-alpha.100/core/template/boilerplate/bundle_namespace}/controllers/controller.js +9 -7
  110. package/{core/template/views → framework/v0.1.1-alpha.100/core/template/boilerplate/bundle_public}/css/default.css +0 -0
  111. package/{core/template/views → framework/v0.1.1-alpha.100/core/template/boilerplate/bundle_public}/css/vendor/readme.md +0 -0
  112. package/{core/template/views → framework/v0.1.1-alpha.100/core/template/boilerplate/bundle_public}/favicon.ico +0 -0
  113. package/framework/v0.1.1-alpha.100/core/template/boilerplate/bundle_public/js/vendor/readme.md +1 -0
  114. package/framework/v0.1.1-alpha.100/core/template/boilerplate/bundle_public/readme.md +1 -0
  115. package/framework/v0.1.1-alpha.100/core/template/boilerplate/bundle_templates/handlers/main.js +24 -0
  116. package/{core/template/views/html/default.html → framework/v0.1.1-alpha.100/core/template/boilerplate/bundle_templates/html/homepage.html} +0 -0
  117. package/{core/template/views/html/layout.html → framework/v0.1.1-alpha.100/core/template/boilerplate/bundle_templates/html/layout/main.html} +2 -2
  118. package/{core → framework/v0.1.1-alpha.100/core}/template/command/gina.bat.tpl +0 -0
  119. package/{core → framework/v0.1.1-alpha.100/core}/template/command/gina.tpl +1 -1
  120. package/framework/v0.1.1-alpha.100/core/template/conf/env.json +76 -0
  121. package/{core/template/conf/project.json → framework/v0.1.1-alpha.100/core/template/conf/manifest.json} +1 -0
  122. package/{core → framework/v0.1.1-alpha.100/core}/template/conf/package.json +2 -2
  123. package/framework/v0.1.1-alpha.100/core/template/conf/settings.json +92 -0
  124. package/framework/v0.1.1-alpha.100/core/template/conf/statics.json +10 -0
  125. package/framework/v0.1.1-alpha.100/core/template/conf/templates.json +37 -0
  126. package/{core → framework/v0.1.1-alpha.100/core}/template/error/client/json/401.json +0 -0
  127. package/{core → framework/v0.1.1-alpha.100/core}/template/error/client/json/403.json +0 -0
  128. package/{core → framework/v0.1.1-alpha.100/core}/template/error/client/json/404.json +0 -0
  129. package/{core → framework/v0.1.1-alpha.100/core}/template/error/server/html/50x.html +0 -0
  130. package/{core → framework/v0.1.1-alpha.100/core}/template/error/server/json/500.json +0 -0
  131. package/{core → framework/v0.1.1-alpha.100/core}/template/error/server/json/503.json +0 -0
  132. package/{core/utils/lib/routing/build.json → framework/v0.1.1-alpha.100/core/template/extensions/logger/config.json} +0 -0
  133. package/{core/utils → framework/v0.1.1-alpha.100}/helpers/console.js +3 -3
  134. package/{core/utils → framework/v0.1.1-alpha.100}/helpers/context.js +240 -49
  135. package/framework/v0.1.1-alpha.100/helpers/dateFormat.js +528 -0
  136. package/framework/v0.1.1-alpha.100/helpers/index.js +79 -0
  137. package/framework/v0.1.1-alpha.100/helpers/json/README.md +0 -0
  138. package/framework/v0.1.1-alpha.100/helpers/json/package.json +20 -0
  139. package/framework/v0.1.1-alpha.100/helpers/json/src/main.js +97 -0
  140. package/{core/utils → framework/v0.1.1-alpha.100}/helpers/path.js +333 -126
  141. package/framework/v0.1.1-alpha.100/helpers/plugins/README.md +4 -0
  142. package/framework/v0.1.1-alpha.100/helpers/plugins/package.json +20 -0
  143. package/framework/v0.1.1-alpha.100/helpers/plugins/src/api-error.js +160 -0
  144. package/framework/v0.1.1-alpha.100/helpers/plugins/src/main.js +32 -0
  145. package/framework/v0.1.1-alpha.100/helpers/prototypes.js +218 -0
  146. package/{core/utils → framework/v0.1.1-alpha.100}/helpers/task.js +58 -31
  147. package/{core/utils → framework/v0.1.1-alpha.100}/helpers/text.js +7 -7
  148. package/framework/v0.1.1-alpha.100/lib/archiver/README.md +0 -0
  149. package/framework/v0.1.1-alpha.100/lib/archiver/build.json +0 -0
  150. package/framework/v0.1.1-alpha.100/lib/archiver/package.json +20 -0
  151. package/framework/v0.1.1-alpha.100/lib/archiver/src/dep/jszip.min.js +15 -0
  152. package/framework/v0.1.1-alpha.100/lib/archiver/src/main.js +499 -0
  153. package/framework/v0.1.1-alpha.100/lib/cmd/aliases.json +13 -0
  154. package/framework/v0.1.1-alpha.100/lib/cmd/bundle/add.js +507 -0
  155. package/framework/v0.1.1-alpha.100/lib/cmd/bundle/arguments.json +4 -0
  156. package/framework/v0.1.1-alpha.100/lib/cmd/bundle/copy.js +15 -0
  157. package/framework/v0.1.1-alpha.100/lib/cmd/bundle/cp.js +2 -0
  158. package/framework/v0.1.1-alpha.100/lib/cmd/bundle/help.js +28 -0
  159. package/framework/v0.1.1-alpha.100/lib/cmd/bundle/help.txt +67 -0
  160. package/framework/v0.1.1-alpha.100/lib/cmd/bundle/list.js +129 -0
  161. package/framework/v0.1.1-alpha.100/lib/cmd/bundle/remove.js +229 -0
  162. package/framework/v0.1.1-alpha.100/lib/cmd/bundle/rename.js +4 -0
  163. package/framework/v0.1.1-alpha.100/lib/cmd/bundle/restart.js +235 -0
  164. package/framework/v0.1.1-alpha.100/lib/cmd/bundle/rm.js +2 -0
  165. package/framework/v0.1.1-alpha.100/lib/cmd/bundle/start.js +394 -0
  166. package/framework/v0.1.1-alpha.100/lib/cmd/bundle/status.js +3 -0
  167. package/framework/v0.1.1-alpha.100/lib/cmd/bundle/stop.js +232 -0
  168. package/framework/v0.1.1-alpha.100/lib/cmd/env/add.js +436 -0
  169. package/framework/v0.1.1-alpha.100/lib/cmd/env/get.js +62 -0
  170. package/framework/v0.1.1-alpha.100/lib/cmd/env/help.js +28 -0
  171. package/framework/v0.1.1-alpha.100/lib/cmd/env/help.txt +33 -0
  172. package/framework/v0.1.1-alpha.100/lib/cmd/env/link-dev.js +80 -0
  173. package/framework/v0.1.1-alpha.100/lib/cmd/env/list.js +111 -0
  174. package/framework/v0.1.1-alpha.100/lib/cmd/env/remove.js +150 -0
  175. package/framework/v0.1.1-alpha.100/lib/cmd/env/rm.js +2 -0
  176. package/framework/v0.1.1-alpha.100/lib/cmd/env/set.js +57 -0
  177. package/framework/v0.1.1-alpha.100/lib/cmd/env/unset.js +44 -0
  178. package/framework/v0.1.1-alpha.100/lib/cmd/env/use.js +79 -0
  179. package/framework/v0.1.1-alpha.100/lib/cmd/framework/dot.js +70 -0
  180. package/framework/v0.1.1-alpha.100/lib/cmd/framework/get.js +0 -0
  181. package/framework/v0.1.1-alpha.100/lib/cmd/framework/help.js +39 -0
  182. package/framework/v0.1.1-alpha.100/lib/cmd/framework/help.txt +31 -0
  183. package/framework/v0.1.1-alpha.100/lib/cmd/framework/init.js +541 -0
  184. package/{core/utils/lib/cmd → framework/v0.1.1-alpha.100/lib/cmd/framework}/msg.json +3 -3
  185. package/framework/v0.1.1-alpha.100/lib/cmd/framework/open.js +50 -0
  186. package/framework/v0.1.1-alpha.100/lib/cmd/framework/restart.js +124 -0
  187. package/framework/v0.1.1-alpha.100/lib/cmd/framework/set.js +216 -0
  188. package/framework/v0.1.1-alpha.100/lib/cmd/framework/start.js +96 -0
  189. package/framework/v0.1.1-alpha.100/lib/cmd/framework/status.js +72 -0
  190. package/framework/v0.1.1-alpha.100/lib/cmd/framework/stop.js +159 -0
  191. package/framework/v0.1.1-alpha.100/lib/cmd/framework/tail.js +184 -0
  192. package/framework/v0.1.1-alpha.100/lib/cmd/framework/update.js +0 -0
  193. package/framework/v0.1.1-alpha.100/lib/cmd/framework/version.js +44 -0
  194. package/framework/v0.1.1-alpha.100/lib/cmd/gina-dev.1.md +66 -0
  195. package/framework/v0.1.1-alpha.100/lib/cmd/gina-framework.1.md +100 -0
  196. package/framework/v0.1.1-alpha.100/lib/cmd/gina.1.md +79 -0
  197. package/framework/v0.1.1-alpha.100/lib/cmd/helper.js +1147 -0
  198. package/framework/v0.1.1-alpha.100/lib/cmd/index.js +170 -0
  199. package/framework/v0.1.1-alpha.100/lib/cmd/msg.json +20 -0
  200. package/framework/v0.1.1-alpha.100/lib/cmd/port/help.js +28 -0
  201. package/framework/v0.1.1-alpha.100/lib/cmd/port/help.txt +31 -0
  202. package/framework/v0.1.1-alpha.100/lib/cmd/port/inc/scan.js +108 -0
  203. package/framework/v0.1.1-alpha.100/lib/cmd/port/list.js +176 -0
  204. package/framework/v0.1.1-alpha.100/lib/cmd/port/set.js +0 -0
  205. package/framework/v0.1.1-alpha.100/lib/cmd/project/add.js +528 -0
  206. package/framework/v0.1.1-alpha.100/lib/cmd/project/arguments.json +9 -0
  207. package/framework/v0.1.1-alpha.100/lib/cmd/project/build.js +115 -0
  208. package/framework/v0.1.1-alpha.100/lib/cmd/project/help.js +28 -0
  209. package/framework/v0.1.1-alpha.100/lib/cmd/project/help.txt +76 -0
  210. package/framework/v0.1.1-alpha.100/lib/cmd/project/import.js +2 -0
  211. package/framework/v0.1.1-alpha.100/lib/cmd/project/list.js +55 -0
  212. package/framework/v0.1.1-alpha.100/lib/cmd/project/move.js +0 -0
  213. package/framework/v0.1.1-alpha.100/lib/cmd/project/remove.js +144 -0
  214. package/framework/v0.1.1-alpha.100/lib/cmd/project/rename.js +162 -0
  215. package/framework/v0.1.1-alpha.100/lib/cmd/project/restart.js +0 -0
  216. package/framework/v0.1.1-alpha.100/lib/cmd/project/rm.js +2 -0
  217. package/framework/v0.1.1-alpha.100/lib/cmd/project/start.js +0 -0
  218. package/framework/v0.1.1-alpha.100/lib/cmd/project/status.js +3 -0
  219. package/framework/v0.1.1-alpha.100/lib/cmd/project/stop.js +0 -0
  220. package/framework/v0.1.1-alpha.100/lib/cmd/protocol/help.js +27 -0
  221. package/framework/v0.1.1-alpha.100/lib/cmd/protocol/help.txt +57 -0
  222. package/framework/v0.1.1-alpha.100/lib/cmd/protocol/list.js +239 -0
  223. package/framework/v0.1.1-alpha.100/lib/cmd/protocol/set.js +631 -0
  224. package/framework/v0.1.1-alpha.100/lib/cmd/scope/help.js +28 -0
  225. package/framework/v0.1.1-alpha.100/lib/cmd/scope/help.txt +33 -0
  226. package/framework/v0.1.1-alpha.100/lib/cmd/scope/link-local.js +80 -0
  227. package/framework/v0.1.1-alpha.100/lib/cmd/scope/list.js +116 -0
  228. package/framework/v0.1.1-alpha.100/lib/cmd/scope/remove.js +150 -0
  229. package/framework/v0.1.1-alpha.100/lib/cmd/scope/rm.js +2 -0
  230. package/framework/v0.1.1-alpha.100/lib/cmd/scope/set.js +57 -0
  231. package/framework/v0.1.1-alpha.100/lib/cmd/scope/unset.js +44 -0
  232. package/framework/v0.1.1-alpha.100/lib/cmd/scope/use.js +79 -0
  233. package/framework/v0.1.1-alpha.100/lib/cmd/view/add.js +311 -0
  234. package/framework/v0.1.1-alpha.100/lib/collection/README.md +5 -0
  235. package/framework/v0.1.1-alpha.100/lib/collection/build.json +0 -0
  236. package/{core/utils → framework/v0.1.1-alpha.100}/lib/collection/package.json +2 -2
  237. package/framework/v0.1.1-alpha.100/lib/collection/src/main.js +1459 -0
  238. package/{core/utils → framework/v0.1.1-alpha.100}/lib/config.js +49 -34
  239. package/framework/v0.1.1-alpha.100/lib/cron/README.md +7 -0
  240. package/framework/v0.1.1-alpha.100/lib/cron/package.json +20 -0
  241. package/framework/v0.1.1-alpha.100/lib/cron/src/main.js +176 -0
  242. package/{core/utils → framework/v0.1.1-alpha.100}/lib/generator/index.js +8 -4
  243. package/framework/v0.1.1-alpha.100/lib/index.js +116 -0
  244. package/framework/v0.1.1-alpha.100/lib/inherits/LICENSE +19 -0
  245. package/{core/utils → framework/v0.1.1-alpha.100}/lib/inherits/README.md +0 -0
  246. package/{core/utils → framework/v0.1.1-alpha.100}/lib/inherits/example/inheriting_eventemitter.js +0 -0
  247. package/{core/utils → framework/v0.1.1-alpha.100}/lib/inherits/example/protected_inheritance.js +0 -0
  248. package/{core/utils → framework/v0.1.1-alpha.100}/lib/inherits/example/simple_inheritance.js +0 -0
  249. package/{core/utils → framework/v0.1.1-alpha.100}/lib/inherits/example/super_attribute_overridden_by_child_on_init.js +0 -0
  250. package/{core/utils → framework/v0.1.1-alpha.100}/lib/inherits/package.json +2 -2
  251. package/{core/utils → framework/v0.1.1-alpha.100}/lib/inherits/src/main.js +18 -19
  252. package/framework/v0.1.1-alpha.100/lib/logger/README.md +7 -0
  253. package/framework/v0.1.1-alpha.100/lib/logger/package.json +20 -0
  254. package/framework/v0.1.1-alpha.100/lib/logger/src/containers/default/index.js +55 -0
  255. package/framework/v0.1.1-alpha.100/lib/logger/src/containers/file/index.js +251 -0
  256. package/framework/v0.1.1-alpha.100/lib/logger/src/containers/file/lib/logrotator/README.md +100 -0
  257. package/framework/v0.1.1-alpha.100/lib/logger/src/containers/file/lib/logrotator/index.js +274 -0
  258. package/framework/v0.1.1-alpha.100/lib/logger/src/containers/mq/index.js +52 -0
  259. package/framework/v0.1.1-alpha.100/lib/logger/src/containers/mq/listener.js +302 -0
  260. package/framework/v0.1.1-alpha.100/lib/logger/src/containers/mq/speaker.js +118 -0
  261. package/framework/v0.1.1-alpha.100/lib/logger/src/helper.js +131 -0
  262. package/framework/v0.1.1-alpha.100/lib/logger/src/main.js +739 -0
  263. package/{core/utils → framework/v0.1.1-alpha.100}/lib/math/index.js +58 -35
  264. package/{core/utils → framework/v0.1.1-alpha.100}/lib/merge/README.md +5 -0
  265. package/{core/utils → framework/v0.1.1-alpha.100}/lib/merge/example/merge.js +1 -1
  266. package/{core/utils → framework/v0.1.1-alpha.100}/lib/merge/example/merge_2_literal objects.js +0 -0
  267. package/{core/utils → framework/v0.1.1-alpha.100}/lib/merge/example/merge_and_preserve_first.js +2 -0
  268. package/{core/utils → framework/v0.1.1-alpha.100}/lib/merge/package.json +2 -2
  269. package/framework/v0.1.1-alpha.100/lib/merge/src/main.js +531 -0
  270. package/{core/utils → framework/v0.1.1-alpha.100}/lib/model.js +42 -19
  271. package/framework/v0.1.1-alpha.100/lib/proc.js +518 -0
  272. package/framework/v0.1.1-alpha.100/lib/routing/README.md +0 -0
  273. package/framework/v0.1.1-alpha.100/lib/routing/build.json +0 -0
  274. package/{core/utils → framework/v0.1.1-alpha.100}/lib/routing/package.json +2 -2
  275. package/framework/v0.1.1-alpha.100/lib/routing/src/main.js +1492 -0
  276. package/framework/v0.1.1-alpha.100/lib/session-store.js +33 -0
  277. package/{core/utils → framework/v0.1.1-alpha.100}/lib/shell.js +43 -30
  278. package/framework/v0.1.1-alpha.100/lib/swig-filters/README.md +0 -0
  279. package/framework/v0.1.1-alpha.100/lib/swig-filters/package.json +20 -0
  280. package/framework/v0.1.1-alpha.100/lib/swig-filters/src/main.js +322 -0
  281. package/framework/v0.1.1-alpha.100/lib/url/README.md +0 -0
  282. package/{core/utils → framework/v0.1.1-alpha.100}/lib/url/index.js +2 -1
  283. package/{core/utils → framework/v0.1.1-alpha.100}/lib/url/mocks.json +0 -0
  284. package/{core/utils → framework/v0.1.1-alpha.100}/lib/url/routing.json +9 -9
  285. package/{core/utils → framework/v0.1.1-alpha.100}/lib/url/test.js +0 -0
  286. package/{core/utils → framework/v0.1.1-alpha.100}/lib/validator.js +7 -7
  287. package/framework/v0.1.1-alpha.100/package.json +14 -0
  288. package/package.json +44 -33
  289. package/resources/etc/init.d/debian/gina +117 -0
  290. package/resources/home/framework/env.json +34 -0
  291. package/resources/home/framework/locals.json +14 -0
  292. package/resources/home/framework/project.json +48 -0
  293. package/resources/home/framework/projects.json +6 -0
  294. package/resources/home/main.json +65 -0
  295. package/resources/home/settings.json +24 -0
  296. package/resources/home/user/extensions/logger/default/config.json +77 -0
  297. package/resources/home/user/extensions/logger/file/config.json +11 -0
  298. package/resources/img/android-chrome-192x192.png +0 -0
  299. package/resources/img/android-chrome-512x512.png +0 -0
  300. package/resources/img/apple-touch-icon.png +0 -0
  301. package/resources/img/favicon-16x16.png +0 -0
  302. package/resources/img/favicon-32x32.png +0 -0
  303. package/resources/img/favicon.ico +0 -0
  304. package/resources/package.json.template +61 -0
  305. package/script/lib.js +24 -0
  306. package/script/post_install.js +747 -169
  307. package/script/post_publish.js +185 -0
  308. package/script/pre_install.js +627 -37
  309. package/script/prepare_version.js +552 -0
  310. package/utils/helper.js +620 -0
  311. package/utils/prototypes.js +239 -0
  312. package/utils/prototypes.json_clone.js +175 -0
  313. package/.npmignore +0 -6
  314. package/MIDDLEWARE +0 -1
  315. package/SUCCESS +0 -1
  316. package/VERSION +0 -1
  317. package/core/asset/html/nolayout.html +0 -1
  318. package/core/asset/js/plugin/build.dev.json +0 -28
  319. package/core/asset/js/plugin/build.json +0 -31
  320. package/core/asset/js/plugin/dist/gina.min.css +0 -1
  321. package/core/asset/js/plugin/dist/gina.min.css.map +0 -1
  322. package/core/asset/js/plugin/dist/gina.min.js +0 -13732
  323. package/core/asset/js/plugin/dist/gina.min.js.map +0 -42
  324. package/core/asset/js/plugin/dist/gina.onload.min.js +0 -3
  325. package/core/asset/js/plugin/dist/gina.onload.min.js.map +0 -8
  326. package/core/asset/js/plugin/readme.md +0 -152
  327. package/core/asset/js/plugin/src/gina/main.js +0 -132
  328. package/core/asset/js/plugin/src/gina/popin/css/design.css +0 -23
  329. package/core/asset/js/plugin/src/gina/popin/css/main.css +0 -1112
  330. package/core/asset/js/plugin/src/gina/popin/css/popin.css +0 -3
  331. package/core/asset/js/plugin/src/gina/popin/css/popin.css.map +0 -1
  332. package/core/asset/js/plugin/src/gina/popin/doc/TOC.md +0 -29
  333. package/core/asset/js/plugin/src/gina/popin/doc/css.md +0 -162
  334. package/core/asset/js/plugin/src/gina/popin/doc/extend.md +0 -663
  335. package/core/asset/js/plugin/src/gina/popin/doc/faq.md +0 -46
  336. package/core/asset/js/plugin/src/gina/popin/doc/html.md +0 -227
  337. package/core/asset/js/plugin/src/gina/popin/doc/js.md +0 -37
  338. package/core/asset/js/plugin/src/gina/popin/doc/misc.md +0 -178
  339. package/core/asset/js/plugin/src/gina/popin/doc/usage.md +0 -130
  340. package/core/asset/js/plugin/src/gina/popin/main.js +0 -783
  341. package/core/asset/js/plugin/src/gina/popin/sass/config.sass +0 -37
  342. package/core/asset/js/plugin/src/gina/popin/sass/gina-design.sass +0 -622
  343. package/core/asset/js/plugin/src/gina/popin/sass/gina-popin.sass +0 -54
  344. package/core/asset/js/plugin/src/gina/popin/sass/helper.scss +0 -73
  345. package/core/asset/js/plugin/src/gina/toolbar/.npmignore +0 -19
  346. package/core/asset/js/plugin/src/gina/toolbar/css/toolbar.css +0 -433
  347. package/core/asset/js/plugin/src/gina/toolbar/css/toolbar.css.map +0 -1
  348. package/core/asset/js/plugin/src/gina/toolbar/index.html +0 -285
  349. package/core/asset/js/plugin/src/gina/toolbar/index.kit +0 -120
  350. package/core/asset/js/plugin/src/gina/toolbar/jquery-3.1.0.min.js +0 -4
  351. package/core/asset/js/plugin/src/gina/toolbar/main.js +0 -693
  352. package/core/asset/js/plugin/src/gina/toolbar/mock.gina.json +0 -1
  353. package/core/asset/js/plugin/src/gina/toolbar/mock.user.json +0 -1
  354. package/core/asset/js/plugin/src/gina/toolbar/readme.md +0 -7
  355. package/core/asset/js/plugin/src/gina/toolbar/sass/toolbar.sass +0 -563
  356. package/core/asset/js/plugin/src/gina/toolbar/svg-src/Info-color.svg +0 -1
  357. package/core/asset/js/plugin/src/gina/toolbar/svg-src/Info-grey.svg +0 -1
  358. package/core/asset/js/plugin/src/gina/toolbar/svg-src/error-color.svg +0 -1
  359. package/core/asset/js/plugin/src/gina/toolbar/svg-src/error-grey.svg +0 -1
  360. package/core/asset/js/plugin/src/gina/toolbar/svg-src/info-optim.svg +0 -13
  361. package/core/asset/js/plugin/src/gina/toolbar/svg-src/logo-gina.svg +0 -1
  362. package/core/asset/js/plugin/src/gina/toolbar/svg-src/settings-big.svg +0 -1
  363. package/core/asset/js/plugin/src/gina/toolbar/svg-src/settings.afdesign +0 -0
  364. package/core/asset/js/plugin/src/gina/toolbar/svg-src/settings.svg +0 -1
  365. package/core/asset/js/plugin/src/gina/toolbar/svg-src/stripe-calendar-optim.svg +0 -1
  366. package/core/asset/js/plugin/src/gina/toolbar/svg-src/stripe-calendar.svg +0 -1
  367. package/core/asset/js/plugin/src/gina/toolbar/svg-src/stripe-card-optim.svg +0 -1
  368. package/core/asset/js/plugin/src/gina/toolbar/svg-src/stripe-card.svg +0 -1
  369. package/core/asset/js/plugin/src/gina/toolbar/svg-src/stripe-lock-optim.svg +0 -1
  370. package/core/asset/js/plugin/src/gina/toolbar/svg-src/stripe-lock.svg +0 -1
  371. package/core/asset/js/plugin/src/gina/toolbar/svg-src/warning-color.svg +0 -1
  372. package/core/asset/js/plugin/src/gina/toolbar/svg-src/warning-grey.svg +0 -1
  373. package/core/asset/js/plugin/src/gina/toolbar/test.jpg +0 -0
  374. package/core/asset/js/plugin/src/gina/toolbar/toolbar.html +0 -104
  375. package/core/asset/js/plugin/src/gina/utils/dom.js +0 -24
  376. package/core/asset/js/plugin/src/gina/utils/events.js +0 -201
  377. package/core/asset/js/plugin/src/gina/utils/loader.js +0 -57
  378. package/core/asset/js/plugin/src/main.js +0 -235
  379. package/core/asset/js/plugin/src/vendor/jquery/1.11.1-css-event_alias.min.js +0 -5
  380. package/core/asset/js/plugin/src/vendor/jquery/1.12.4.min.js +0 -5
  381. package/core/asset/js/plugin/src/vendor/jquery/2.1.1-css-event_alias-sizzle.min.js +0 -4
  382. package/core/asset/js/plugin/src/vendor/jquery/README.md +0 -14
  383. package/core/asset/js/plugin/src/vendor/jquery/slim-3.1.1.min.js +0 -4
  384. package/core/config.js +0 -1225
  385. package/core/controller/controller.js +0 -1860
  386. package/core/gna.js +0 -908
  387. package/core/plugins/lib/validator/src/form-validator.js +0 -789
  388. package/core/plugins/lib/validator/src/main.js +0 -2056
  389. package/core/router.js +0 -717
  390. package/core/server.js +0 -1363
  391. package/core/template/conf/env.json +0 -70
  392. package/core/template/conf/settings.json +0 -48
  393. package/core/template/conf/statics.json +0 -6
  394. package/core/template/conf/views.json +0 -16
  395. package/core/template/samples/bundle/config/app.json +0 -4
  396. package/core/template/samples/bundle/config/routing.json +0 -9
  397. package/core/template/samples/bundle/controllers/setup.js +0 -33
  398. package/core/template/views/js/vendor/readme.md +0 -1
  399. package/core/template/views/readme.md +0 -1
  400. package/core/utils/helpers/dateFormat.js +0 -264
  401. package/core/utils/helpers/index.js +0 -202
  402. package/core/utils/index.js +0 -75
  403. package/core/utils/lib/cmd/app.js +0 -686
  404. package/core/utils/lib/cmd/basic.help.txt +0 -40
  405. package/core/utils/lib/cmd/basic.js +0 -141
  406. package/core/utils/lib/cmd/gina-add-bundle.js +0 -328
  407. package/core/utils/lib/cmd/gina-add-views.js +0 -99
  408. package/core/utils/lib/cmd/gina-build.js +0 -218
  409. package/core/utils/lib/cmd/gina-clean.js +0 -26
  410. package/core/utils/lib/cmd/gina-connect.js +0 -176
  411. package/core/utils/lib/cmd/gina-delete-bundle.js +0 -176
  412. package/core/utils/lib/cmd/gina-deploy.js +0 -452
  413. package/core/utils/lib/cmd/gina-init-project.js +0 -83
  414. package/core/utils/lib/cmd/gina-start-bundle.js +0 -3
  415. package/core/utils/lib/cmd/gina-start.js +0 -3
  416. package/core/utils/lib/cmd/index.js +0 -157
  417. package/core/utils/lib/cmd/project.js +0 -14
  418. package/core/utils/lib/collection/src/main.js +0 -650
  419. package/core/utils/lib/logger/containers/file.js +0 -11
  420. package/core/utils/lib/logger/index.js +0 -260
  421. package/core/utils/lib/merge/src/main.js +0 -344
  422. package/core/utils/lib/proc.js +0 -416
  423. package/core/utils/lib/routing/src/main.js +0 -165
  424. package/documentation/css/default.css +0 -3
  425. package/documentation/html/home.html +0 -6
  426. package/documentation/html/inc/_footer.html +0 -5
  427. package/documentation/html/layout.html +0 -21
  428. package/documentation/img/debug-conf1.png +0 -0
  429. package/documentation/img/debug-conf2.png +0 -0
  430. package/documentation/img/debug-conf3.png +0 -0
  431. package/documentation/img/debug-conf4.png +0 -0
  432. package/documentation/img/debug-conf5.png +0 -0
  433. package/documentation/img/debug-conf6.png +0 -0
  434. package/documentation/img/debug-conf7.png +0 -0
  435. package/documentation/img/debug-new1.png +0 -0
  436. package/documentation/img/debug-new2.png +0 -0
  437. package/documentation/img/debug-start.png +0 -0
  438. package/documentation/md/api/controller/main.md +0 -74
  439. package/migration_note.md +0 -7
  440. package/package-lock.json +0 -611
  441. package/script/pre_publish.js +0 -207
  442. package/tutorial/Commands/README.md +0 -56
  443. package/tutorial/Commands/add-bundle-result.png +0 -0
  444. package/tutorial/Commands/add-bundle.png +0 -0
  445. package/tutorial/Commands/delete-bundle.png +0 -0
  446. package/tutorial/Commands/help.png +0 -0
  447. package/tutorial/Commands/init-project.png +0 -0
  448. package/tutorial/Commands/start-bundle-result.png +0 -0
  449. package/tutorial/Commands/start-bundle-stop.png +0 -0
  450. package/tutorial/Commands/start-bundle.png +0 -0
  451. package/tutorial/Commands/version.png +0 -0
  452. package/tutorial/ETC/README.md +0 -74
  453. package/tutorial/ETC/add-bundle-result.png +0 -0
  454. package/tutorial/ETC/add-bundle.png +0 -0
  455. package/tutorial/ETC/init-project.png +0 -0
  456. package/tutorial/Install/README.md +0 -54
  457. package/tutorial/Install/git-get.png +0 -0
  458. package/tutorial/Install/git-install-end.png +0 -0
  459. package/tutorial/Install/git-install-result.png +0 -0
  460. package/tutorial/Install/git-install-start.png +0 -0
  461. package/tutorial/Install/install-end.png +0 -0
  462. package/tutorial/Install/install-result.png +0 -0
  463. package/tutorial/Install/install-start.png +0 -0
  464. package/tutorial/WebStorm/README.md +0 -30
  465. package/tutorial/WebStorm/closure-compiler.png +0 -0
  466. package/tutorial/WebStorm/sass.png +0 -0
@@ -1,24 +1,83 @@
1
1
  /**
2
2
  * This file is part of the gina package.
3
- * Copyright (c) 2016 Rhinostone <gina@rhinostone.com>
3
+ * Copyright (c) 2009-2022 Rhinostone <contact@gina.io>
4
4
  *
5
5
  * For the full copyright and license information, please view the LICENSE
6
6
  * file that was distributed with this source code.
7
7
  */
8
- process.env.IS_SCRIPT_MODE = true;
8
+
9
9
  //Imports
10
- var fs = require('fs');
11
- var os = require('os');
10
+ var fs = require('fs');
11
+ var os = require("os");
12
+ var util = require('util');
13
+ var promisify = util.promisify;
14
+ const { execSync } = require('child_process');
15
+
16
+ var isWin32 = function() {
17
+ return (process.platform === 'win32') ? true : false;
18
+ };
19
+ var isWritableSync = function(path) {
20
+ var canWrite = false;
21
+ if ( fs.accessSync && typeof(fs.accessSync) != 'undefined' ) {
22
+ try {
23
+ fs.accessSync(path, fs.constants.W_OK);
24
+ canWrite = true;
25
+ } catch (err) {
26
+ canWrite = false;
27
+ }
28
+ } else { // support for old version of nodejs
12
29
 
13
- // var helpers = require('./../core/utils/helpers');
14
- // var utils = {
15
- // logger : require('./../core/utils/lib/logger'),
16
- // generator : require('./../core/utils/lib/generator')
17
- // };
30
+ try {
31
+ canWrite = (fs.statSync(path).mode & (fs.constants.S_IRUSR | fs.constants.S_IRGRP | fs.constants.S_IROTH));
32
+ } catch (err) {
33
+ canWrite = false
34
+ }
35
+ }
18
36
 
19
- var utils = require('./../core/utils');
20
- var console = utils.logger;
37
+ return canWrite
38
+ };
39
+ var getUserHome = function() {
40
+ var home = os.homedir ? os.homedir : function() {
41
+ var homeDir = process.env[(isWin32()) ? 'USERPROFILE' : 'HOME'];
42
+
43
+ if ( !homeDir || homeDir == '' ) {
44
+ throw new Error('Home directory not defined or not found !');
45
+ }
21
46
 
47
+ if ( !isWritableSync(homeDir) ) {
48
+ throw new Error('Home directory found but not writable: need permissions for `'+ homeDir +'`');
49
+ }
50
+
51
+ return homeDir;
52
+ };
53
+
54
+ return home()
55
+ };
56
+
57
+ // just in case `post_install` is called by hand
58
+ var initialDir = process.cwd();
59
+ var frameworkPath = __dirname +'/..';
60
+ if ( !fs.existsSync(frameworkPath +'/node_modules/colors') ) {
61
+ process.chdir(frameworkPath);
62
+
63
+ var oldConfigGlobal = process.env.npm_config_global;
64
+ process.env.npm_config_global=false;
65
+ var cmd = ( isWin32() ) ? 'npm.cmd install colors@1.4.0' : 'npm install colors@1.4.0';
66
+ execSync(cmd);
67
+ process.env.npm_config_global=oldConfigGlobal;
68
+
69
+ process.chdir(initialDir);
70
+ }
71
+
72
+ var lib = require('./lib');
73
+ var console = lib.logger;
74
+
75
+ var scriptPath = __dirname;
76
+ var ginaPath = (scriptPath.replace(/\\/g, '/')).replace('/script', '');
77
+ var help = require(ginaPath + '/utils/helper.js');
78
+ var pack = ginaPath + '/package.json';
79
+ pack = (isWin32()) ? pack.replace(/\//g, '\\') : pack;
80
+ var helpers = null;
22
81
 
23
82
 
24
83
  /**
@@ -27,258 +86,777 @@ var console = utils.logger;
27
86
  * */
28
87
  function PostInstall() {
29
88
 
30
- var self = this;
89
+ var self = {};
90
+
91
+ var configure = function() {
92
+
93
+ // TODO - handle windows case
94
+ if ( /^true$/i.test(isWin32()) ) {
95
+ throw new Error('Windows in not yet fully supported. Thank you for your patience');
96
+ }
97
+
98
+ self.isWin32 = isWin32();
99
+ self.isGlobalInstall = process.env.npm_config_global || false;
100
+ self.isResetNeeded = process.env.npm_config_reset || false;
101
+ self.defaultPrefix = execSync('npm config get prefix').toString().replace(/\n$/g, '');
102
+ // var pkg = null;
103
+ // try {
104
+ // if (self.isGlobalInstall) {
105
+ // pkg = execSync('npm list -g gina --long --json').toString().replace(/\n$/g, '');
106
+ // } else {
107
+ // pkg = execSync('npm list gina --long --json').toString().replace(/\n$/g, '');
108
+ // }
109
+ // } catch(err) {
110
+ // throw err
111
+ // }
112
+ // self.optionalPrefix = JSON.parse(pkg).dependencies.gina.config.optionalPrefix.replace(/^\~/, getUserHome());
113
+
114
+ // `process.env.npm_config_prefix` is only retrieved on `npm install gina`
115
+ // and it should always be equal to `self.defaultPrefix`
116
+ self.prefix = process.env.npm_config_prefix || self.defaultPrefix;
117
+ self.isCustomPrefix = false;
118
+ self.isGinaInstalled = false;
119
+
120
+ // Overriding thru passed arguments
121
+ var args = process.argv, i = 0, len = args.length;
122
+ for (; i < len; ++i) {
123
+ if ( /^(\-g|\-\-global)$/.test(args[i]) ) {
124
+ self.isGlobalInstall = true;
125
+ continue;
126
+ }
127
+
128
+ if ( /^\-\-reset$/.test(args[i]) ) {
129
+ self.isResetNeeded = true;
130
+ continue;
131
+ }
132
+
133
+ if ( /^\-\-prefix\=/.test(args[i] ) ) {
134
+ self.isCustomPrefix = true;
135
+ self.prefix = args[i].split(/\=/)[1];
136
+ self.prefix = self.prefix.replace(/^\~/, getUserHome());
137
+ continue;
138
+ }
139
+ }
140
+
141
+ // For local install
142
+ console.debug('self.isGlobalInstall => '+ self.isGlobalInstall);
143
+ if ( !self.isGlobalInstall ) {
144
+ console.warn('Local installation is not fully supported at the moment.');
145
+ console.warn('You are encouraged to use `npm install -g gina`\nor, if you are trying to link gina to your project, use `npm link gina` if Gina has already been installed globally\n');
146
+ // Just in case someone is trying to run pre_install from the `gina` module
147
+ if (!/node\_modules(\\\\|\/)gina$/.test(process.env.INIT_CWD)) {
148
+ self.prefix = process.env.INIT_CWD;//process.cwd();
149
+ }
150
+ }
151
+
152
+ // checking permission
153
+ var hasPermissionsForBin = isWritableSync(self.prefix + ( isWin32() ? '\\' : '/' ) + 'bin');
154
+ var hasPermissionsForLib = isWritableSync(self.prefix + ( isWin32() ? '\\' : '/' ) + 'lib');
155
+ var hasPermissionsForVar = isWritableSync(self.prefix + ( isWin32() ? '\\' : '/' ) + 'var');
156
+ if ( !hasPermissionsForBin || !hasPermissionsForLib || !hasPermissionsForVar) {
157
+ if (!hasPermissionsForBin) {
158
+ console.warn('Path not accessible or missing: '+ self.prefix + ( isWin32() ? '\\' : '/' ) + 'bin')
159
+ }
160
+ if (!hasPermissionsForLib) {
161
+ console.warn('Path not accessible or missing: '+ self.prefix + ( isWin32() ? '\\' : '/' ) + 'lib')
162
+ }
163
+ if (!hasPermissionsForVar) {
164
+ console.warn('Path not accessible or missing: '+ self.prefix + ( isWin32() ? '\\' : '/' ) + 'var')
165
+ }
166
+
167
+ // console.warn('You do not have sufficient permissions. Switching to `--prefix='+ self.optionalPrefix +'`');
168
+ // process.env.npm_config_prefix = self.prefix = self.optionalPrefix;
169
+ }
170
+
171
+ var pkg = null, pkgObj = null, cmd = null;
172
+ try {
173
+ cmd = 'npm list gina --long --json --prefix='+ self.prefix;
174
+ if (self.isGlobalInstall) {
175
+ cmd += ' -g';
176
+ }
177
+ pkg = execSync(cmd).toString().replace(/\n$/g, '');
178
+ self.optionalPrefix = JSON.parse(pkg).dependencies.gina.config.optionalPrefix.replace(/^\~/, getUserHome());
179
+
180
+ } catch(err) {
181
+ throw err
182
+ }
183
+ pkgObj = JSON.parse(pkg);
184
+ self.optionalPrefix = pkgObj.dependencies.gina.config.optionalPrefix.replace(/^\~/, getUserHome());
185
+
186
+
187
+ if ( self.prefix != self.defaultPrefix ) {
188
+ self.isCustomPrefix = true;
189
+ }
190
+
191
+ self.gina = __dirname +'/..';
192
+ // tying to figure out if gina is already install the given prefix
193
+ var hasFoundGina = pkg;
194
+ try {
195
+ hasFoundGina = JSON.parse(hasFoundGina);
196
+ if ( hasFoundGina.dependencies && typeof(hasFoundGina.dependencies.gina) != 'undefined' ) {
197
+ self.isGinaInstalled = true;
198
+ self.versionPath = self.gina;
199
+ self.versionPath += (isWin32()) ? '\\framework\\' : '/framework/';
200
+ self.version = hasFoundGina.dependencies.gina.version;
201
+ self.versionPath += 'v'+ self.version;
202
+
203
+ self.shortVersion = self.version.split('.');
204
+ self.shortVersion.splice(2);
205
+ self.shortVersion = self.shortVersion.join('.');
206
+
207
+ console.debug('Install path => '+ hasFoundGina.dependencies.gina.path);
208
+
209
+ // OK ... found installed gina but on a different prefix
210
+ // In this case, let's assume that it is not really installed
211
+ if ( !new RegExp('^'+ self.prefix).test(hasFoundGina.dependencies.gina.path) ) {
212
+ self.isGinaInstalled = false;
213
+ }
214
+ }
215
+ } catch (err) {}
216
+
217
+ console.debug('self.defaultPrefix => '+ self.defaultPrefix);
218
+ console.debug('self.optionalPrefix => '+ self.optionalPrefix );
219
+ console.debug('self.prefix => '+ self.prefix);
220
+ console.debug('self.isCustomPrefix => ', self.isCustomPrefix);
221
+ // only available when running the script with NPM
222
+ console.debug('process.env.npm_config_prefix => '+ process.env.npm_config_prefix);
223
+ }
31
224
 
32
225
  //Initialize post installation scripts.
33
226
  var init = function() {
34
- self.isWin32 = ( os.platform() == 'win32' ) ? true : false;
35
- self.path = _( __dirname.substring(0, (__dirname.length - "script".length)-1 ) );
36
- self.root = process.cwd().toString();
227
+ configure();
228
+ helpers = require(self.versionPath+ '/helpers');
37
229
 
230
+ begin(0);
231
+ }
232
+
233
+ /**
234
+ * Bebin - Will run checking tasks in order of declaration
235
+ * */
236
+ var begin = async function(i) {
237
+ //console.debug('i is ', i);
238
+ var n = 0, funct = null, functName = null;
239
+ for (let t in self) {
240
+ if ( typeof(self[t]) == 'function') {
241
+ if (n == i) {
242
+ //let func = 'self.' + t + '()';
243
+ let func = 'self.' + t;
244
+ console.debug('Running [ ' + func + '() ]');
245
+ funct = func;
246
+ functName = t;
247
+ break;
248
+ }
249
+ n++;
250
+ }
251
+ }
38
252
 
39
- createVersionFile();
40
- //console.log('[ debug ] createVersionFile()');
41
- createGinaFileForPlatform();
42
- //console.log('[ debug ] createGinaFileForPlatform()');
253
+ // to handle sync vs async to allow execution in order of declaration
254
+ if (funct) {
255
+ eval('async function on'+functName+'(){ await promisify('+ funct + ')().catch(function(e){ console.error(e.toString()); process.exit(-1);}).then(function(){ begin('+(i+1)+')});}; on'+functName+'();'); // jshint ignore:line
256
+ } else {
257
+ process.exit(0);
258
+ }
43
259
  }
44
260
 
45
- var createVersionFile = function(callback) {
46
- var version = require( _(self.path + '/package.json') ).version;
47
- var target = _(self.path + '/VERSION');
261
+ // self.checkIfIsContributorEnv = function(done) {
262
+ // var isContribEnv = false;
263
+ // if ( new _(self.gina + '/.git', true).existsSync() ) {
264
+ // isContribEnv = true;
265
+ // }
266
+ // var homeDir = getUserHome() || null;
267
+ // if (!homeDir) {
268
+ // return done(new Error('No $HOME path found !'))
269
+ // }
270
+ // var ginaHomeDir = homeDir.replace(/\n/g, '') + '/.gina';
271
+ // setEnvVar('GINA_HOMEDIR', ginaHomeDir);
272
+
273
+ // var npmGlobal = homeDir.replace(/\n/g, '') + '/.npm-global';
274
+ // var IsNpmGlobalFound = false;
275
+ // if ( new _(npmGlobal, true).existsSync() ) {
276
+ // IsNpmGlobalFound = true;
277
+
278
+ // if ( ! new _(npmGlobal +'/bin', true).existsSync() ) {
279
+ // new _(npmGlobal +'/bin', true).mkdirSync()
280
+ // }
281
+ // if ( ! new _(npmGlobal +'/lib/node_modules', true).existsSync() ) {
282
+ // new _(npmGlobal +'/lib/node_modules', true).mkdirSync()
283
+ // }
284
+ // }
285
+
286
+ // console.debug(self.gina, ' | ', ginaHomeDir);
287
+ // console.debug('Is contributor‘s env ? : '+ isContribEnv);
288
+
289
+ // // Fixing `npm link` VS `.npm-global` issue on contributors env
290
+ // /**
291
+ // * Patch designed to use `npm link gina` in your project
292
+ // * without taking the risk to get the wrong package version
293
+ // *
294
+ // * See.:
295
+ // * 4 reasons to avoid using `npm link` - https://hirok.io/posts/avoid-npm-link
296
+ // * */
297
+ // if (isContribEnv && IsNpmGlobalFound) {
298
+ // console.debug('Contributor case detected ...\n', JSON.stringify(process.env, null, 2));
299
+
300
+ // lib.generator.createFileFromDataSync(isContribEnv +'\n'+ '\n'+ IsNpmGlobalFound +'\n'+ JSON.stringify(process.env, null, 2), npmGlobal+'/npm_out.txt');
301
+
302
+ // // symlink the lib
303
+ // // ln -s /usr/local/lib/node_modules/gina ~/.npm-global/lib/node_modules/gina
304
+ // // symlink the bin
305
+ // // ln -s ~/.npm-global/lib/node_modules/gina/bin/gina ~/.npm-global/bin/gina
306
+ // }
307
+
308
+ // done();
309
+ // }
310
+
311
+
312
+ self.createVersionFile = function(done) {
313
+ var version = self.version;
314
+ console.debug('writting version number: '+ version);
315
+
316
+ var target = _(self.versionPath + '/VERSION');
48
317
  try {
49
318
  if ( fs.existsSync(target) ) {
50
- fs.unlinkSync(target);
51
- setTimeout(function(){
52
- if (callback) {
319
+ fs.unlinkSync(target)
320
+ }
321
+ fs.writeFileSync(target, version);
322
+ } catch(err) {
323
+ return done(err)
324
+ }
53
325
 
326
+ done();
327
+ }
54
328
 
329
+ // TODO - Remove this part
330
+ var configureGina = function() {
331
+ // link to ./bin/cli to binaries dir
332
+ if (!self.isWin32) {
333
+ var binPath = null;
334
+ if ( !self.isGlobalInstall() ) {
335
+ binPath = new _(self.prefix+'/node_modules/.bin', true).existsSync() ? _(self.prefix+'/node_modules/.bin', true) : '';
336
+ } else {
337
+ binPath = new _(self.prefix+'/lib/node_modules/gina/bin', true)
338
+ }
55
339
 
56
- fs.writeFileSync(target, version);
57
- callback()
340
+ var cli = _(binPath +'/gina', true);
341
+ // TODO - remove this part for the next version
342
+ var cliDebug = _(binPath +'/gina-debug', true);
58
343
 
59
- } else {
60
- fs.writeFileSync(target, version);
61
- }
62
- }, 1000)
344
+ if ( fs.existsSync(cli) ) {
345
+ fs.unlinkSync(cli)
346
+ }
347
+ // TODO - remove this part for the next version
348
+ if ( fs.existsSync(cliDebug) ) {
349
+ fs.unlinkSync(cliDebug)
350
+ }
63
351
 
64
- } else {
65
- fs.writeFileSync(target, version);
352
+
353
+ if ( !self.isGlobalInstall() ) {
354
+ new _(cli, true).symlinkSync( _(self.prefix +'/gina', true) )
66
355
  }
356
+ // else {
357
+ // new _(cli, true).symlinkSync( _(self.prefix +'/bin/', true) )
358
+ // }
359
+
360
+
361
+ // var cmd = 'ln -s '+ self.gina +'/bin/gina '+ binPath;
362
+ // console.debug('running: '+ cmd);
363
+ // run(cmd, { cwd: _(self.versionPath), tmp: _(self.root +'/tmp'), outToProcessSTD: true })
364
+ // .onData(function(data){
365
+ // console.info(data)
366
+ // })
367
+ // .onComplete( function onDone(err, data){
368
+ // if (err) {
369
+ // console.error(err);
370
+ // console.warn('try to run : sudo ' + cmd);
371
+ // }
372
+ // });
373
+ // To debug, you just need to run:
374
+ // gina <topic>:<task> --inspect-gina
375
+ //
376
+ // TODO - remove this part for the next version
377
+ // cmd = 'ln -s '+ self.gina +'/bin/cli-debug '+ binPath +'/gina-debug';
378
+ // run(cmd, { cwd: _(self.versionPath), tmp: _(self.root +'/tmp'), outToProcessSTD: true })
379
+ // .onData(function(data){
380
+ // console.info(data)
381
+ // })
382
+ // .onComplete( function onDone(err, data){
383
+ // if (err) {
384
+ // console.error(err);
385
+ // console.warn('try to run : sudo ' + cmd);
386
+ // }
387
+ // });
67
388
 
68
- } catch(err) {
69
- throw err;
70
- process.exit(0)
389
+ } else {
390
+ console.warn('linking gina binary is not supported yet for Windows.');
71
391
  }
72
392
  }
73
393
 
74
394
  //Creating framework command line file for nix.
75
395
  var createGinaFile = function(win32Name, callback) {
76
- var name = require( _(self.path + '/package.json') ).name;
77
- var appPath = _( self.path.substring(0, (self.path.length - ("node_modules/" + name + '/').length)) );
78
- var source = _(self.path + '/core/template/command/gina.tpl');
79
- var target = _(appPath +'/'+ name);
80
- if ( typeof(win32Name) != 'undefined') {
81
- target = _(appPath +'/'+ win32Name)
396
+ // Created by NPM for global installations
397
+ if (self.isGlobalInstall) {
398
+ return callback(false);
82
399
  }
83
400
 
84
- //Will override.
85
- if ( typeof(callback) != 'undefined') {
401
+ console.info('Current prefix: '+ self.prefix );
402
+ console.info('Current package.json: '+ _(self.gina + '/package.json', true) );
86
403
 
87
- try {
88
- utils.generator.createFileFromTemplateSync(source, target);
89
- setTimeout(function () {
90
- callback(false)
91
- }, 1000)
92
- } catch (err) {
93
- callback(err)
404
+ var name = require( _(self.gina + '/package.json', true) ).name;
405
+ console.info('Package name: '+ name );
406
+ console.info('Creating framework command line:');
407
+ var appPath = process.cwd();
408
+ // _( self.gina.substring(0, (self.gina.length - ("node_modules/" + name + '/').length)) );
409
+
410
+
411
+ console.debug('App path: '+ appPath);
412
+ var source = _(self.versionPath + '/core/template/command/gina.tpl', true);
413
+ console.debug('Source: '+ source);
414
+ var target = _(appPath +'/'+ name, true);
415
+ console.debug('Target: '+ target);
416
+
417
+ if ( win32Name && typeof(win32Name) != 'undefined') {
418
+ target = _(appPath +'/'+ win32Name)
419
+ }
420
+ //Will override.
421
+ console.info('linking to binaries dir: '+ source +' -> '+ target);
422
+ if ( callback && typeof(callback) != 'undefined') {
423
+ if ( !self.isGlobalInstall ) { // local install only
424
+ lib.generator.createFileFromTemplate(source, target, function onGinaFileCreated(err) {
425
+ return callback(err)
426
+ })
427
+ } else {
428
+ // configureGina();
429
+ return callback(false)
94
430
  }
95
431
  } else {
96
- utils.generator.createFileFromTemplateSync(source, target)
432
+ if ( !self.isGlobalInstall ) {
433
+ lib.generator.createFileFromTemplate(source, target)
434
+ }
97
435
  }
98
436
  }
99
437
 
100
- var createGinaFileForPlatform = function() {
101
- console.log('creating platform file');
102
- //console.log('[ debug ] about to open ' + _(self.path + '/package.json'));
103
- var name = require( _(self.path + '/package.json') ).name;
438
+ self.createGinaFileForPlatform = async function(done) {
439
+ console.info('Creating platform file');
440
+ var name = require( _(self.versionPath + '/package.json') ).name;
104
441
 
105
442
  var filename = ( (self.isWin32) ? '.' : '' ) + name;
106
443
 
107
444
  var keepGoing = function(filename) {
108
445
 
109
-
110
-
111
- createGinaFile(filename, function onGinaFileCreated(err){
112
-
446
+ createGinaFile(filename, function onFileCreated(err) {
113
447
  if (err) {
114
- throw err;
115
- return false
448
+ return done(err)
116
449
  }
450
+
117
451
  // this is done to allow multiple calls of post_install.js
118
- var filename = _(self.path + '/SUCCESS');
452
+ var filename = _(self.versionPath + '/SUCCESS');
119
453
  var installed = fs.existsSync( filename );
120
- if (!installed /**&& /node_modules\/gina/.test( new _(process.cwd()).toUnixStyle() ) */ ) {
121
- fs.writeFileSync(filename, true )
454
+ if (installed) {
455
+ fs.unlinkSync( filename );
122
456
  }
123
457
 
124
- // old NPM : < 3 & compatible 3+
125
- console.log('> now installing dependencies, please wait ...\n\r');
126
- var dependencies = require( _(self.path + '/package.json') ).ginaDependencies;
127
-
128
- // starting from NodeJS v5.x, it is done automatically
129
- npmInstall(dependencies);
458
+ // if ( /node_modules\/gina/.test( new _(process.cwd()).toUnixStyle() ) ) {
459
+ // var msg = "Gina's command line tool has been installed.";
460
+ // console.info(msg);
461
+ // process.exit(0)
462
+ // }
463
+
464
+ console.debug('Writting '+ filename);
465
+ fs.writeFileSync(filename, 'true' );
466
+
467
+ // do something that can be called after the first time installation
468
+
469
+
470
+ // Check if npm install has been done
471
+ if ( !hasNodeModulesSync() ) {
472
+ return npmInstall(done)
473
+ } else {
474
+ var target = new _(self.versionPath + '/node_modules');
475
+ console.debug('replacing: ', target.toString() );
476
+ return target
477
+ .rm( function onRemove(err) {
478
+ if (err) {
479
+ return done(err);
480
+ } else {
481
+ return npmInstall(done)
482
+ }
483
+ })
484
+ }
130
485
 
131
- });
486
+ })
132
487
  }
133
488
 
134
489
  if (self.isWin32) {
135
- var appPath = _( self.path.substring(0, (self.path.length - ("node_modules/" + name + '/').length)) );
136
- var source = _(self.path + '/core/template/command/gina.bat.tpl');
490
+ // var appPath = _( self.versionPath.substring(0, (self.versionPath.length - ("node_modules/" + name + '/').length)) );
491
+ var appPath = process.cwd()
492
+ var source = _(self.versionPath + '/core/template/command/gina.bat.tpl');
137
493
  var target = _(appPath +'/'+ name + '.bat');
138
494
  if ( fs.existsSync(target) ) {
139
495
  fs.unlinkSync(target);
140
496
  // have to wait for windows to complete this
141
- setTimeout( function(){
142
- utils.generator.createFileFromTemplateSync(source, target);
143
- keepGoing(filename)
497
+ setTimeout( async function(){
498
+ lib.generator.createFileFromTemplate(source, target);
499
+ await keepGoing(filename)
144
500
  }, 1000)
145
501
  } else {
146
- utils.generator.createFileFromTemplateSync(source, target);
147
- keepGoing(filename)
502
+ lib.generator.createFileFromTemplate(source, target);
503
+ await keepGoing(filename)
148
504
  }
505
+
149
506
  } else {
150
- filename += '.sh';// patch for latest npm release
151
- keepGoing(filename)
507
+ await keepGoing(filename)
152
508
  }
153
509
  }
154
510
 
155
511
 
156
- var npmInstall = function(modules) {
157
- if ( modules.count() == 0 ) {
158
- console.log("\nGina's command line tool has been installed !\n");
159
- process.exit(0)
160
- }
512
+ var hasNodeModulesSync = function() {
513
+ return fs.existsSync( _(self.versionPath + '/node_modules') )
514
+ }
515
+
516
+
517
+ var npmInstall = function(done) {
518
+
519
+ console.info('Now installing modules: please, wait ...');
520
+ console.info('Prefix ('+ self.isCustomPrefix +'): '+ self.prefix);
521
+ var initialDir = process.cwd();
522
+
161
523
 
162
524
  var cmd = ( isWin32() ) ? 'npm.cmd install' : 'npm install';
163
- var key = null;
164
- for (var m in modules) {
165
- key = m;
166
- if ( modules[m] != '') {
167
- cmd += ' '+ m +'@'+ modules[m];
168
- console.log('installing [ '+ m +'@'+ modules[m] +' ]');
169
- } else {
170
- cmd += ' '+ m + '@latest';
171
- console.log('installing [ '+ m + '@latest ]');
525
+
526
+ process.chdir( self.versionPath );
527
+
528
+ console.info('running: `'+ cmd +'` from '+ process.cwd() );
529
+ console.info('running using TMPDIR: '+ _(getTmpDir(), true) );
530
+ var oldConfigGlobal = process.env.npm_config_global;
531
+ process.env.npm_config_global = false;
532
+ execSync(cmd);
533
+ process.chdir(initialDir);
534
+ process.env.npm_config_global = oldConfigGlobal;
535
+
536
+ done()
537
+ }
538
+
539
+ self.cleanupIfNeeded = function(done) {
540
+
541
+ var frameworkPath = self.gina;
542
+ console.debug('Framework path is: ' + frameworkPath);
543
+
544
+ // Let's cleanup `colors` from `GINA_DIR`
545
+ if ( new _(frameworkPath +'/node_modules/colors', true).existsSync() ) {
546
+ var initialDir = process.cwd();
547
+ process.chdir(frameworkPath);
548
+ var oldConfigGlobal = process.env.npm_config_global;
549
+ process.env.npm_config_global=false;
550
+
551
+ // var cmd = self.prefix +'/bin/';
552
+ // cmd += ( isWin32() ) ? 'npm.cmd rm colors' : 'npm rm colors';
553
+
554
+ var cmd = ( isWin32() ) ? 'npm.cmd rm colors' : 'npm rm colors';
555
+
556
+ try {
557
+ execSync(cmd);
558
+ console.debug('Removed default `colors` module from `GINA_DIR`... This is normal ;)');
559
+ } catch (npmErr) {
560
+ process.chdir(initialDir);
561
+ return done(npmErr);
172
562
  }
173
563
 
174
- break
564
+ process.chdir(initialDir);
565
+ process.env.npm_config_global=oldConfigGlobal;
566
+ }
567
+
568
+ done()
569
+ }
570
+
571
+ self.checkUserExtensions = async function(done) {
572
+
573
+ var userDir = _(getUserHome() + '/.gina/user', true);
574
+ // var userDirObj = new _(userDir);
575
+ // if ( ! userDirObj.existsSync() ) {
576
+ // userDirObj.mkdirSync();
577
+ // }
578
+ // var extDir = _(userDir +'/extensions', true);
579
+ // var extDirObj = new _(extDir);
580
+ // if ( ! extDirObj.existsSync() ) {
581
+ // extDirObj.mkdirSync();
582
+ // }
583
+
584
+ // // logger
585
+ // var extLogger = _(extDir +'/logger', true);
586
+
587
+ // reading default extensions
588
+ var ext = _(self.gina +'/resources/home/user/extensions', true);
589
+ var folders = [];
590
+ try {
591
+ console.debug('Reading : '+ ext + ' - isDirectory ? '+ fs.lstatSync( ext ).isDirectory() );
592
+ folders = fs.readdirSync(ext);
593
+
594
+ } catch(readErr) {
595
+ throw readErr
175
596
  }
176
597
 
177
- delete modules[key];
598
+ for (let i = 0, len = folders.length; i < len; i++) {
599
+ let dir = folders[i];
600
+ // skip junk
601
+ if ( /^\./i.test(dir) || /(\s+copy|\.old)$/i.test(dir) ) {
602
+ continue;
603
+ }
604
+
605
+ // skip symlinks
606
+ try {
607
+ console.debug('Checking: '+ _(ext +'/'+ dir, true) + ' - isSymbolicLink ? '+ fs.lstatSync( _(ext +'/'+ dir, true) ).isSymbolicLink() );
608
+ if ( fs.lstatSync( _(ext +'/'+ dir, true) ).isSymbolicLink() ) {
609
+ continue;
610
+ }
611
+ } catch (e) {
612
+ continue;
613
+ }
614
+
615
+ let userExtPath = _(userDir +'/extensions/'+ dir, true);
616
+ let userExtPathObj = new _(userExtPath)
617
+ if ( !userExtPathObj.existsSync() ) {
618
+ userExtPathObj.mkdirSync()
619
+ }
620
+
621
+ let files = []
622
+ , extDir = _(ext +'/'+ dir, true)
623
+ ;
624
+ try {
625
+
626
+ console.debug('Reading extDir: '+ extDir + ' - isDirectory ? '+ fs.lstatSync( extDir ).isDirectory() );
627
+ if ( !fs.lstatSync( extDir ).isDirectory() ) {
628
+ continue;
629
+ }
178
630
 
179
- if ( !fs.existsSync(self.path) ) {
180
- fs.mkdirSync(self.path)
631
+
632
+ files = fs.readdirSync( extDir );
633
+
634
+ } catch(fileReadErr) {}
635
+
636
+ console.debug("What about files ? " + files);
637
+
638
+ for (let n = 0, nLen = files.length; n < nLen; n++) {
639
+ let file = files[n];
640
+ console.debug('file --> ', file);
641
+ let extentionPath = _(extDir +'/'+ file, true);
642
+ let extensionPathObj = new _(extentionPath);
643
+ // redefined
644
+ let userExtPathObj = new _(userExtPath + '/'+ file, true);
645
+ if ( !userExtPathObj.existsSync() ) {
646
+ let f = function(destination, cb) {// jshint ignore:line
647
+ extensionPathObj.cp(destination, cb);
648
+ };
649
+ let err = false;
650
+ await promisify(f)( _(userExtPath + '/'+ file, true) )
651
+ .catch( function onCopyError(_err) {// jshint ignore:line
652
+ err = _err;
653
+ })
654
+ .then( function onCopy(_destination) {// jshint ignore:line
655
+ console.info('Copy '+ extentionPath +' to '+ _destination +' done !');
656
+ });
657
+
658
+ if (err) {
659
+ return done(err);
660
+ }
661
+ }
662
+ }
181
663
  }
182
664
 
183
- if ( !fs.existsSync(self.path +'/node_modules') ) {
184
- fs.mkdirSync(self.path +'/node_modules')
665
+
666
+ done()
667
+ }
668
+
669
+ /**
670
+ * Updated user's profile
671
+ * Will edit ~/.profile, check and add if needed path to Gina binary
672
+ *
673
+ */
674
+ self.updateUserProfile = async function(done) {
675
+
676
+ if ( !self.isGlobalInstall || isWin32() ) {
677
+ return done()
678
+ }
679
+ if (!self.isCustomPrefix || self.prefix == self.defaultPrefix) {
680
+ return done()
185
681
  }
186
682
 
187
- if ( !fs.existsSync(self.path +'/tmp') ) {
188
- fs.mkdirSync(self.path +'/tmp')
683
+ var profilePath = getUserHome() + '/.profile';
684
+ var profilePathObj = new _(profilePath);
685
+ if ( !profilePathObj.existsSync() ) {
686
+ cmd = 'touch '+ profilePath;
687
+ await promisify(run)(cmd, { cwd: _(self.versionPath), tmp: _(getTmpDir(), true), outToProcessSTD: true })
688
+ .catch(function onError(err){
689
+ if (err) {
690
+ console.warn('try to run: sudo ' + cmd);
691
+ return done(err);
692
+ }
693
+ });
189
694
  }
190
695
 
191
- //console.debug('cwd: ' + _(self.path));
192
- //console.debug('tmp: ' + _(self.root +'/tmp'));
696
+ var inFile = null;
697
+ var patt = _(self.prefix.replace( new RegExp( '^' +getUserHome() ), '(.*)[$]HOME') + '/bin', true);
698
+ try {
699
+ inFile = execSync("cat ~/.profile | grep -Eo '" + patt +"'").toString();
700
+ } catch (err) {
701
+ // nothing to do
702
+ }
193
703
 
194
- run(cmd, { cwd: _(self.path), tmp: _(self.root +'/tmp') })
195
- .onData(function(data){
196
- //console.info(data)
197
- })
198
- .onComplete( function done(err, data){
199
- if (err && err != 'false') {
200
- console.error(err);
201
- //console.debug('\nCommand was: \n'+ cmd)
202
- } //else {
203
- //console.info(data);
204
- //end()
205
- //}
206
-
207
- npmInstall(modules)
208
- })
704
+ if (!inFile) {
705
+ patt = patt.replace('(.*)[$]', '$');
706
+ inFile = '\nif [ -d "'+ patt +'" ]; then';
707
+ inFile += '\n PATH="'+ patt +':$PATH"';
708
+ inFile += '\nfi\n';
709
+ try {
710
+ fs.appendFileSync( getUserHome()+'/.profile', inFile );
711
+ } catch (err) {
712
+ return done(err);
713
+ }
714
+ inFile = null;
715
+
716
+ // we need to source/update ~/.profile
717
+ try {
718
+ execSync("source "+ profilePath);
719
+ } catch (err) {
720
+ return done(err)
721
+ }
722
+ }
723
+
724
+ done()
725
+ }
726
+
727
+ var restoreSymlinks = function() {
728
+ var archivesPath = _(getUserHome() + '/.gina/archives/framework', true);
729
+ var frameworkPath = _(self.gina +'/framework', true);
730
+
731
+ if ( !new _(archivesPath).existsSync() ) {
732
+ return;
733
+ }
734
+ // get current framework version
735
+ var package = require(pack);
736
+ var currentVersion = 'v'+ package.version.replace(/^v/, '');
737
+
738
+ // cleanup first
739
+ var versionsFolders = fs.readdirSync(frameworkPath);
740
+ for (let i = 0, len = versionsFolders.length; i < len; i++) {
741
+ let dir = versionsFolders[i];
742
+ // skip junk
743
+ if ( /^\./i.test(dir) || /(\s+copy|\.old)$/i.test(dir) ) {
744
+ continue;
745
+ }
746
+
747
+ // intercept & remove existing symlinks or old versions dir
748
+ try {
749
+ if ( fs.lstatSync( _(frameworkPath +'/'+ dir, true) ).isSymbolicLink() ) {
750
+ console.debug('Removing Symlink: '+ _(frameworkPath +'/'+ dir, true) );
751
+ // new _(frameworkPath +'/'+ dir, true).rmSync();
752
+ fs.unlinkSync(_(frameworkPath +'/'+ dir, true));
753
+ continue;
754
+ }
755
+
756
+ if (
757
+ dir != currentVersion
758
+ && fs.lstatSync( _(frameworkPath +'/'+ dir, true) ).isDirectory()
759
+ ) {
760
+ console.debug('Removing old version: '+ _(frameworkPath +'/'+ dir, true));
761
+ new _(frameworkPath +'/'+ dir, true).rmSync()
762
+ }
763
+ } catch (e) {
764
+ continue;
765
+ }
766
+ }
767
+
768
+ // restoring symlinks from archives
769
+ versionsFolders = fs.readdirSync(archivesPath);
770
+ for (let i = 0, len = versionsFolders.length; i < len; i++) {
771
+ let dir = versionsFolders[i];
772
+ // skip junk
773
+ if ( /^\./i.test(dir) || /(\s+copy|\.old)$/i.test(dir) ) {
774
+ continue;
775
+ }
776
+
777
+ // skip selected - for dev team only
778
+ if ( new _(frameworkPath +'/'+ dir, true).existsSync() ) {
779
+ continue;
780
+ }
781
+
782
+ // creating symlinks
783
+ try {
784
+ console.debug( 'Creating symlink: '+ _(archivesPath +'/'+ dir, true) +' -> '+ _(frameworkPath +'/'+ dir, true));
785
+ new _(archivesPath +'/'+ dir, true).symlinkSync(_(frameworkPath +'/'+ dir, true) );
786
+ } catch (e) {
787
+ throw e
788
+ }
789
+ }
209
790
  }
210
791
 
211
- var end = function() {
792
+
793
+ self.end = function(done) {
794
+
795
+ restoreSymlinks();
796
+ // update package.json
797
+ // var pkgObj = require(pack);
798
+ // pkgObj.config.prefix = self.prefix;
799
+ // pkgObj.config.globalMode = self.isGlobalInstall;
800
+ // new _(pack, true).rmSync();
801
+ // lib.generator.createFileFromDataSync(JSON.stringify(pkgObj, null, 2), pack);
802
+
803
+ // configuring Gina
804
+ var ginaBinanry = _(self.gina + '/bin/gina', true);
805
+ execSync(ginaBinanry + ' framework:set --global-mode='+ self.isGlobalInstall);
806
+ execSync(ginaBinanry + ' framework:set --prefix='+ self.prefix);
807
+
212
808
  // Update middleware file
213
- var filename = _(self.path) + '/MIDDLEWARE';
214
- var msg = "Gina's command line tool has been installed.\n\r";
809
+ var filename = _(self.versionPath) + '/MIDDLEWARE';
810
+ var msg = "Gina's command line tool has been installed.";
215
811
 
216
- var deps = require(_(self.path) + '/package.json').dependecies;
812
+ var deps = require(_(self.versionPath) + '/package.json').dependecies;
217
813
 
814
+ var version = require( _(self.gina + '/package.json') ).version;
815
+ var middleware = 'isaac@'+version; // by default
218
816
 
219
- for (var d in deps) {
817
+ for (let d in deps) {
220
818
  if (d === 'express' && deps[d] != '') {
221
- var middleware = d +'@'+ deps[d]
819
+ middleware = d +'@'+ deps[d]
222
820
  }
223
821
  }
224
822
 
225
- var expressPackage = _(self.path + '/node_modules/express/package.json');
823
+ var expressPackage = _(self.versionPath + '/node_modules/express/package.json');
226
824
  if ( typeof(middleware) == 'undefined' && fs.existsSync(expressPackage) ) {
227
- var middleware = require(expressPackage).version;
825
+ middleware = require(expressPackage).version;
228
826
  middleware = 'express@' + middleware;
229
- } else if (typeof(middleware) == 'undefined') {
230
- throw new Error('No middleware found !!');
231
- process.exit(0)
827
+ }
828
+ else if (typeof(middleware) == 'undefined') {
829
+ return done( new Error('No middleware found !!') );
232
830
  }
233
831
 
234
832
  if ( fs.existsSync(filename) ) { // update
235
833
  var def = fs.readFileSync(filename).toString;
236
834
  // TODO - uninstall old if installed ??
237
835
  if (def !== middleware) {
238
-
239
- try {
240
-
241
- fs.writeFileSync(filename, middleware);
242
- console.log(msg)
243
- } catch (err) {
244
- throw new Error(err.stack||err.message||err);
245
- process.exit(0)
246
- }
247
-
248
- // fs.writeFile(filename, middleware, function onWrote(err){
249
- // if (err) {
250
- // throw new Error(err.stack||err.message||err);
251
- // process.exit(1)
252
- // } else {
253
- // console.log(msg)
254
- // }
255
- // })
836
+ fs.writeFile(filename, middleware, function onWrote(err){
837
+ if (err) {
838
+ return done(err)
839
+ }
840
+ console.debug('Updated: def !== middleware case');
841
+ // execSync(self.prefix +'/bin/gina framework:set --prefix='+ self.prefix);
842
+ console.info(msg);
843
+ done()
844
+ })
256
845
  } // else, nothing to do
257
846
  } else { // create
847
+ fs.writeFile(filename, middleware, function onWrote(err){
848
+ if (err) {
849
+ return done(err)
850
+ }
851
+ console.info('File created case');
258
852
 
259
- try {
260
-
261
- fs.writeFileSync(filename, middleware);
262
- console.log(msg)
263
- } catch (err) {
264
- throw new Error(err.stack||err.message||err);
265
- process.exit(0)
266
- }
267
-
268
- // fs.writeFile(filename, middleware, function onWrote(err){
269
- // if (err) {
270
- // throw new Error(err.stack||err.message||err);
271
- // process.exit(1)
272
- // } else {
273
- // console.log(msg)
274
- // }
275
- // })
853
+ console.info(msg);
854
+ done()
855
+ })
276
856
  }
277
857
  }
278
858
 
279
- //var createGinaHome = function() { };
280
-
281
859
 
282
860
  init()
283
- };
861
+ }
284
862
  new PostInstall()