gina 0.1.1-alpha.22 → 0.1.1-alpha.220

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