gina 0.1.1-alpha.21 → 0.1.1-alpha.211

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