gina 0.1.1-alpha.23 → 0.1.1-alpha.230

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 (368) hide show
  1. package/AUTHORS +2 -1
  2. package/LICENSE +1 -1
  3. package/README-4Contributors.md +30 -0
  4. package/README.md +223 -33
  5. package/bin/cli +184 -68
  6. package/bin/cli-debug +49 -18
  7. package/bin/cmd +40 -18
  8. package/bin/gina +48 -37
  9. package/framework/{v0.1.1-alpha.23/lib/inherits → v0.1.1-alpha.230}/LICENSE +1 -1
  10. package/framework/v0.1.1-alpha.230/VERSION +1 -0
  11. package/framework/{v0.1.1-alpha.23/core/asset/js/plugin/readme.md → v0.1.1-alpha.230/core/asset/plugin/README.md} +31 -9
  12. package/framework/v0.1.1-alpha.230/core/asset/plugin/dist/vendor/gina/css/gina.min.css +1 -0
  13. package/framework/v0.1.1-alpha.230/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +1 -0
  14. package/framework/v0.1.1-alpha.230/core/asset/plugin/dist/vendor/gina/html/toolbar.html +251 -0
  15. package/framework/{v0.1.1-alpha.23/core/asset/js/plugin/dist → v0.1.1-alpha.230/core/asset/plugin/dist/vendor/gina/js}/gina.js +4364 -3175
  16. package/framework/v0.1.1-alpha.230/core/asset/plugin/dist/vendor/gina/js/gina.min.js +764 -0
  17. package/framework/v0.1.1-alpha.230/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +8 -0
  18. package/framework/v0.1.1-alpha.230/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +5 -0
  19. package/framework/v0.1.1-alpha.230/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +8 -0
  20. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/config.js +178 -80
  21. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/connectors/couchbase/index.js +373 -259
  22. package/framework/v0.1.1-alpha.230/core/connectors/couchbase/lib/connector.js +22 -0
  23. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/connectors/couchbase/lib/connector.v2.js +51 -51
  24. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/connectors/couchbase/lib/connector.v3.js +51 -51
  25. package/framework/v0.1.1-alpha.230/core/connectors/couchbase/lib/connector.v4.js +384 -0
  26. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/connectors/couchbase/lib/n1ql.js +3 -2
  27. package/framework/v0.1.1-alpha.230/core/connectors/couchbase/lib/session-store.js +22 -0
  28. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/connectors/couchbase/lib/session-store.v3.js +12 -12
  29. package/framework/v0.1.1-alpha.230/core/connectors/couchbase/lib/session-store.v4.js +361 -0
  30. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/controller/controller.js +923 -773
  31. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/dev/index.js +1 -1
  32. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/dev/lib/class.js +1 -1
  33. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/dev/lib/factory.js +2 -2
  34. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/gna.js +13 -9
  35. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/locales/README.md +5 -0
  36. package/framework/v0.1.1-alpha.230/core/locales/dist/region/en.json +5727 -0
  37. package/framework/v0.1.1-alpha.230/core/locales/dist/region/fr.json +11452 -0
  38. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/locales/index.js +2 -2
  39. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/locales/src/make.js +39 -41
  40. package/framework/v0.1.1-alpha.230/core/locales/src/resources/region.mapping.json +43 -0
  41. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/model/entity.js +87 -67
  42. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/model/index.js +16 -16
  43. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/model/template/entityFactory.js +1 -1
  44. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/model/template/index.js +17 -15
  45. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/index.js +1 -1
  46. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/lib/file/package.json +1 -1
  47. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/lib/intl/package.json +1 -1
  48. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/lib/intl/src/main.js +5 -5
  49. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/lib/storage/package.json +1 -1
  50. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/lib/storage/src/main.js +6 -5
  51. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/lib/validator/package.json +1 -1
  52. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/lib/validator/src/form-validator.js +403 -300
  53. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/lib/validator/src/main.js +1368 -1314
  54. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/router.js +99 -90
  55. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/server.isaac.js +203 -180
  56. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/server.js +439 -238
  57. package/framework/v0.1.1-alpha.230/core/template/boilerplate/bundle/config/settings.json +12 -0
  58. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/boilerplate/bundle/config/settings.server.json +4 -4
  59. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/boilerplate/bundle/config/templates.json +4 -4
  60. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/boilerplate/bundle/controllers/controller.content.js +1 -1
  61. package/framework/v0.1.1-alpha.230/core/template/boilerplate/bundle/controllers/setup.js +111 -0
  62. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/boilerplate/bundle/index.js +13 -1
  63. package/framework/v0.1.1-alpha.230/core/template/boilerplate/bundle_templates/html/content/homepage.html +8 -0
  64. package/framework/v0.1.1-alpha.230/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +11 -0
  65. package/framework/v0.1.1-alpha.230/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +8 -0
  66. package/framework/{v0.1.1-alpha.23/core/template/boilerplate/bundle_templates/html/layout → v0.1.1-alpha.230/core/template/boilerplate/bundle_templates/html/layouts}/main.html +10 -3
  67. package/framework/v0.1.1-alpha.230/core/template/command/gina.bat.tpl +8 -0
  68. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/command/gina.tpl +4 -4
  69. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/conf/env.json +11 -0
  70. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/conf/package.json +1 -1
  71. package/framework/v0.1.1-alpha.230/core/template/conf/statics.json +12 -0
  72. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/conf/templates.json +2 -2
  73. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/helpers/console.js +3 -3
  74. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/helpers/context.js +148 -7
  75. package/framework/v0.1.1-alpha.230/helpers/data/LICENSE +9 -0
  76. package/framework/v0.1.1-alpha.230/helpers/data/README.md +12 -0
  77. package/framework/v0.1.1-alpha.230/helpers/data/package.json +20 -0
  78. package/framework/v0.1.1-alpha.230/helpers/data/src/main.js +295 -0
  79. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/helpers/dateFormat.js +9 -7
  80. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/helpers/index.js +13 -8
  81. package/framework/v0.1.1-alpha.230/helpers/json/LICENSE +9 -0
  82. package/framework/v0.1.1-alpha.230/helpers/json/README.md +12 -0
  83. package/framework/{v0.1.1-alpha.23/helpers/plugins → v0.1.1-alpha.230/helpers/json}/package.json +2 -2
  84. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/helpers/json/src/main.js +28 -26
  85. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/helpers/path.js +176 -96
  86. package/framework/{v0.1.1-alpha.23/helpers/json → v0.1.1-alpha.230/helpers/plugins}/package.json +2 -2
  87. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/helpers/plugins/src/api-error.js +23 -23
  88. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/helpers/plugins/src/main.js +3 -3
  89. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/helpers/prototypes.js +46 -38
  90. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/helpers/task.js +21 -14
  91. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/helpers/text.js +2 -2
  92. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/archiver/package.json +1 -1
  93. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/archiver/src/dep/jszip.min.js +3 -3
  94. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/archiver/src/main.js +168 -168
  95. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/aliases.json +4 -1
  96. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/bundle/add.js +84 -27
  97. package/framework/v0.1.1-alpha.230/lib/cmd/bundle/arguments.json +7 -0
  98. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/bundle/help.txt +4 -2
  99. package/framework/v0.1.1-alpha.230/lib/cmd/bundle/list.js +176 -0
  100. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/bundle/remove.js +36 -27
  101. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/bundle/start.js +264 -46
  102. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/bundle/stop.js +93 -74
  103. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/env/add.js +44 -43
  104. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/env/list.js +23 -4
  105. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/env/remove.js +19 -19
  106. package/framework/{v0.1.1-alpha.23/lib/cmd/scope → v0.1.1-alpha.230/lib/cmd/env}/use.js +21 -1
  107. package/framework/v0.1.1-alpha.230/lib/cmd/framework/build.js +88 -0
  108. package/framework/v0.1.1-alpha.230/lib/cmd/framework/init.js +798 -0
  109. package/framework/v0.1.1-alpha.230/lib/cmd/framework/link-node-modules.js +116 -0
  110. package/framework/v0.1.1-alpha.230/lib/cmd/framework/link.js +114 -0
  111. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/framework/open.js +22 -1
  112. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/framework/restart.js +61 -26
  113. package/framework/v0.1.1-alpha.230/lib/cmd/framework/set.js +293 -0
  114. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/framework/start.js +46 -20
  115. package/framework/v0.1.1-alpha.230/lib/cmd/framework/status.js +141 -0
  116. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/framework/stop.js +47 -28
  117. package/framework/v0.1.1-alpha.230/lib/cmd/framework/tail.js +302 -0
  118. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/framework/version.js +15 -3
  119. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/helper.js +131 -18
  120. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/index.js +23 -23
  121. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/port/inc/scan.js +32 -16
  122. package/framework/v0.1.1-alpha.230/lib/cmd/port/list.js +462 -0
  123. package/framework/v0.1.1-alpha.230/lib/cmd/port/reset.js +429 -0
  124. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/project/add.js +147 -122
  125. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/project/arguments.json +2 -1
  126. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/project/build.js +28 -28
  127. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/project/list.js +19 -2
  128. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/project/remove.js +19 -17
  129. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/project/rename.js +11 -11
  130. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/protocol/set.js +256 -209
  131. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/scope/list.js +27 -8
  132. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/scope/remove.js +19 -19
  133. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/view/add.js +35 -10
  134. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/collection/package.json +1 -1
  135. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/collection/src/main.js +243 -242
  136. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/config.js +31 -30
  137. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cron/package.json +1 -1
  138. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cron/src/main.js +10 -9
  139. package/framework/v0.1.1-alpha.230/lib/domain/LICENSE +9 -0
  140. package/framework/v0.1.1-alpha.230/lib/domain/README.md +46 -0
  141. package/framework/v0.1.1-alpha.230/lib/domain/dist/public_suffix_list.dat +14186 -0
  142. package/framework/v0.1.1-alpha.230/lib/domain/package.json +20 -0
  143. package/framework/v0.1.1-alpha.230/lib/domain/src/main.js +442 -0
  144. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/generator/index.js +5 -5
  145. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/index.js +3 -2
  146. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230/lib/inherits}/LICENSE +1 -1
  147. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/inherits/README.md +2 -2
  148. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/inherits/package.json +3 -4
  149. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/inherits/src/main.js +3 -3
  150. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/logger/package.json +2 -2
  151. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/logger/src/containers/default/index.js +13 -2
  152. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/logger/src/containers/file/index.js +109 -14
  153. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/logger/src/containers/mq/index.js +12 -3
  154. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/logger/src/containers/mq/listener.js +29 -21
  155. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/logger/src/containers/mq/speaker.js +32 -3
  156. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/logger/src/helper.js +21 -1
  157. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/logger/src/main.js +36 -9
  158. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/math/index.js +9 -9
  159. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/merge/README.md +2 -2
  160. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/merge/package.json +1 -1
  161. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/merge/src/main.js +118 -91
  162. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/model.js +10 -10
  163. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/proc.js +87 -49
  164. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/routing/package.json +1 -1
  165. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/routing/src/main.js +313 -285
  166. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/session-store.js +6 -6
  167. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/shell.js +3 -3
  168. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/swig-filters/package.json +1 -1
  169. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/swig-filters/src/main.js +140 -119
  170. package/framework/v0.1.1-alpha.230/lib/url/README.md +0 -0
  171. package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/validator.js +2 -2
  172. package/framework/v0.1.1-alpha.230/package.json +14 -0
  173. package/package.json +33 -24
  174. package/resources/home/main.json +53 -4
  175. package/resources/home/settings.json +9 -0
  176. package/resources/package.json.template +29 -18
  177. package/script/lib.js +0 -0
  178. package/script/post_install.js +492 -141
  179. package/script/pre_install.js +496 -77
  180. package/services/.gna/67fdf1b224a2ed5597e63d4b64283834468e05e3.txt +0 -0
  181. package/services/.gna/arch +1 -0
  182. package/services/.gna/locals.json +14 -0
  183. package/services/.gna/platform +1 -0
  184. package/services/configure +6 -0
  185. package/services/env.json +18 -0
  186. package/services/manifest.json +30 -0
  187. package/services/package.json +11 -0
  188. package/services/src/proxy/config/app.json +6 -0
  189. package/services/src/proxy/config/routing.json +11 -0
  190. package/services/src/proxy/config/settings.json +9 -0
  191. package/services/src/proxy/config/settings.server.json +31 -0
  192. package/services/src/proxy/config/statics.json +3 -0
  193. package/services/src/proxy/controllers/controller.content.js +58 -0
  194. package/services/src/proxy/controllers/controller.js +30 -0
  195. package/{framework/v0.1.1-alpha.23/core/template/boilerplate/bundle → services/src/proxy}/controllers/setup.js +14 -14
  196. package/services/src/proxy/index.js +31 -0
  197. package/services/src/proxy/lib/domain/README.md +48 -0
  198. package/services/src/proxy/lib/domain/src/config/public_suffix_list.dat +14186 -0
  199. package/services/src/toolbar/config/app.json +6 -0
  200. package/services/src/toolbar/config/routing.json +11 -0
  201. package/{framework/v0.1.1-alpha.23/core/template/boilerplate/bundle → services/src/toolbar}/config/settings.json +0 -0
  202. package/services/src/toolbar/config/settings.server.json +30 -0
  203. package/services/src/toolbar/controllers/controller.content.js +39 -0
  204. package/services/src/toolbar/controllers/controller.js +30 -0
  205. package/services/src/toolbar/controllers/setup.js +111 -0
  206. package/services/src/toolbar/index.js +43 -0
  207. package/utils/helper.js +236 -185
  208. package/utils/prototypes.js +9 -9
  209. package/utils/prototypes.json_clone.js +70 -37
  210. package/doc/framework/cli/doc.json +0 -9
  211. package/doc/framework/index.md +0 -60
  212. package/framework/v0.1.1-alpha.23/VERSION +0 -1
  213. package/framework/v0.1.1-alpha.23/core/asset/js/plugin/dist/gina.js.map +0 -56
  214. package/framework/v0.1.1-alpha.23/core/asset/js/plugin/dist/gina.min.css +0 -1
  215. package/framework/v0.1.1-alpha.23/core/asset/js/plugin/dist/gina.min.css.map +0 -1
  216. package/framework/v0.1.1-alpha.23/core/asset/js/plugin/dist/gina.min.js +0 -736
  217. package/framework/v0.1.1-alpha.23/core/asset/js/plugin/dist/gina.min.js.map +0 -56
  218. package/framework/v0.1.1-alpha.23/core/asset/js/plugin/dist/gina.onload.min.js +0 -5
  219. package/framework/v0.1.1-alpha.23/core/asset/js/plugin/dist/gina.onload.min.js.map +0 -8
  220. package/framework/v0.1.1-alpha.23/core/connectors/couchbase/lib/connector.js +0 -20
  221. package/framework/v0.1.1-alpha.23/core/connectors/couchbase/lib/session-store.js +0 -21
  222. package/framework/v0.1.1-alpha.23/core/locales/dist/region/en.json +0 -9492
  223. package/framework/v0.1.1-alpha.23/core/locales/dist/region/fr.json +0 -9492
  224. package/framework/v0.1.1-alpha.23/core/locales/src/resources/region.mapping.json +0 -28
  225. package/framework/v0.1.1-alpha.23/core/template/boilerplate/bundle_templates/html/homepage.html +0 -4
  226. package/framework/v0.1.1-alpha.23/core/template/conf/statics.json +0 -10
  227. package/framework/v0.1.1-alpha.23/lib/cmd/bundle/arguments.json +0 -4
  228. package/framework/v0.1.1-alpha.23/lib/cmd/bundle/list.js +0 -129
  229. package/framework/v0.1.1-alpha.23/lib/cmd/framework/init.js +0 -514
  230. package/framework/v0.1.1-alpha.23/lib/cmd/framework/set.js +0 -161
  231. package/framework/v0.1.1-alpha.23/lib/cmd/framework/status.js +0 -72
  232. package/framework/v0.1.1-alpha.23/lib/cmd/framework/tail.js +0 -183
  233. package/framework/v0.1.1-alpha.23/lib/cmd/port/list.js +0 -176
  234. package/framework/v0.1.1-alpha.23/package.json +0 -14
  235. package/script/prepare_version.js +0 -429
  236. /package/{framework/v0.1.1-alpha.23/core/template/command/gina.bat.tpl → bin/gina.bat} +0 -0
  237. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/AUTHORS +0 -0
  238. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/asset/html/nolayout.html +0 -0
  239. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/asset/html/static.html +0 -0
  240. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/asset/img/android-chrome-192x192.png +0 -0
  241. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/asset/img/android-chrome-512x512.png +0 -0
  242. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/asset/img/apple-touch-icon.png +0 -0
  243. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/asset/img/favicon-16x16.png +0 -0
  244. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/asset/img/favicon-32x32.png +0 -0
  245. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/asset/img/favicon.ico +0 -0
  246. /package/framework/{v0.1.1-alpha.23/core/asset/js → v0.1.1-alpha.230/core/asset}/plugin/uuid.json +0 -0
  247. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
  248. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/controller/controller.framework.js +0 -0
  249. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/controller/index.js +0 -0
  250. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/deps/busboy/.travis.yml +0 -0
  251. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/deps/busboy/LICENSE +0 -0
  252. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/deps/busboy/README.md +0 -0
  253. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/deps/busboy/deps/encoding/encoding-indexes.js +0 -0
  254. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/deps/busboy/deps/encoding/encoding.js +0 -0
  255. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/deps/busboy/lib/main.js +0 -0
  256. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/deps/busboy/lib/types/multipart.js +0 -0
  257. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/deps/busboy/lib/types/urlencoded.js +0 -0
  258. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/deps/busboy/lib/utils.js +0 -0
  259. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/deps/busboy/package.json +0 -0
  260. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/deps/swig-client/swig-2.0.0.min.js +0 -0
  261. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/dev/lib/tools.js +0 -0
  262. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/locales/currency.json +0 -0
  263. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/locales/dist/language/en.json +0 -0
  264. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/locales/dist/language/fr.json +0 -0
  265. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/locales/src/resources/currency.csv +0 -0
  266. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/locales/src/resources/region.csv +0 -0
  267. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/mime.types +0 -0
  268. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/README.md +0 -0
  269. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/lib/file/README.md +0 -0
  270. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/lib/file/build.json +0 -0
  271. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/lib/intl/README.md +0 -0
  272. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/lib/intl/build.json +0 -0
  273. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/lib/storage/README.md +0 -0
  274. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/lib/storage/build.json +0 -0
  275. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/lib/validator/README.md +0 -0
  276. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/plugins/lib/validator/build.json +0 -0
  277. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/server.express.js +0 -0
  278. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/status.codes +0 -0
  279. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/boilerplate/bundle/config/app.json +0 -0
  280. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/boilerplate/bundle/config/routing.json +0 -0
  281. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  282. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  283. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  284. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  285. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  286. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  287. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/boilerplate/bundle_public/readme.md +0 -0
  288. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  289. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/conf/manifest.json +0 -0
  290. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/conf/settings.json +0 -0
  291. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/error/client/json/401.json +0 -0
  292. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/error/client/json/403.json +0 -0
  293. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/error/client/json/404.json +0 -0
  294. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/error/server/html/50x.html +0 -0
  295. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/error/server/json/500.json +0 -0
  296. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/error/server/json/503.json +0 -0
  297. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/core/template/extensions/logger/config.json +0 -0
  298. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/helpers/plugins/README.md +0 -0
  299. /package/framework/{v0.1.1-alpha.23/helpers/json → v0.1.1-alpha.230/lib/archiver}/README.md +0 -0
  300. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/archiver/build.json +0 -0
  301. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/bundle/copy.js +0 -0
  302. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/bundle/cp.js +0 -0
  303. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/bundle/help.js +0 -0
  304. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/bundle/rename.js +0 -0
  305. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/bundle/restart.js +0 -0
  306. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/bundle/rm.js +0 -0
  307. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/bundle/status.js +0 -0
  308. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/env/get.js +0 -0
  309. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/env/help.js +0 -0
  310. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/env/help.txt +0 -0
  311. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/env/link-dev.js +0 -0
  312. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/env/rm.js +0 -0
  313. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/env/set.js +0 -0
  314. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/env/unset.js +0 -0
  315. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/framework/dot.js +0 -0
  316. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/framework/get.js +0 -0
  317. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/framework/help.js +0 -0
  318. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/framework/help.txt +0 -0
  319. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/framework/msg.json +0 -0
  320. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/framework/update.js +0 -0
  321. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/gina-dev.1.md +0 -0
  322. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/gina-framework.1.md +0 -0
  323. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/gina.1.md +0 -0
  324. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/msg.json +0 -0
  325. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/port/help.js +0 -0
  326. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/port/help.txt +0 -0
  327. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/port/set.js +0 -0
  328. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/project/help.js +0 -0
  329. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/project/help.txt +0 -0
  330. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/project/import.js +0 -0
  331. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/project/move.js +0 -0
  332. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/project/restart.js +0 -0
  333. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/project/rm.js +0 -0
  334. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/project/start.js +0 -0
  335. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/project/status.js +0 -0
  336. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/project/stop.js +0 -0
  337. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/protocol/help.js +0 -0
  338. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/protocol/help.txt +0 -0
  339. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/protocol/list.js +0 -0
  340. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/scope/help.js +0 -0
  341. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/scope/help.txt +0 -0
  342. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/scope/link-local.js +0 -0
  343. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/scope/rm.js +0 -0
  344. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/scope/set.js +0 -0
  345. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cmd/scope/unset.js +0 -0
  346. /package/framework/{v0.1.1-alpha.23/lib/cmd/env → v0.1.1-alpha.230/lib/cmd/scope}/use.js +0 -0
  347. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/collection/README.md +0 -0
  348. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/collection/build.json +0 -0
  349. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/cron/README.md +0 -0
  350. /package/framework/{v0.1.1-alpha.23/lib/archiver/README.md → v0.1.1-alpha.230/lib/domain/exemples/backend.js} +0 -0
  351. /package/framework/{v0.1.1-alpha.23/lib/routing/README.md → v0.1.1-alpha.230/lib/domain/exemples/frontend.html} +0 -0
  352. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/inherits/example/inheriting_eventemitter.js +0 -0
  353. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/inherits/example/protected_inheritance.js +0 -0
  354. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/inherits/example/simple_inheritance.js +0 -0
  355. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/inherits/example/super_attribute_overridden_by_child_on_init.js +0 -0
  356. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/logger/README.md +0 -0
  357. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  358. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  359. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/merge/example/merge.js +0 -0
  360. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/merge/example/merge_2_literal objects.js +0 -0
  361. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/merge/example/merge_and_preserve_first.js +0 -0
  362. /package/framework/{v0.1.1-alpha.23/lib/swig-filters → v0.1.1-alpha.230/lib/routing}/README.md +0 -0
  363. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/routing/build.json +0 -0
  364. /package/framework/{v0.1.1-alpha.23/lib/url → v0.1.1-alpha.230/lib/swig-filters}/README.md +0 -0
  365. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/url/index.js +0 -0
  366. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/url/mocks.json +0 -0
  367. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/url/routing.json +0 -0
  368. /package/framework/{v0.1.1-alpha.23 → v0.1.1-alpha.230}/lib/url/test.js +0 -0
