fluid_cli 0.1.2

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 (329) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1 -0
  3. data/dev.yml +5 -0
  4. data/exe/fluid +24 -0
  5. data/lib/fluid_cli/api.rb +135 -0
  6. data/lib/fluid_cli/assets/post_auth_page/index.html.erb +34 -0
  7. data/lib/fluid_cli/assets/post_auth_page/style.css +58 -0
  8. data/lib/fluid_cli/command.rb +55 -0
  9. data/lib/fluid_cli/commands/help.rb +21 -0
  10. data/lib/fluid_cli/commands/login.rb +30 -0
  11. data/lib/fluid_cli/commands/logout.rb +38 -0
  12. data/lib/fluid_cli/commands/switch.rb +23 -0
  13. data/lib/fluid_cli/commands/theme/common/company_helper.rb +15 -0
  14. data/lib/fluid_cli/commands/theme/common/root_helper.rb +95 -0
  15. data/lib/fluid_cli/commands/theme/dev.rb +61 -0
  16. data/lib/fluid_cli/commands/theme/help.rb +21 -0
  17. data/lib/fluid_cli/commands/theme/init.rb +46 -0
  18. data/lib/fluid_cli/commands/theme/pull.rb +68 -0
  19. data/lib/fluid_cli/commands/theme/push.rb +132 -0
  20. data/lib/fluid_cli/commands/theme.rb +23 -0
  21. data/lib/fluid_cli/commands/whoami.rb +23 -0
  22. data/lib/fluid_cli/commands.rb +19 -0
  23. data/lib/fluid_cli/company_switcher.rb +69 -0
  24. data/lib/fluid_cli/context.rb +691 -0
  25. data/lib/fluid_cli/db.rb +114 -0
  26. data/lib/fluid_cli/entry_point.rb +10 -0
  27. data/lib/fluid_cli/environment.rb +32 -0
  28. data/lib/fluid_cli/file_system_listener.rb +29 -0
  29. data/lib/fluid_cli/form.rb +42 -0
  30. data/lib/fluid_cli/git.rb +319 -0
  31. data/lib/fluid_cli/http_request.rb +54 -0
  32. data/lib/fluid_cli/identity_auth/servlet.rb +39 -0
  33. data/lib/fluid_cli/identity_auth.rb +126 -0
  34. data/lib/fluid_cli/options.rb +38 -0
  35. data/lib/fluid_cli/theme/dev_server/certificate_manager.rb +79 -0
  36. data/lib/fluid_cli/theme/dev_server/errors.rb +9 -0
  37. data/lib/fluid_cli/theme/dev_server/header_hash.rb +98 -0
  38. data/lib/fluid_cli/theme/dev_server/hooks/file_change_hook.rb +39 -0
  39. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/hot-reload-no-script.html +27 -0
  40. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/hot_reload.js +28 -0
  41. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/sse_client.js +43 -0
  42. data/lib/fluid_cli/theme/dev_server/hot_reload/resources/theme.js +16 -0
  43. data/lib/fluid_cli/theme/dev_server/hot_reload/script_injector.rb +54 -0
  44. data/lib/fluid_cli/theme/dev_server/hot_reload.rb +75 -0
  45. data/lib/fluid_cli/theme/dev_server/local_assets.rb +92 -0
  46. data/lib/fluid_cli/theme/dev_server/proxy.rb +235 -0
  47. data/lib/fluid_cli/theme/dev_server/proxy_param_builder.rb +82 -0
  48. data/lib/fluid_cli/theme/dev_server/reload_mode.rb +34 -0
  49. data/lib/fluid_cli/theme/dev_server/sse.rb +75 -0
  50. data/lib/fluid_cli/theme/dev_server/watcher.rb +57 -0
  51. data/lib/fluid_cli/theme/dev_server/web_server.rb +140 -0
  52. data/lib/fluid_cli/theme/dev_server.rb +289 -0
  53. data/lib/fluid_cli/theme/development_theme.rb +101 -0
  54. data/lib/fluid_cli/theme/file.rb +105 -0
  55. data/lib/fluid_cli/theme/forms/select.rb +33 -0
  56. data/lib/fluid_cli/theme/mime_type.rb +34 -0
  57. data/lib/fluid_cli/theme/presenters/theme_presenter.rb +49 -0
  58. data/lib/fluid_cli/theme/presenters/themes_presenter.rb +31 -0
  59. data/lib/fluid_cli/theme/root.rb +62 -0
  60. data/lib/fluid_cli/theme/syncer/checksums.rb +66 -0
  61. data/lib/fluid_cli/theme/syncer/downloader.rb +54 -0
  62. data/lib/fluid_cli/theme/syncer/error_reporter.rb +45 -0
  63. data/lib/fluid_cli/theme/syncer/merger.rb +53 -0
  64. data/lib/fluid_cli/theme/syncer/operation.rb +58 -0
  65. data/lib/fluid_cli/theme/syncer/standard_reporter.rb +32 -0
  66. data/lib/fluid_cli/theme/syncer/unsupported_script_warning.rb +90 -0
  67. data/lib/fluid_cli/theme/syncer/uploader/forms/apply_to_all.rb +41 -0
  68. data/lib/fluid_cli/theme/syncer/uploader/forms/apply_to_all_form.rb +37 -0
  69. data/lib/fluid_cli/theme/syncer/uploader/forms/base_strategy_form.rb +64 -0
  70. data/lib/fluid_cli/theme/syncer/uploader/forms/select_delete_strategy.rb +29 -0
  71. data/lib/fluid_cli/theme/syncer/uploader/forms/select_update_strategy.rb +30 -0
  72. data/lib/fluid_cli/theme/syncer/uploader/json_delete_handler.rb +49 -0
  73. data/lib/fluid_cli/theme/syncer/uploader/json_update_handler.rb +71 -0
  74. data/lib/fluid_cli/theme/syncer/uploader.rb +105 -0
  75. data/lib/fluid_cli/theme/syncer.rb +412 -0
  76. data/lib/fluid_cli/theme/theme.rb +186 -0
  77. data/lib/fluid_cli/theme/ui/sync_progress_bar.rb +22 -0
  78. data/lib/fluid_cli/thread_pool/job.rb +35 -0
  79. data/lib/fluid_cli/thread_pool.rb +49 -0
  80. data/lib/fluid_cli/version.rb +3 -0
  81. data/lib/fluid_cli.rb +59 -0
  82. data/vendor/deps/base64/.document +5 -0
  83. data/vendor/deps/base64/.gitignore +9 -0
  84. data/vendor/deps/base64/BSDL +22 -0
  85. data/vendor/deps/base64/COPYING +56 -0
  86. data/vendor/deps/base64/Gemfile +9 -0
  87. data/vendor/deps/base64/LEGAL +60 -0
  88. data/vendor/deps/base64/README.md +48 -0
  89. data/vendor/deps/base64/Rakefile +31 -0
  90. data/vendor/deps/base64/base64.gemspec +28 -0
  91. data/vendor/deps/base64/bin/console +14 -0
  92. data/vendor/deps/base64/bin/setup +8 -0
  93. data/vendor/deps/base64/lib/base64.rb +382 -0
  94. data/vendor/deps/base64/sig/base64.rbs +358 -0
  95. data/vendor/deps/base64/test/base64/test_base64.rb +115 -0
  96. data/vendor/deps/base64/test_sig/test_base64.rb +44 -0
  97. data/vendor/deps/cli-kit/REVISION +1 -0
  98. data/vendor/deps/cli-kit/lib/cli/kit/args/definition.rb +286 -0
  99. data/vendor/deps/cli-kit/lib/cli/kit/args/evaluation.rb +215 -0
  100. data/vendor/deps/cli-kit/lib/cli/kit/args/parser/node.rb +128 -0
  101. data/vendor/deps/cli-kit/lib/cli/kit/args/parser.rb +125 -0
  102. data/vendor/deps/cli-kit/lib/cli/kit/args/tokenizer.rb +130 -0
  103. data/vendor/deps/cli-kit/lib/cli/kit/args.rb +16 -0
  104. data/vendor/deps/cli-kit/lib/cli/kit/base_command.rb +30 -0
  105. data/vendor/deps/cli-kit/lib/cli/kit/command_help.rb +268 -0
  106. data/vendor/deps/cli-kit/lib/cli/kit/command_registry.rb +150 -0
  107. data/vendor/deps/cli-kit/lib/cli/kit/config.rb +137 -0
  108. data/vendor/deps/cli-kit/lib/cli/kit/core_ext.rb +28 -0
  109. data/vendor/deps/cli-kit/lib/cli/kit/error_handler.rb +166 -0
  110. data/vendor/deps/cli-kit/lib/cli/kit/executor.rb +92 -0
  111. data/vendor/deps/cli-kit/lib/cli/kit/ini.rb +91 -0
  112. data/vendor/deps/cli-kit/lib/cli/kit/levenshtein.rb +92 -0
  113. data/vendor/deps/cli-kit/lib/cli/kit/logger.rb +94 -0
  114. data/vendor/deps/cli-kit/lib/cli/kit/opts.rb +248 -0
  115. data/vendor/deps/cli-kit/lib/cli/kit/parse_args.rb +55 -0
  116. data/vendor/deps/cli-kit/lib/cli/kit/resolver.rb +66 -0
  117. data/vendor/deps/cli-kit/lib/cli/kit/support/test_helper.rb +260 -0
  118. data/vendor/deps/cli-kit/lib/cli/kit/support.rb +11 -0
  119. data/vendor/deps/cli-kit/lib/cli/kit/system.rb +290 -0
  120. data/vendor/deps/cli-kit/lib/cli/kit/util.rb +118 -0
  121. data/vendor/deps/cli-kit/lib/cli/kit/version.rb +7 -0
  122. data/vendor/deps/cli-kit/lib/cli/kit.rb +139 -0
  123. data/vendor/deps/cli-ui/REVISION +1 -0
  124. data/vendor/deps/cli-ui/lib/cli/ui/ansi.rb +218 -0
  125. data/vendor/deps/cli-ui/lib/cli/ui/color.rb +101 -0
  126. data/vendor/deps/cli-ui/lib/cli/ui/formatter.rb +219 -0
  127. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_stack.rb +67 -0
  128. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style/box.rb +179 -0
  129. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style/bracket.rb +152 -0
  130. data/vendor/deps/cli-ui/lib/cli/ui/frame/frame_style.rb +127 -0
  131. data/vendor/deps/cli-ui/lib/cli/ui/frame.rb +286 -0
  132. data/vendor/deps/cli-ui/lib/cli/ui/glyph.rb +92 -0
  133. data/vendor/deps/cli-ui/lib/cli/ui/os.rb +63 -0
  134. data/vendor/deps/cli-ui/lib/cli/ui/printer.rb +64 -0
  135. data/vendor/deps/cli-ui/lib/cli/ui/progress.rb +132 -0
  136. data/vendor/deps/cli-ui/lib/cli/ui/progress_reporter.rb +209 -0
  137. data/vendor/deps/cli-ui/lib/cli/ui/prompt/interactive_options.rb +583 -0
  138. data/vendor/deps/cli-ui/lib/cli/ui/prompt/options_handler.rb +36 -0
  139. data/vendor/deps/cli-ui/lib/cli/ui/prompt.rb +381 -0
  140. data/vendor/deps/cli-ui/lib/cli/ui/spinner/async.rb +48 -0
  141. data/vendor/deps/cli-ui/lib/cli/ui/spinner/spin_group.rb +602 -0
  142. data/vendor/deps/cli-ui/lib/cli/ui/spinner.rb +79 -0
  143. data/vendor/deps/cli-ui/lib/cli/ui/stdout_router.rb +399 -0
  144. data/vendor/deps/cli-ui/lib/cli/ui/table.rb +83 -0
  145. data/vendor/deps/cli-ui/lib/cli/ui/terminal.rb +55 -0
  146. data/vendor/deps/cli-ui/lib/cli/ui/truncater.rb +106 -0
  147. data/vendor/deps/cli-ui/lib/cli/ui/version.rb +8 -0
  148. data/vendor/deps/cli-ui/lib/cli/ui/widgets/base.rb +46 -0
  149. data/vendor/deps/cli-ui/lib/cli/ui/widgets/status.rb +79 -0
  150. data/vendor/deps/cli-ui/lib/cli/ui/widgets.rb +89 -0
  151. data/vendor/deps/cli-ui/lib/cli/ui/work_queue.rb +142 -0
  152. data/vendor/deps/cli-ui/lib/cli/ui/wrap.rb +61 -0
  153. data/vendor/deps/cli-ui/lib/cli/ui.rb +359 -0
  154. data/vendor/deps/cli-ui/vendor/reentrant_mutex.rb +78 -0
  155. data/vendor/deps/debug/CONTRIBUTING.md +573 -0
  156. data/vendor/deps/debug/Gemfile +10 -0
  157. data/vendor/deps/debug/LICENSE.txt +22 -0
  158. data/vendor/deps/debug/README.md +996 -0
  159. data/vendor/deps/debug/Rakefile +57 -0
  160. data/vendor/deps/debug/TODO.md +23 -0
  161. data/vendor/deps/debug/debug.gemspec +33 -0
  162. data/vendor/deps/debug/exe/rdbg +53 -0
  163. data/vendor/deps/debug/ext/debug/Makefile +273 -0
  164. data/vendor/deps/debug/ext/debug/debug.c +228 -0
  165. data/vendor/deps/debug/ext/debug/debug_version.h +1 -0
  166. data/vendor/deps/debug/ext/debug/extconf.rb +27 -0
  167. data/vendor/deps/debug/ext/debug/iseq_collector.c +93 -0
  168. data/vendor/deps/debug/lib/debug/abbrev_command.rb +77 -0
  169. data/vendor/deps/debug/lib/debug/breakpoint.rb +556 -0
  170. data/vendor/deps/debug/lib/debug/client.rb +263 -0
  171. data/vendor/deps/debug/lib/debug/color.rb +123 -0
  172. data/vendor/deps/debug/lib/debug/config.rb +592 -0
  173. data/vendor/deps/debug/lib/debug/console.rb +224 -0
  174. data/vendor/deps/debug/lib/debug/dap_custom/traceInspector.rb +336 -0
  175. data/vendor/deps/debug/lib/debug/debug.bundle +0 -0
  176. data/vendor/deps/debug/lib/debug/frame_info.rb +190 -0
  177. data/vendor/deps/debug/lib/debug/irb_integration.rb +37 -0
  178. data/vendor/deps/debug/lib/debug/local.rb +115 -0
  179. data/vendor/deps/debug/lib/debug/open.rb +13 -0
  180. data/vendor/deps/debug/lib/debug/open_nonstop.rb +15 -0
  181. data/vendor/deps/debug/lib/debug/prelude.rb +50 -0
  182. data/vendor/deps/debug/lib/debug/server.rb +534 -0
  183. data/vendor/deps/debug/lib/debug/server_cdp.rb +1348 -0
  184. data/vendor/deps/debug/lib/debug/server_dap.rb +1108 -0
  185. data/vendor/deps/debug/lib/debug/session.rb +2667 -0
  186. data/vendor/deps/debug/lib/debug/source_repository.rb +150 -0
  187. data/vendor/deps/debug/lib/debug/start.rb +5 -0
  188. data/vendor/deps/debug/lib/debug/thread_client.rb +1457 -0
  189. data/vendor/deps/debug/lib/debug/tracer.rb +241 -0
  190. data/vendor/deps/debug/lib/debug/version.rb +5 -0
  191. data/vendor/deps/debug/lib/debug.rb +9 -0
  192. data/vendor/deps/debug/misc/README.md.erb +660 -0
  193. data/vendor/deps/listen/.github/release-drafter.yml +17 -0
  194. data/vendor/deps/listen/.github/workflows/development.yml +67 -0
  195. data/vendor/deps/listen/.github/workflows/push.yml +12 -0
  196. data/vendor/deps/listen/.gitignore +28 -0
  197. data/vendor/deps/listen/.rspec +3 -0
  198. data/vendor/deps/listen/.rubocop.yml +283 -0
  199. data/vendor/deps/listen/.yardopts +11 -0
  200. data/vendor/deps/listen/CHANGELOG.md +1 -0
  201. data/vendor/deps/listen/CONTRIBUTING.md +45 -0
  202. data/vendor/deps/listen/Gemfile +33 -0
  203. data/vendor/deps/listen/Guardfile +26 -0
  204. data/vendor/deps/listen/LICENSE.txt +22 -0
  205. data/vendor/deps/listen/README.md +490 -0
  206. data/vendor/deps/listen/Rakefile +154 -0
  207. data/vendor/deps/listen/bin/listen +11 -0
  208. data/vendor/deps/listen/lib/listen/adapter/base.rb +129 -0
  209. data/vendor/deps/listen/lib/listen/adapter/bsd.rb +104 -0
  210. data/vendor/deps/listen/lib/listen/adapter/config.rb +31 -0
  211. data/vendor/deps/listen/lib/listen/adapter/darwin.rb +77 -0
  212. data/vendor/deps/listen/lib/listen/adapter/linux.rb +108 -0
  213. data/vendor/deps/listen/lib/listen/adapter/polling.rb +40 -0
  214. data/vendor/deps/listen/lib/listen/adapter/windows.rb +96 -0
  215. data/vendor/deps/listen/lib/listen/adapter.rb +43 -0
  216. data/vendor/deps/listen/lib/listen/backend.rb +40 -0
  217. data/vendor/deps/listen/lib/listen/change.rb +69 -0
  218. data/vendor/deps/listen/lib/listen/cli.rb +65 -0
  219. data/vendor/deps/listen/lib/listen/directory.rb +93 -0
  220. data/vendor/deps/listen/lib/listen/error.rb +11 -0
  221. data/vendor/deps/listen/lib/listen/event/config.rb +39 -0
  222. data/vendor/deps/listen/lib/listen/event/loop.rb +92 -0
  223. data/vendor/deps/listen/lib/listen/event/processor.rb +128 -0
  224. data/vendor/deps/listen/lib/listen/event/queue.rb +52 -0
  225. data/vendor/deps/listen/lib/listen/file.rb +95 -0
  226. data/vendor/deps/listen/lib/listen/fsm.rb +131 -0
  227. data/vendor/deps/listen/lib/listen/listener/config.rb +41 -0
  228. data/vendor/deps/listen/lib/listen/listener.rb +136 -0
  229. data/vendor/deps/listen/lib/listen/logger.rb +65 -0
  230. data/vendor/deps/listen/lib/listen/monotonic_time.rb +27 -0
  231. data/vendor/deps/listen/lib/listen/options.rb +24 -0
  232. data/vendor/deps/listen/lib/listen/queue_optimizer.rb +129 -0
  233. data/vendor/deps/listen/lib/listen/record/entry.rb +66 -0
  234. data/vendor/deps/listen/lib/listen/record/symlink_detector.rb +47 -0
  235. data/vendor/deps/listen/lib/listen/record.rb +122 -0
  236. data/vendor/deps/listen/lib/listen/silencer/controller.rb +50 -0
  237. data/vendor/deps/listen/lib/listen/silencer.rb +106 -0
  238. data/vendor/deps/listen/lib/listen/thread.rb +54 -0
  239. data/vendor/deps/listen/lib/listen/version.rb +5 -0
  240. data/vendor/deps/listen/lib/listen.rb +47 -0
  241. data/vendor/deps/listen/listen.gemspec +40 -0
  242. data/vendor/deps/listen/spec/acceptance/listen_spec.rb +320 -0
  243. data/vendor/deps/listen/spec/lib/listen/adapter/base_spec.rb +101 -0
  244. data/vendor/deps/listen/spec/lib/listen/adapter/bsd_spec.rb +13 -0
  245. data/vendor/deps/listen/spec/lib/listen/adapter/config_spec.rb +122 -0
  246. data/vendor/deps/listen/spec/lib/listen/adapter/darwin_spec.rb +82 -0
  247. data/vendor/deps/listen/spec/lib/listen/adapter/linux_spec.rb +199 -0
  248. data/vendor/deps/listen/spec/lib/listen/adapter/polling_spec.rb +83 -0
  249. data/vendor/deps/listen/spec/lib/listen/adapter/windows_spec.rb +13 -0
  250. data/vendor/deps/listen/spec/lib/listen/adapter_spec.rb +69 -0
  251. data/vendor/deps/listen/spec/lib/listen/backend_spec.rb +82 -0
  252. data/vendor/deps/listen/spec/lib/listen/change_spec.rb +102 -0
  253. data/vendor/deps/listen/spec/lib/listen/cli_spec.rb +116 -0
  254. data/vendor/deps/listen/spec/lib/listen/directory_spec.rb +284 -0
  255. data/vendor/deps/listen/spec/lib/listen/event/config_spec.rb +33 -0
  256. data/vendor/deps/listen/spec/lib/listen/event/loop_spec.rb +118 -0
  257. data/vendor/deps/listen/spec/lib/listen/event/processor_spec.rb +250 -0
  258. data/vendor/deps/listen/spec/lib/listen/event/queue_spec.rb +118 -0
  259. data/vendor/deps/listen/spec/lib/listen/file_spec.rb +254 -0
  260. data/vendor/deps/listen/spec/lib/listen/fsm_spec.rb +147 -0
  261. data/vendor/deps/listen/spec/lib/listen/listener/config_spec.rb +29 -0
  262. data/vendor/deps/listen/spec/lib/listen/listener_spec.rb +321 -0
  263. data/vendor/deps/listen/spec/lib/listen/logger_spec.rb +212 -0
  264. data/vendor/deps/listen/spec/lib/listen/monotonic_time_spec.rb +58 -0
  265. data/vendor/deps/listen/spec/lib/listen/queue_optimizer_spec.rb +111 -0
  266. data/vendor/deps/listen/spec/lib/listen/record_spec.rb +424 -0
  267. data/vendor/deps/listen/spec/lib/listen/silencer/controller_spec.rb +97 -0
  268. data/vendor/deps/listen/spec/lib/listen/silencer_spec.rb +109 -0
  269. data/vendor/deps/listen/spec/lib/listen/thread_spec.rb +133 -0
  270. data/vendor/deps/listen/spec/lib/listen_spec.rb +25 -0
  271. data/vendor/deps/listen/spec/spec_helper.rb +49 -0
  272. data/vendor/deps/listen/spec/support/acceptance_helper.rb +260 -0
  273. data/vendor/deps/listen/spec/support/fixtures_helper.rb +32 -0
  274. data/vendor/deps/listen/spec/support/platform_helper.rb +17 -0
  275. data/vendor/deps/observer/.github/dependabot.yml +6 -0
  276. data/vendor/deps/observer/.github/workflows/test.yml +33 -0
  277. data/vendor/deps/observer/.gitignore +8 -0
  278. data/vendor/deps/observer/BSDL +22 -0
  279. data/vendor/deps/observer/COPYING +56 -0
  280. data/vendor/deps/observer/Gemfile +9 -0
  281. data/vendor/deps/observer/README.md +139 -0
  282. data/vendor/deps/observer/Rakefile +10 -0
  283. data/vendor/deps/observer/bin/console +14 -0
  284. data/vendor/deps/observer/bin/setup +8 -0
  285. data/vendor/deps/observer/lib/observer.rb +229 -0
  286. data/vendor/deps/observer/observer.gemspec +32 -0
  287. data/vendor/deps/observer/test/test_observer.rb +66 -0
  288. data/vendor/deps/webrick/.gitignore +9 -0
  289. data/vendor/deps/webrick/Gemfile +3 -0
  290. data/vendor/deps/webrick/LICENSE.txt +22 -0
  291. data/vendor/deps/webrick/README.md +61 -0
  292. data/vendor/deps/webrick/Rakefile +10 -0
  293. data/vendor/deps/webrick/lib/webrick/accesslog.rb +157 -0
  294. data/vendor/deps/webrick/lib/webrick/cgi.rb +313 -0
  295. data/vendor/deps/webrick/lib/webrick/compat.rb +36 -0
  296. data/vendor/deps/webrick/lib/webrick/config.rb +158 -0
  297. data/vendor/deps/webrick/lib/webrick/cookie.rb +172 -0
  298. data/vendor/deps/webrick/lib/webrick/htmlutils.rb +30 -0
  299. data/vendor/deps/webrick/lib/webrick/httpauth/authenticator.rb +117 -0
  300. data/vendor/deps/webrick/lib/webrick/httpauth/basicauth.rb +116 -0
  301. data/vendor/deps/webrick/lib/webrick/httpauth/digestauth.rb +395 -0
  302. data/vendor/deps/webrick/lib/webrick/httpauth/htdigest.rb +132 -0
  303. data/vendor/deps/webrick/lib/webrick/httpauth/htgroup.rb +97 -0
  304. data/vendor/deps/webrick/lib/webrick/httpauth/htpasswd.rb +158 -0
  305. data/vendor/deps/webrick/lib/webrick/httpauth/userdb.rb +53 -0
  306. data/vendor/deps/webrick/lib/webrick/httpauth.rb +96 -0
  307. data/vendor/deps/webrick/lib/webrick/httpproxy.rb +354 -0
  308. data/vendor/deps/webrick/lib/webrick/httprequest.rb +636 -0
  309. data/vendor/deps/webrick/lib/webrick/httpresponse.rb +564 -0
  310. data/vendor/deps/webrick/lib/webrick/https.rb +152 -0
  311. data/vendor/deps/webrick/lib/webrick/httpserver.rb +294 -0
  312. data/vendor/deps/webrick/lib/webrick/httpservlet/abstract.rb +152 -0
  313. data/vendor/deps/webrick/lib/webrick/httpservlet/cgi_runner.rb +47 -0
  314. data/vendor/deps/webrick/lib/webrick/httpservlet/cgihandler.rb +126 -0
  315. data/vendor/deps/webrick/lib/webrick/httpservlet/erbhandler.rb +88 -0
  316. data/vendor/deps/webrick/lib/webrick/httpservlet/filehandler.rb +552 -0
  317. data/vendor/deps/webrick/lib/webrick/httpservlet/prochandler.rb +47 -0
  318. data/vendor/deps/webrick/lib/webrick/httpservlet.rb +23 -0
  319. data/vendor/deps/webrick/lib/webrick/httpstatus.rb +194 -0
  320. data/vendor/deps/webrick/lib/webrick/httputils.rb +512 -0
  321. data/vendor/deps/webrick/lib/webrick/httpversion.rb +76 -0
  322. data/vendor/deps/webrick/lib/webrick/log.rb +156 -0
  323. data/vendor/deps/webrick/lib/webrick/server.rb +381 -0
  324. data/vendor/deps/webrick/lib/webrick/ssl.rb +215 -0
  325. data/vendor/deps/webrick/lib/webrick/utils.rb +265 -0
  326. data/vendor/deps/webrick/lib/webrick/version.rb +18 -0
  327. data/vendor/deps/webrick/lib/webrick.rb +232 -0
  328. data/vendor/deps/webrick/webrick.gemspec +74 -0
  329. metadata +412 -0
@@ -0,0 +1,118 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'listen/event/queue'
4
+
5
+ # TODO: not part of listener really
6
+ RSpec.describe Listen::Event::Queue do
7
+ let(:queue) { instance_double(Thread::Queue, 'my queue') }
8
+
9
+ let(:config) { instance_double(Listen::Event::Queue::Config) }
10
+
11
+ let(:relative) { false }
12
+
13
+ subject { described_class.new(config) }
14
+
15
+ before do
16
+ allow(config).to receive(:relative?).and_return(relative)
17
+ allow(Thread::Queue).to receive(:new).and_return(queue)
18
+ end
19
+
20
+ describe '#empty?' do
21
+ before do
22
+ allow(queue).to receive(:empty?).and_return(empty)
23
+ end
24
+
25
+ context 'when empty' do
26
+ let(:empty) { true }
27
+ it { is_expected.to be_empty }
28
+ end
29
+
30
+ context 'when not empty' do
31
+ let(:empty) { false }
32
+ let(:watched_dir) { fake_path('watched_dir') }
33
+ before do
34
+ allow(queue).to receive(:empty?).and_return(false)
35
+ end
36
+ it { is_expected.to_not be_empty }
37
+ end
38
+ end
39
+
40
+ describe '#pop' do
41
+ before do
42
+ allow(queue).to receive(:pop).and_return('foo')
43
+ end
44
+
45
+ context 'when empty' do
46
+ let(:value) { 'foo' }
47
+ it 'forward the call to the queue' do
48
+ expect(subject.pop).to eq('foo')
49
+ end
50
+ end
51
+ end
52
+
53
+ describe '#<<' do
54
+ let(:watched_dir) { fake_path('watched_dir') }
55
+ before do
56
+ allow(queue).to receive(:<<)
57
+ end
58
+
59
+ context 'when relative option is true' do
60
+ let(:relative) { true }
61
+
62
+ context 'when watched dir is the current dir' do
63
+ let(:options) { { relative: true, directories: Pathname.pwd } }
64
+
65
+ let(:dir_rel_path) { fake_path('.') }
66
+ let(:foo_rel_path) { fake_path('foo', exist?: true) }
67
+
68
+ it 'registers relative paths' do
69
+ allow(dir_rel_path).to receive(:+).with('foo') { foo_rel_path }
70
+
71
+ allow(watched_dir).to receive(:relative_path_from).
72
+ with(Pathname.pwd).
73
+ and_return(dir_rel_path)
74
+
75
+ expect(queue).to receive(:<<).
76
+ with([:file, :modified, dir_rel_path, 'foo', {}])
77
+
78
+ subject.<<([:file, :modified, watched_dir, 'foo', {}])
79
+ end
80
+ end
81
+
82
+ context 'when watched dir is not the current dir' do
83
+ let(:options) { { relative: true } }
84
+ let(:dir_rel_path) { fake_path('..') }
85
+ let(:foo_rel_path) { fake_path('../foo', exist?: true) }
86
+
87
+ it 'registers relative path' do
88
+ allow(watched_dir).to receive(:relative_path_from).
89
+ with(Pathname.pwd).
90
+ and_return(dir_rel_path)
91
+
92
+ expect(queue).to receive(:<<).
93
+ with([:file, :modified, dir_rel_path, 'foo', {}])
94
+
95
+ subject.<<([:file, :modified, watched_dir, 'foo', {}])
96
+ end
97
+ end
98
+
99
+ context 'when watched dir is on another drive' do
100
+ let(:watched_dir) { fake_path('watched_dir', realpath: 'd:/foo') }
101
+ let(:foo_rel_path) { fake_path('d:/foo', exist?: true) }
102
+
103
+ it 'registers full path' do
104
+ allow(watched_dir).to receive(:relative_path_from).
105
+ with(Pathname.pwd).
106
+ and_raise(ArgumentError)
107
+
108
+ allow(watched_dir).to receive(:+).with('foo') { foo_rel_path }
109
+
110
+ expect(queue).to receive(:<<).
111
+ with([:file, :modified, watched_dir, 'foo', {}])
112
+
113
+ subject.<<([:file, :modified, watched_dir, 'foo', {}])
114
+ end
115
+ end
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,254 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Listen::File do
4
+ let(:record) do
5
+ instance_double(
6
+ Listen::Record,
7
+ root: '/foo/bar',
8
+ file_data: record_data,
9
+ add_dir: true,
10
+ update_file: true,
11
+ unset_path: true
12
+ )
13
+ end
14
+
15
+ let(:path) { Pathname.pwd }
16
+ let(:subject) { described_class.change(record, 'file.rb') }
17
+
18
+ around { |example| fixtures { example.run } }
19
+
20
+ before { allow(::File).to receive(:lstat) { fail 'Not stubbed!' } }
21
+
22
+ describe '#change' do
23
+ let(:expected_data) do
24
+ { mtime: kind_of(Float), mode: kind_of(Integer), size: kind_of(Integer) }
25
+ end
26
+
27
+ context 'with file record' do
28
+ let(:record_mtime) { nil }
29
+ let(:record_sha) { nil }
30
+ let(:record_mode) { nil }
31
+ let(:record_size) { nil }
32
+
33
+ let(:record_data) do
34
+ { mtime: record_mtime, sha: record_sha, mode: record_mode, size: record_size }
35
+ end
36
+
37
+ context 'with non-existing file' do
38
+ before { allow(::File).to receive(:lstat) { fail Errno::ENOENT } }
39
+
40
+ it { is_expected.to eq(:removed) }
41
+
42
+ it 'sets path in record' do
43
+ expect(record).to receive(:unset_path).with('file.rb')
44
+ subject
45
+ end
46
+ end
47
+
48
+ context 'with existing file' do
49
+ let(:stat_mtime) { Time.now.to_f - 1234.567 }
50
+ let(:stat_ctime) { Time.now.to_f - 1234.567 }
51
+ let(:stat_atime) { Time.now.to_f - 1234.567 }
52
+ let(:stat_mode) { 0640 }
53
+
54
+ let(:record_size) { 42 }
55
+ let(:stat_size) { record_size }
56
+
57
+ let(:sha) { fail 'stub me (sha)' }
58
+
59
+ let(:stat) do
60
+ instance_double(
61
+ File::Stat,
62
+ mtime: stat_mtime,
63
+ atime: stat_atime,
64
+ ctime: stat_ctime,
65
+ mode: stat_mode,
66
+ size: stat_size
67
+ )
68
+ end
69
+
70
+ before do
71
+ allow(::File).to receive(:lstat) { stat }
72
+ allow(Digest::SHA256).to receive(:file) { double(:sha, digest: sha) }
73
+ end
74
+
75
+ context 'with different mode in record' do
76
+ let(:record_mode) { 0722 }
77
+
78
+ it { should be :modified }
79
+
80
+ it 'sets path in record with expected data' do
81
+ expect(record).to receive(:update_file).
82
+ with('file.rb', expected_data)
83
+ subject
84
+ end
85
+ end
86
+
87
+ context 'with same mode in record' do
88
+ let(:record_mode) { stat_mode }
89
+
90
+ # e.g. file was overwritten by earlier copy
91
+ context 'with earlier mtime than in record' do
92
+ let(:record_mtime) { stat_mtime.to_f - 123.45 }
93
+
94
+ it { should be :modified }
95
+
96
+ it 'sets path in record with expected data' do
97
+ expect(record).to receive(:update_file).
98
+ with('file.rb', expected_data)
99
+ subject
100
+ end
101
+ end
102
+
103
+ context 'with later mtime than in record' do
104
+ let(:record_mtime) { stat_mtime.to_f + 123.45 }
105
+
106
+ it { should be :modified }
107
+
108
+ it 'sets path in record with expected data' do
109
+ expect(record).to receive(:update_file).
110
+ with('file.rb', expected_data)
111
+ subject
112
+ end
113
+ end
114
+
115
+ context 'with identical mtime in record' do
116
+ let(:record_mtime) { stat_mtime.to_f }
117
+
118
+ context 'with accurate stat times' do
119
+ let(:stat_mtime) { Time.at(1_401_235_714.123).utc }
120
+ let(:stat_atime) { Time.at(1_401_235_714.123).utc }
121
+ let(:stat_ctime) { Time.at(1_401_235_714.123).utc }
122
+ let(:record_mtime) { stat_mtime.to_f }
123
+ it { should be_nil }
124
+ end
125
+
126
+ context 'with inaccurate stat times' do
127
+ let(:stat_mtime) { Time.at(1_401_235_714.0).utc }
128
+ let(:stat_atime) { Time.at(1_401_235_714.0).utc }
129
+ let(:stat_ctime) { Time.at(1_401_235_714.0).utc }
130
+
131
+ let(:record_mtime) { stat_mtime.to_f }
132
+
133
+ context 'with real mtime barely not within last second' do
134
+ before { allow(Time).to receive(:now) { now } }
135
+
136
+ # NOTE: if real mtime is ???14.99, the
137
+ # saved mtime is ???14.0
138
+ let(:now) { Time.at(1_401_235_716.00).utc }
139
+ it { should be_nil }
140
+ end
141
+
142
+ context 'with real mtime barely within last second' do
143
+ # NOTE: real mtime is in range (???14.0 .. ???14.999),
144
+ # so saved mtime at ???14.0 means it could be
145
+ # ???14.999, so ???15.999 could still be within 1 second
146
+ # range
147
+ let(:now) { Time.at(1_401_235_715.999999).utc }
148
+
149
+ before { allow(Time).to receive(:now) { now } }
150
+
151
+ context 'without available sha' do
152
+ let(:sha) { fail Errno::ENOENT }
153
+
154
+ # Treat it as a removed file, because chances are ...
155
+ # whatever is listening for changes won't be able to deal
156
+ # with the file either (e.g. because of permissions)
157
+ it { should be :removed }
158
+
159
+ it 'should not unset record' do
160
+ expect(record).to_not receive(:unset_path)
161
+ end
162
+ end
163
+
164
+ context 'with available sha' do
165
+ let(:sha) { 'd41d8cd98f00b204e9800998ecf8427e' }
166
+
167
+ context 'with same sha in record' do
168
+ let(:record_sha) { sha }
169
+ it { should be_nil }
170
+ end
171
+
172
+ context 'with no sha in record' do
173
+ let(:record_sha) { nil }
174
+ it { should be_nil }
175
+ end
176
+
177
+ context 'with different sha in record' do
178
+ let(:record_sha) { 'foo' }
179
+ it { should be :modified }
180
+
181
+ it 'sets path in record with expected data' do
182
+ expected = expected_data.merge(sha: sha)
183
+ expect(record).to receive(:update_file).
184
+ with('file.rb', expected)
185
+ subject
186
+ end
187
+ end
188
+ end
189
+ end
190
+ end
191
+ end
192
+ end
193
+ end
194
+ end
195
+
196
+ context 'with empty record' do
197
+ let(:record_data) { {} }
198
+
199
+ context 'with existing path' do
200
+ let(:stat) do
201
+ instance_double(
202
+ File::Stat,
203
+ mtime: 1234,
204
+ mode: 0645,
205
+ size: 0
206
+ )
207
+ end
208
+
209
+ before do
210
+ allow(::File).to receive(:lstat) { stat }
211
+ end
212
+
213
+ it 'returns added' do
214
+ expect(subject).to eq :added
215
+ end
216
+
217
+ it 'sets path in record with expected data' do
218
+ expect(record).to receive(:update_file).
219
+ with('file.rb', expected_data)
220
+ subject
221
+ end
222
+ end
223
+ end
224
+ end
225
+
226
+ describe '#inaccurate_mac_time?' do
227
+ let(:stat) do
228
+ instance_double(File::Stat, mtime: mtime, atime: atime, ctime: ctime, size: 0)
229
+ end
230
+
231
+ subject { Listen::File.inaccurate_mac_time?(stat) }
232
+
233
+ context 'with no accurate times' do
234
+ let(:mtime) { Time.at(1_234_567.0).utc }
235
+ let(:atime) { Time.at(1_234_567.0).utc }
236
+ let(:ctime) { Time.at(1_234_567.0).utc }
237
+ it { should be_truthy }
238
+ end
239
+
240
+ context 'with all accurate times' do
241
+ let(:mtime) { Time.at(1_234_567.89).utc }
242
+ let(:atime) { Time.at(1_234_567.89).utc }
243
+ let(:ctime) { Time.at(1_234_567.89).utc }
244
+ it { should be_falsey }
245
+ end
246
+
247
+ context 'with one accurate time' do
248
+ let(:mtime) { Time.at(1_234_567.0).utc }
249
+ let(:atime) { Time.at(1_234_567.89).utc }
250
+ let(:ctime) { Time.at(1_234_567.0).utc }
251
+ it { should be_falsey }
252
+ end
253
+ end
254
+ end
@@ -0,0 +1,147 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Listen::FSM do
4
+ context 'simple FSM' do
5
+ class SpecSimpleFsm
6
+ include Listen::FSM
7
+
8
+ attr_reader :entered_started
9
+
10
+ start_state :initial
11
+
12
+ state :started, to: :stopped do
13
+ @entered_started = true
14
+ end
15
+
16
+ state :failed, to: :stopped
17
+
18
+ state :stopped
19
+
20
+ def start
21
+ transition(:started)
22
+ end
23
+
24
+ def stop
25
+ transition(:stopped)
26
+ end
27
+
28
+ def fail
29
+ transition(:failed)
30
+ end
31
+
32
+ def initialize
33
+ initialize_fsm
34
+ end
35
+ end
36
+
37
+ subject(:fsm) { SpecSimpleFsm.new }
38
+
39
+ it 'starts in start_state' do
40
+ expect(subject.state).to eq(:initial)
41
+ end
42
+
43
+ it 'allows transitions' do
44
+ subject.start
45
+ expect(subject.state).to eq(:started)
46
+ expect(subject.entered_started).to eq(true)
47
+ end
48
+
49
+ it 'raises on disallowed transitions' do
50
+ subject.fail
51
+ expect do
52
+ subject.start
53
+ end.to raise_exception(ArgumentError,
54
+ "SpecSimpleFsm can't change state from 'failed' to 'started', only to: stopped")
55
+ expect(subject.state).to eq(:failed)
56
+ expect(subject.entered_started).to eq(nil)
57
+ end
58
+
59
+ it 'declares transition and transition! private' do
60
+ expect { subject.transition(:started) }.to raise_exception(NoMethodError, /private.*transition/)
61
+ expect { subject.transition!(:started) }.to raise_exception(NoMethodError, /private.*transition!/)
62
+ end
63
+
64
+ describe '#wait_for_state' do
65
+ it 'returns truthy immediately if already in the desired state' do
66
+ expect(subject.instance_variable_get(:@state_changed)).to_not receive(:wait)
67
+ result = subject.wait_for_state(:initial)
68
+ expect(result).to be_truthy
69
+ end
70
+
71
+ it 'waits for the next state change and returns truthy if then in the desired state' do
72
+ expect(subject.instance_variable_get(:@state_changed)).to receive(:wait).with(anything, anything) do
73
+ subject.instance_variable_set(:@state, :started)
74
+ end
75
+ result = subject.wait_for_state(:started)
76
+ expect(result).to be_truthy
77
+ end
78
+
79
+ it 'waits for the next state change and returns falsey if then not the desired state' do
80
+ expect(subject.instance_variable_get(:@state_changed)).to receive(:wait).with(anything, anything)
81
+ result = subject.wait_for_state(:started)
82
+ expect(result).to be_falsey
83
+ end
84
+
85
+ it 'passes the timeout: down to wait, if given' do
86
+ expect(subject.instance_variable_get(:@state_changed)).to receive(:wait).with(anything, 5.0)
87
+ subject.wait_for_state(:started, timeout: 5.0)
88
+ end
89
+
90
+ it 'passes nil (infinite) timeout: down to wait, if none given' do
91
+ expect(subject.instance_variable_get(:@state_changed)).to receive(:wait).with(anything, nil)
92
+ subject.wait_for_state(:started)
93
+ end
94
+
95
+ it 'enforces precondition that states must be symbols' do
96
+ expect do
97
+ subject.wait_for_state(:started, 'stopped')
98
+ end.to raise_exception(ArgumentError, /states must be symbols .*got "stopped"/)
99
+ end
100
+ end
101
+ end
102
+
103
+ context 'FSM with no start state' do
104
+ class SpecFsmWithNoStartState
105
+ include Listen::FSM
106
+
107
+ state :started, to: :stopped
108
+
109
+ state :failed, to: :stopped
110
+
111
+ state :stopped
112
+
113
+ def initialize
114
+ initialize_fsm
115
+ end
116
+ end
117
+
118
+ subject(:fsm) { SpecFsmWithNoStartState.new }
119
+
120
+ it 'raises ArgumentError on new' do
121
+ expect { subject }.to raise_exception(ArgumentError,
122
+ /`start_state :<state>` must be declared before `new`/)
123
+ end
124
+ end
125
+
126
+ context 'FSM with string state name' do
127
+ subject(:fsm) do
128
+ instance_exec do
129
+ class SpecFsmWithStringState
130
+ include Listen::FSM
131
+
132
+ state 'started', to: 'stopped'
133
+
134
+ state 'stopped'
135
+
136
+ def initialize
137
+ initialize_fsm
138
+ end
139
+ end
140
+ end
141
+ end
142
+
143
+ it 'raises ArgumentError on new' do
144
+ expect { subject }.to raise_exception(ArgumentError, /state name must be a Symbol/)
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'listen/listener/config'
4
+ RSpec.describe Listen::Listener::Config do
5
+ describe 'options' do
6
+ context 'custom options' do
7
+ subject do
8
+ described_class.new(
9
+ latency: 1.234,
10
+ wait_for_delay: 0.85,
11
+ force_polling: true,
12
+ relative: true)
13
+ end
14
+
15
+ it 'extracts adapter options' do
16
+ klass = Class.new do
17
+ DEFAULTS = { latency: 5.4321 }.freeze
18
+ end
19
+ expected = { latency: 1.234 }
20
+ expect(subject.adapter_instance_options(klass)).to eq(expected)
21
+ end
22
+
23
+ it 'extract adapter selecting options' do
24
+ expected = { force_polling: true, polling_fallback_message: nil }
25
+ expect(subject.adapter_select_options).to eq(expected)
26
+ end
27
+ end
28
+ end
29
+ end