@@ -1,6 +1,8 @@
1
+ #!/usr/bin/env node
2
+
1
3
  /**
2
- * This file is part of the gina package.
3
- * Copyright (c) 2017 Rhinostone <contact@gina.io>
4
+ * This file is part of the gina pkg.
5
+ * Copyright (c) 2009-2023 Rhinostone <contact@gina.io>
4
6
  *
5
7
  * For the full copyright and license information, please view the LICENSE
6
8
  * file that was distributed with this source code.
@@ -15,10 +17,6 @@ var { execSync } = require('child_process');
15
17
  //var lib = require('./lib');
16
18
  // var console = lib.logger;
17
19
  var lib = null;
18
- var isWin32 = function() {
19
- return (process.platform === 'win32') ? true : false;
20
- };
21
-
22
20
  var helpers = null;
23
21
 
24
22
  /**
@@ -27,43 +25,183 @@ var helpers = null;
27
25
  * if you need to test, go to gina main folder
28
26
  * $ node --inspect-brk=5858 ./script/pre_install.js -g
29
27
  *
28
+ * NB.: At this stage, Gina is not yet installed and no lib or helper cannot be used here
29
+ * excepted if Gina has been previously installed
30
+ *
30
31
  * @constructor
31
32
  * */
32
33
  function PreInstall() {
33
- var self = {}, _this = this;
34
+ var self = {};
34
35
 
35
- var init = function() {
36
+ var configure = function() {
37
+
38
+ // TODO - handle windows case
39
+ if ( /^true$/i.test(isWin32()) ) {
40
+ throw new Error('Windows in not yet fully supported. Thank you for your patience');
41
+ }
36
42
 
37
- self.isGlobalInstall = false;
38
- self.prefix = execSync('npm config get prefix');
39
- self.isGinaInstall = false;
43
+ self.isWin32 = isWin32();
44
+ self.isGlobalInstall = ( typeof(process.env.npm_config_global) != 'undefined' && /^(true|false)$/i.test(process.env.npm_config_global) )
45
+ ? (/^true$/i.test(process.env.npm_config_global) ? true: false)
46
+ : false;
47
+ self.isResetNeeded = ( typeof(process.env.npm_config_reset) != 'undefined' && /^(true|false)$/i.test(process.env.npm_config_reset) )
48
+ ? (/^true$/i.test(process.env.npm_config_reset) ? true: false)
49
+ : false;
50
+ self.defaultPrefix = execSync('npm config get prefix').toString().replace(/\n$/g, '');
51
+
52
+
53
+ // `process.env.npm_config_prefix` is only retrieved on `npm install gina`
54
+ // and it should always be equal to `self.defaultPrefix`
55
+ self.prefix = process.env.npm_config_prefix || self.defaultPrefix;
56
+ self.isCustomPrefix = false;
57
+ self.isGinaInstalled = false;
58
+
59
+ self.isRootUser = false;
60
+ self.userInfo = os.userInfo();
61
+ // E.g.:
62
+ // {
63
+ // uid: 0,
64
+ // gid: 0,
65
+ // username: 'root',
66
+ // homedir: '/root',
67
+ // shell: '/bin/bash'
68
+ // }
69
+ var cmd = null;
70
+ if ( !isWin32() ) {
71
+ var uid = self.userInfo.uid;
72
+ var gid = self.userInfo.gid;
73
+
74
+ if ( /^(root|nobody)$/i.test(self.userInfo.username) ) {
75
+ if (/^(root)$/i.test(self.userInfo.username) ) {
76
+ self.isRootUser = true;
77
+ }
78
+ if (/nonexistent$/i.test(self.userInfo.homedir) || !self.userInfo.homedir ) {
79
+ self.userInfo.homedir = getUserHome()
80
+ }
81
+ console.warn('If you get errors, try to run: chown -R $(whoami) ~/.npm')
82
+ }
83
+ console.debug('Install user infos:\n'+ JSON.stringify(self.userInfo, null, 2));
84
+ }
85
+ console.debug('self.isRootUser => '+ self.isRootUser);
40
86
 
87
+ // Overriding thru passed arguments
41
88
  var args = process.argv, i = 0, len = args.length;
42
89
  for (; i < len; ++i) {
43
- if (args[i] == '-g' ) {
90
+ if ( /^(\-g|\-\-global)$/.test(args[i]) ) {
44
91
  self.isGlobalInstall = true;
45
- break;
92
+ continue;
93
+ }
94
+
95
+ if ( /^\-\-reset$/.test(args[i]) ) {
96
+ self.isResetNeeded = true;
97
+ continue;
98
+ }
99
+
100
+ if ( /^\-\-prefix\=/.test(args[i] ) ) {
101
+ self.isCustomPrefix = true;
102
+ self.prefix = args[i].split(/\=/)[1];
103
+ self.prefix = self.prefix.replace(/^\~/, getUserHome());
104
+ continue;
46
105
  }
47
106
  }
48
107
 
49
- if ( !self.isGlobalInstall ) { //global install
50
- self.root = process.cwd(); // project path
51
- self.tmpDir = os.tmpdir(); // default tmp path
52
- console.error('local installation is not supported for this version at the moment.');
53
- console.info('please use `npm install -g gina`');
54
- process.exit(1);
108
+ if (self.prefix != self.defaultPrefix) {
109
+ self.isCustomPrefix = true;
55
110
  }
56
111
 
112
+ // For local install
113
+ console.debug('self.isGlobalInstall => '+ self.isGlobalInstall);
114
+ if ( !self.isGlobalInstall ) {
115
+ console.warn('Local installation is not fully supported at the moment.');
116
+ 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');
117
+ // Just in case someone is trying to run pre_install from the `gina` module
118
+ console.info('process.env.INIT_CWD: ', process.env.INIT_CWD);
119
+ if (!/node\_modules(\\\\|\/)gina$/.test(process.env.INIT_CWD)) {
120
+ self.prefix = process.env.INIT_CWD;//process.cwd();
121
+ }
122
+ }
123
+
124
+ // checking permission
125
+ var hasPermissionsForBin = isWritableSync(self.prefix + ( isWin32() ? '\\' : '/' ) + 'bin');
126
+ var hasPermissionsForLib = isWritableSync(self.prefix + ( isWin32() ? '\\' : '/' ) + 'lib');
127
+ var hasPermissionsForVar = isWritableSync(self.prefix + ( isWin32() ? '\\' : '/' ) + 'var');
128
+ if ( !hasPermissionsForBin || !hasPermissionsForLib || !hasPermissionsForVar) {
129
+ if (!hasPermissionsForBin) {
130
+ console.warn('Path not accessible or missing: '+ self.prefix + ( isWin32() ? '\\' : '/' ) + 'bin')
131
+ }
132
+ if (!hasPermissionsForLib) {
133
+ console.warn('Path not accessible or missing: '+ self.prefix + ( isWin32() ? '\\' : '/' ) + 'lib')
134
+ }
135
+ if (!hasPermissionsForVar) {
136
+ console.warn('Path not accessible or missing: '+ self.prefix + ( isWin32() ? '\\' : '/' ) + 'var')
137
+ }
138
+
139
+ // console.warn('You do not have sufficient permissions. Switching to `--prefix='+ self.optionalPrefix +'`');
140
+ // process.env.npm_config_prefix = self.prefix = self.optionalPrefix;
141
+ }
142
+
143
+ var pkg = null, pkgObj = null, cmd = null;
144
+ try {
145
+ cmd = 'npm list gina --long --json --prefix='+ self.prefix;
146
+ if (self.isGlobalInstall) {
147
+ cmd += ' -g';
148
+ }
149
+ pkg = execSync(cmd).toString().replace(/\n$/g, '');
150
+ self.optionalPrefix = JSON.parse(pkg).dependencies.gina.config.optionalPrefix.replace(/^\~/, getUserHome());
151
+
152
+ pkgObj = JSON.parse(pkg);
153
+ self.optionalPrefix = pkgObj.dependencies.gina.config.optionalPrefix.replace(/^\~/, getUserHome());
154
+ } catch(err) {
155
+ // means that gina is not already installed
156
+ // throw err
157
+ }
158
+
159
+
160
+ if ( self.prefix != self.defaultPrefix ) {
161
+ self.isCustomPrefix = true;
162
+ }
163
+
164
+ self.gina = __dirname +'/..';
165
+ // tying to figure out if gina is already install the given prefix
166
+ // var hasFoundGina = execSync('npm list -g gina --long --json').toString().replace(/\n$/g, '');
167
+ var hasFoundGina = pkg;
168
+ try {
169
+ hasFoundGina = JSON.parse(hasFoundGina);
170
+ if ( hasFoundGina.dependencies && typeof(hasFoundGina.dependencies.gina) != 'undefined' ) {
171
+ self.isGinaInstalled = true;
172
+ self.versionPath = self.gina;
173
+ self.versionPath += (isWin32()) ? '\\framework\\' : '/framework/';
174
+ self.versionPath += 'v'+ hasFoundGina.dependencies.gina.version;
175
+
176
+ console.debug('Install path => '+ hasFoundGina.dependencies.gina.path);
177
+
178
+ // OK ... found installed gina but on a different prefix
179
+ // In this case, let's assume that it is not really installed
180
+ if ( !new RegExp('^'+ self.prefix).test(hasFoundGina.dependencies.gina.path) ) {
181
+ self.isGinaInstalled = false;
182
+ }
183
+ }
184
+ } catch (err) {}
185
+
186
+ console.debug('self.defaultPrefix => '+ self.defaultPrefix);
187
+ console.debug('self.optionalPrefix => '+ self.optionalPrefix );
188
+ console.debug('self.prefix => '+ self.prefix);
189
+ console.debug('self.isCustomPrefix => ', self.isCustomPrefix);
190
+ // only available when running the script with NPM
191
+ console.debug('process.env.npm_config_prefix => '+ process.env.npm_config_prefix);
192
+ }
193
+
194
+ var init = function() {
195
+
196
+ configure();
57
197
 
58
198
  begin(0);
59
- // TODO check old framework version to be archived
60
199
  }
61
200
 
62
201
  /**
63
202
  * Bebin - Will run checking tasks in order of declaration
64
203
  * */
65
204
  var begin = async function(i) {
66
- //console.debug('i is ', i);
67
205
  var n = 0, funct = null, functName = null;
68
206
  for (let t in self) {
69
207
  if ( typeof(self[t]) == 'function') {
@@ -81,49 +219,116 @@ function PreInstall() {
81
219
 
82
220
  // to handle sync vs async to allow execution in order of declaration
83
221
  if (funct) {
84
- 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
222
+ 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
85
223
  } else {
86
224
  process.exit(0);
87
225
  }
88
226
  }
89
227
 
228
+ // self.checkPermissions = function(done) {
229
+ // // E.g.:
230
+ // // {
231
+ // // uid: 0,
232
+ // // gid: 0,
233
+ // // username: 'root',
234
+ // // homedir: '/root',
235
+ // // shell: '/bin/bash'
236
+ // // }
237
+ // self.userInfo = os.userInfo();
238
+ // var cmd = null;
239
+ // if ( !isWin32() ) {
240
+ // var uid = self.userInfo.uid;
241
+ // var gid = self.userInfo.gid;
242
+
243
+ // if ( self.userInfo.username == 'root' ) {
244
+ // console.warn('User `root` detected, changing permissions for `~/.config`& `~/.npm` to avoid install exceptions');
245
+ // cmd = 'chown -R '+ uid +':'+ gid +' '+ self.userInfo.homedir +'/.config';
246
+ // execSync(cmd);
247
+ // cmd = 'chown -R nobody:'+ gid +' '+ self.userInfo.homedir +'/.npm';
248
+ // execSync(cmd);
249
+ // }
250
+ // }
251
+ // done();
252
+ // }
253
+
254
+
255
+
90
256
  self.checkRequirements = async function(done) {
91
- // TODO - handle windows case
92
- if ( /true/i.test(self.isWin32) ) {
93
- return done( new Error('Windows in not yet fully supported. Thank you for your patience'));
257
+
258
+ var ginaHome = getUserHome() + ( isWin32() ? '\\.gina' : '/.gina' );
259
+ if ( self.isResetNeeded && existsSync(ginaHome) ) {
260
+ console.debug('`.gina` reset requested ...');
261
+ if ( typeof(fs.rmSync) == 'function' ) {
262
+ fs.rmSync(ginaHome, { recursive: true, force: true });
263
+ } else {
264
+ helpers = require(self.gina+ '/utils/helper');
265
+ new _(ginaHome, true).rmSync()
266
+ }
94
267
  }
95
268
 
96
269
  // Let's temporarily install `colors` into `GINA_DIR` it will be removed by the `post_install.js` script
97
270
  var initialDir = process.cwd();
98
- var frameworkPath = __dirname +'/..';
99
- if ( !fs.existsSync(frameworkPath +'/node_modules/colors') ) {
100
- process.chdir(frameworkPath);
271
+
272
+ if ( !fs.existsSync(self.gina +'/node_modules/colors') ) {
273
+ process.chdir(self.gina);
274
+
275
+ var oldConfigGlobal = process.env.npm_config_global;
276
+ process.env.npm_config_global=false;
101
277
  var cmd = ( isWin32() ) ? 'npm.cmd install colors@1.4.0' : 'npm install colors@1.4.0';
102
278
  execSync(cmd);
279
+ process.env.npm_config_global=oldConfigGlobal;
280
+
103
281
  process.chdir(initialDir);
104
282
  }
105
283
 
106
- if ( !fs.existsSync(frameworkPath +'/node_modules/gina') ) {
107
- return done();
284
+
285
+
286
+ console.debug('framework path: ' + self.gina);
287
+ console.debug('framework version path: ' + self.versionPath);
288
+ console.debug('Is this a global install: '+ self.isGlobalInstall);
289
+
290
+ done();
291
+ }
292
+
293
+ self.checkRequiredFolders = function(done) {
294
+
295
+ var ginaHomeDir = getUserHome() + ((isWin32()) ? '\\.gina': '/.gina');
296
+ if (!existsSync(ginaHomeDir) ) {
297
+ fs.mkdirSync(ginaHomeDir);
298
+
299
+ var cmd = 'chown -R $(whoami) '+ ginaHomeDir;
300
+ console.debug('Running: '+ cmd);
301
+ execSync(cmd);
108
302
  }
109
- self.isGinaInstall = true;
110
303
 
111
- helpers = require(frameworkPath+ '/utils/helpers');
304
+ // check for `/usr/local/tmp` or `/tmp`
305
+ var tmpDir = getTmpDir(self.prefix);
306
+ console.info('`tmp` dir -> '+ tmpDir);
307
+ if ( !existsSync(tmpDir) ) {
308
+ fs.mkdirSync(tmpDir)
309
+ }
112
310
 
113
- lib = require('./lib');
114
- console = lib.logger;
115
311
 
116
- self.isWin32 = isWin32();//getEnvVar('GINA_IS_WIN32');
117
- self.path = getEnvVar('GINA_FRAMEWORK');
118
- self.gina = getEnvVar('GINA_DIR');
119
- self.root = self.gina; // by default
312
+ // check for `/usr/local/run`
313
+ var runDir = getRunDir(self.prefix);
314
+ console.info('`run` dir -> '+ runDir);
120
315
 
121
- console.debug('framework path: ' + self.gina);
122
- console.debug('framework version path: ' + self.path);
123
- console.debug('cwd path: ' + self.root );
124
- console.debug('this is a global install ...');
316
+ // check for `/usr/local/log`
317
+ var logDir = getLogDir(self.prefix);
318
+ console.info('`log` dir -> '+ logDir);
125
319
 
126
- done();
320
+ // var settingsBackupPath = tmpDir + ((isWin32()) ? '\\': '/') + 'gina-install-settings.json';
321
+ // console.info('tmp folder backup -> '+ settingsBackupPath);
322
+ // var data = JSON.stringify({
323
+ // prefix: self.prefix,
324
+ // rundir: runDir,
325
+ // logdir: logDir,
326
+ // tmpdir: tmpDir
327
+ // }, null, 4);
328
+ // fs.writeFileSync(settingsBackupPath, data);
329
+ // fs.chmodSync(settingsBackupPath, 0755);
330
+
331
+ done()
127
332
  }
128
333
 
129
334
 
@@ -146,7 +351,7 @@ function PreInstall() {
146
351
  // }
147
352
  // // from `/usr/local` -> `~/.npm-global`
148
353
  // var cmd = 'npm config set prefix '+ getUserHome() +'/.npm-global';
149
- // await promisify(run)(cmd, { cwd: _(self.path), tmp: _(self.root +'/tmp'), outToProcessSTD: true })
354
+ // await promisify(run)(cmd, { cwd: _(self.path), tmp: getTmpDir(self.prefix);, outToProcessSTD: true })
150
355
  // .catch(function onError(err){
151
356
  // if (err) {
152
357
  // console.warn('try to run: sudo ' + cmd);
@@ -158,7 +363,7 @@ function PreInstall() {
158
363
  // var profilePathObj = new _(profilePath);
159
364
  // if ( !profilePathObj.existsSync() ) {
160
365
  // cmd = 'touch '+ profilePath;
161
- // await promisify(run)(cmd, { cwd: _(self.path), tmp: _(self.root +'/tmp'), outToProcessSTD: true })
366
+ // await promisify(run)(cmd, { cwd: _(self.path), tmp: getTmpDir(self.prefix);, outToProcessSTD: true })
162
367
  // .catch(function onError(err){
163
368
  // if (err) {
164
369
  // console.warn('try to run: sudo ' + cmd);
@@ -199,29 +404,45 @@ function PreInstall() {
199
404
 
200
405
  self.checkIfGinaIsAlreadyInstalled = async function(done) {
201
406
 
202
- console.debug('Checking if Gina is already installed');
203
- if (!self.isGinaInstall) {
407
+ console.debug('Checking if Gina is already installed for prefix `'+ self.prefix+'`: '+ self.isGinaInstalled);
408
+ if (!self.isGinaInstalled) {
204
409
  return done();
205
410
  }
206
411
 
412
+
207
413
  // Backup current version
208
414
 
209
415
  // check for ~/.gina
210
- var ginaHomeDir = _(getUserHome() + '/.gina', true);
416
+ var ginaHomeDir = getUserHome() + ((isWin32()) ? '\\.gina': '/.gina');
211
417
  // if not found -> skip because it means that gina might not be installed or configured yet
212
- if ( !new _(ginaHomeDir).existsSync() ) {
418
+ if (!existsSync(ginaHomeDir) ) {
213
419
  return done();
214
420
  }
215
421
 
422
+ var frameworkPath = self.versionPath;
423
+ try {
424
+ helpers = require(self.gina+ '/utils/helper');
425
+ lib = require('./lib');
426
+ console = lib.logger;
427
+ } catch (err) {
428
+ return done(err)
429
+ }
430
+
431
+
432
+
433
+ // root
434
+ // self.gina = getEnvVar('GINA_DIR');
435
+ // self.versionPath = getEnvVar('GINA_FRAMEWORK');
436
+
216
437
  // check if framework version folder is found
217
- var versionsFolders = null, frameworkPath = null;
438
+ var versionsFolders = null, frameworkFolder = null;
218
439
  try {
219
- frameworkPath = _(self.root +'/framework', true);
220
- console.info('frameworkPath: ', frameworkPath);
221
- if ( !new _(frameworkPath).existsSync() ) {
440
+ frameworkFolder = _(self.gina +'/framework', true);
441
+ console.debug('frameworkFolder: ', frameworkFolder);
442
+ if ( !existsSync(frameworkFolder) ) {
222
443
  return done();
223
444
  }
224
- versionsFolders = fs.readdirSync(frameworkPath);
445
+ versionsFolders = fs.readdirSync(frameworkFolder);
225
446
  } catch (err) {
226
447
  // do nothing
227
448
  }
@@ -273,43 +494,241 @@ function PreInstall() {
273
494
  });
274
495
 
275
496
  if (err) {
276
- throw err;
497
+ return done(err);
277
498
  }
278
499
  }
279
500
  // It is not required to update `~/.gina/main.json` && `~/.gina/{shortVersion}/settings.json`
501
+ done()
502
+ }
503
+
504
+ var isWin32 = function() {
505
+ return (process.platform === 'win32') ? true : false;
506
+ };
280
507
 
281
- self.checkRequiredFolders = function(done) {
508
+ var existsSync = function(path) {
509
+ if ( fs.accessSync && typeof(fs.accessSync) != 'undefined' ) {
510
+ try {
511
+ fs.accessSync(path, fs.constants.F_OK);
512
+ return true;
513
+ } catch (err) {
514
+ return false;
515
+ }
516
+ } else { // support for old version of nodejs
517
+ return fs.existsSync(path);
518
+ }
519
+ }
282
520
 
283
- // check for `/usr/local/tmp`
284
- var tmpDir = getTmpDir()
285
- console.info('`tmp` dir -> '+ tmpDir);
286
- var tmpDirObj = new _(tmpDir, true);
287
- if ( !tmpDirObj.existsSync() ) {
288
- tmpDirObj.mkdirSync()
521
+ var isWritableSync = function(path) {
522
+ var canWrite = false;
523
+ if ( fs.accessSync && typeof(fs.accessSync) != 'undefined' ) {
524
+ try {
525
+ fs.accessSync(path, fs.constants.W_OK);
526
+ canWrite = true;
527
+ } catch (err) {
528
+ canWrite = false;
289
529
  }
530
+ } else { // support for old version of nodejs
290
531
 
291
- // check for `/usr/local/run`
292
- var runDir = getRunDir();
293
- console.info('`run` dir -> '+ runDir);
294
- var runDirObj = new _(runDir, true);
295
- if ( !runDirObj.existsSync() ) {
296
- runDirObj.mkdirSync()
532
+ try {
533
+ canWrite = (fs.statSync(path).mode & (fs.constants.S_IRUSR | fs.constants.S_IRGRP | fs.constants.S_IROTH));
534
+ } catch (err) {
535
+ canWrite = false
297
536
  }
537
+ }
538
+
539
+ return canWrite
540
+ };
298
541
 
299
- // check for `/usr/local/log`
300
- var logDir = getLogDir();
301
- console.info('`log` dir -> '+ logDir);
302
- var logDirObj = new _(logDir, true);
303
- if ( !logDirObj.existsSync() ) {
304
- logDirObj.mkdirSync()
542
+ /**
543
+ * Get run\lock path
544
+ * @returns {string} rundir
545
+ * */
546
+ var getRunDir = function(prefix) {
547
+ if ( !prefix || typeof(prefix) == 'undefined' || prefix == '' ) {
548
+ prefix = self.defaultPrefix;
549
+ }
550
+
551
+ // Trying to retrieve original value if already defined
552
+ // Means `/usr/local/var/lock` or `/usr/local/var/run` by default.
553
+ var runDir = (isWin32()) ? getUserHome() + '\\.gina\\run' : prefix+'/var/lock';
554
+
555
+ if ( !isWin32() && new RegExp('^'+ prefix).test(runDir) && !isWritableSync(prefix) ) {
556
+ runDir = getUserHome() +'/.gina/run';
557
+ if ( !existsSync(runDir) ) {
558
+ fs.mkdirSync(runDir)
305
559
  }
306
560
 
307
- done()
561
+ return runDir
308
562
  }
309
563
 
564
+ if (!self.isGlobalInstall) {
565
+ runDir = runDir.replace(/\/var\//, '/')
566
+ }
310
567
 
311
- done()
312
- }
568
+ if ( existsSync(runDir) ) {
569
+ if ( !isWritableSync(runDir) ) {
570
+ throw new Error('location `'+ runDir +'` found but not writable !' )
571
+ }
572
+
573
+ runDir += ( isWin32() || !self.isGlobalInstall ) ? '' : '/gina'
574
+ if ( !existsSync(runDir) ) {
575
+ fs.mkdirSync(runDir)
576
+ }
577
+
578
+ return runDir;
579
+ }
580
+
581
+ try {
582
+ //by default.
583
+ runDir = prefix;
584
+ if (!self.isGlobalInstall) {
585
+ runDir += '/var';
586
+ }
587
+
588
+ if ( !existsSync(runDir) ) {
589
+ fs.mkdirSync(runDir)
590
+ }
591
+ runDir += '/run';
592
+ if ( !existsSync(runDir) ) {
593
+ fs.mkdirSync(runDir)
594
+ }
595
+ } catch (err) {
596
+ throw new Error('location error: `'+ runDir+'`\n'+ err.stack);
597
+ }
598
+
599
+ if (self.optionalPrefix != prefix && self.isGlobalInstall) {
600
+ runDir += ( isWin32() ) ? '\\gina' : '/gina'
601
+ if ( !existsSync(runDir) ) {
602
+ fs.mkdirSync(runDir)
603
+ }
604
+ }
605
+
606
+ return runDir;
607
+ };
608
+
609
+ var getTmpDir = function(prefix) {
610
+ if ( !prefix || typeof(prefix) == 'undefined' || prefix == '' ) {
611
+ prefix = self.defaultPrefix;
612
+ }
613
+ // support for node 0.10.x & 0.11.x
614
+ var tmp = (os.tmpdir) ? os.tmpdir : function() {
615
+ var tmpDir = null;
616
+ if ( isWin32() ) {
617
+ tmpDir = process.env.TEMP ||
618
+ process.env.TMP ||
619
+ (process.env.SystemRoot || process.env.windir) + '\\Temp'
620
+ ;
621
+ } else {
622
+ tmpDir = process.env.TMPDIR ||
623
+ process.env.TMP ||
624
+ process.env.TEMP ||
625
+ prefix+'/var/tmp'
626
+ ;
627
+
628
+ if ( new RegExp('^'+ prefix).test(tmpDir) && !isWritableSync(prefix) ) {
629
+ tmpDir = getUserHome() +'/.gina/tmp';
630
+ if ( !existsSync(tmpDir) ) {
631
+ fs.mkdirSync(tmpDir)
632
+ }
633
+ }
634
+
635
+ if ( new RegExp('^'+ prefix +'/var').test(tmpDir) && !existsSync(prefix+'/var') ) {
636
+ fs.mkdirSync(prefix+'/var');
637
+ }
638
+ }
639
+
640
+ if ( !existsSync(tmpDir) ) {
641
+ fs.mkdirSync(tmpDir);
642
+ }
643
+
644
+ return tmpDir
645
+ };
646
+
647
+ return tmp()
648
+ };
649
+
650
+ /**
651
+ * Get log path - %SystemRoot%\system32\winevt\logs or /
652
+ *
653
+ * @returns {string} logPath
654
+ * */
655
+ var getLogDir = function(prefix) {
656
+ if ( !prefix || typeof(prefix) == 'undefined' || prefix == '' ) {
657
+ prefix = self.defaultPrefix;
658
+ }
659
+ // Trying to retrieve original value if already defined
660
+ var logDir = null;
661
+
662
+ if ( isWin32() ) {
663
+ logDir = process.env.LOG ||
664
+ process.env.LOGS ||
665
+ (process.env.SystemRoot || process.env.windir) + '\\System32\\Winevt\\Logs'
666
+ ;
667
+
668
+ if ( !logDir || logDir == '' ) {
669
+ throw new Error('Log directory not defined or not found !');
670
+ }
671
+
672
+ if ( !isWritableSync(logDir) ) {
673
+ throw new Error('Log directory found but not writable: need permissions for `'+ logDir +'`');
674
+ }
675
+
676
+ if ( !/gina$/.test(logDir) ) {
677
+ logDir += '\\gina'
678
+ }
679
+ } else {
680
+ logDir = process.env.LOGDIR ||
681
+ process.env.LOG ||
682
+ process.env.LOGS ||
683
+ prefix+'/var/log'
684
+ ;
685
+
686
+ if ( new RegExp('^'+ prefix).test(logDir) && !isWritableSync(prefix) ) {
687
+ logDir = getUserHome() +'/.gina/log';
688
+ if ( !existsSync(logDir) ) {
689
+ fs.mkdirSync(logDir)
690
+ }
691
+
692
+ return logDir
693
+ }
694
+
695
+ if ( new RegExp('^'+ prefix +'/var').test(logDir) && !existsSync(prefix+'/var') ) {
696
+ fs.mkdirSync(prefix+'/var');
697
+ }
698
+
699
+ if ( !existsSync(logDir) ) {
700
+ fs.mkdirSync(logDir);
701
+ }
702
+
703
+ if ( !/gina$/.test(logDir) && self.optionalPrefix != prefix ) {
704
+ logDir += '/gina'
705
+ }
706
+ }
707
+
708
+ if ( !existsSync(logDir) ) {
709
+ fs.mkdirSync(logDir)
710
+ }
711
+
712
+ return logDir;
713
+ };
714
+
715
+ var getUserHome = function() {
716
+ var home = os.homedir ? os.homedir : function() {
717
+ var homeDir = process.env[(isWin32()) ? 'USERPROFILE' : 'HOME'];
718
+
719
+ if ( !homeDir || homeDir == '' ) {
720
+ throw new Error('Home directory not defined or not found !');
721
+ }
722
+
723
+ if ( !isWritableSync(homeDir) ) {
724
+ throw new Error('Home directory found but not writable: need permissions for `'+ homeDir +'`');
725
+ }
726
+
727
+ return homeDir;
728
+ };
729
+
730
+ return home()
731
+ };
313
732
 
314
733
  init()
315
734
  }