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,131 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Code copied from https://github.com/celluloid/celluloid-fsm
4
+
5
+ module Listen
6
+ module FSM
7
+ # Included hook to extend class methods
8
+ def self.included(klass)
9
+ klass.send :extend, ClassMethods
10
+ end
11
+
12
+ module ClassMethods
13
+ # Obtain or set the start state
14
+ # Passing a state name sets the start state
15
+ def start_state(new_start_state = nil)
16
+ if new_start_state
17
+ new_start_state.is_a?(Symbol) or raise ArgumentError, "state name must be a Symbol (got #{new_start_state.inspect})"
18
+ @start_state = new_start_state
19
+ else
20
+ defined?(@start_state) or raise ArgumentError, "`start_state :<state>` must be declared before `new`"
21
+ @start_state
22
+ end
23
+ end
24
+
25
+ # The valid states for this FSM, as a hash with state name symbols as keys and State objects as values.
26
+ def states
27
+ @states ||= {}
28
+ end
29
+
30
+ # Declare an FSM state and optionally provide a callback block to fire on state entry
31
+ # Options:
32
+ # * to: a state or array of states this state can transition to
33
+ def state(state_name, to: nil, &block)
34
+ state_name.is_a?(Symbol) or raise ArgumentError, "state name must be a Symbol (got #{state_name.inspect})"
35
+ states[state_name] = State.new(state_name, to, &block)
36
+ end
37
+ end
38
+
39
+ # NOTE: including classes must call initialize_fsm from their initialize method.
40
+ def initialize_fsm
41
+ @fsm_initialized = true
42
+ @state = self.class.start_state
43
+ @mutex = ::Mutex.new
44
+ @state_changed = ::ConditionVariable.new
45
+ end
46
+
47
+ # Current state of the FSM, stored as a symbol
48
+ attr_reader :state
49
+
50
+ # checks for one of the given states to wait for
51
+ # if not already, waits for a state change (up to timeout seconds--`nil` means infinite)
52
+ # returns truthy iff the transition to one of the desired state has occurred
53
+ def wait_for_state(*wait_for_states, timeout: nil)
54
+ wait_for_states.each do |state|
55
+ state.is_a?(Symbol) or raise ArgumentError, "states must be symbols (got #{state.inspect})"
56
+ end
57
+ @mutex.synchronize do
58
+ if !wait_for_states.include?(@state)
59
+ @state_changed.wait(@mutex, timeout)
60
+ end
61
+ wait_for_states.include?(@state)
62
+ end
63
+ end
64
+
65
+ private
66
+
67
+ def transition(new_state_name)
68
+ new_state_name.is_a?(Symbol) or raise ArgumentError, "state name must be a Symbol (got #{new_state_name.inspect})"
69
+ if (new_state = validate_and_sanitize_new_state(new_state_name))
70
+ transition_with_callbacks!(new_state)
71
+ end
72
+ end
73
+
74
+ # Low-level, immediate state transition with no checks or callbacks.
75
+ def transition!(new_state_name)
76
+ new_state_name.is_a?(Symbol) or raise ArgumentError, "state name must be a Symbol (got #{new_state_name.inspect})"
77
+ @fsm_initialized or raise ArgumentError, "FSM not initialized. You must call initialize_fsm from initialize!"
78
+ @mutex.synchronize do
79
+ yield if block_given?
80
+ @state = new_state_name
81
+ @state_changed.broadcast
82
+ end
83
+ end
84
+
85
+ def validate_and_sanitize_new_state(new_state_name)
86
+ return nil if @state == new_state_name
87
+
88
+ if current_state && !current_state.valid_transition?(new_state_name)
89
+ valid = current_state.transitions.map(&:to_s).join(', ')
90
+ msg = "#{self.class} can't change state from '#{@state}' to '#{new_state_name}', only to: #{valid}"
91
+ raise ArgumentError, msg
92
+ end
93
+
94
+ unless (new_state = self.class.states[new_state_name])
95
+ new_state_name == self.class.start_state or raise ArgumentError, "invalid state for #{self.class}: #{new_state_name}"
96
+ end
97
+
98
+ new_state
99
+ end
100
+
101
+ def transition_with_callbacks!(new_state)
102
+ transition! new_state.name
103
+ new_state.call(self)
104
+ end
105
+
106
+ def current_state
107
+ self.class.states[@state]
108
+ end
109
+
110
+ class State
111
+ attr_reader :name, :transitions
112
+
113
+ def initialize(name, transitions, &block)
114
+ @name = name
115
+ @block = block
116
+ @transitions = if transitions
117
+ Array(transitions).map(&:to_sym)
118
+ end
119
+ end
120
+
121
+ def call(obj)
122
+ obj.instance_eval(&@block) if @block
123
+ end
124
+
125
+ def valid_transition?(new_state)
126
+ # All transitions are allowed if none are expressly declared
127
+ !@transitions || @transitions.include?(new_state.to_sym)
128
+ end
129
+ end
130
+ end
131
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Listen
4
+ class Listener
5
+ class Config
6
+ DEFAULTS = {
7
+ # Listener options
8
+ debug: false, # TODO: is this broken?
9
+ wait_for_delay: nil, # NOTE: should be provided by adapter if possible
10
+ relative: false,
11
+
12
+ # Backend selecting options
13
+ force_polling: false,
14
+ polling_fallback_message: nil
15
+ }.freeze
16
+
17
+ def initialize(opts)
18
+ @options = DEFAULTS.merge(opts)
19
+ @relative = @options[:relative]
20
+ @min_delay_between_events = @options[:wait_for_delay]
21
+ @silencer_rules = @options # silencer will extract what it needs
22
+ end
23
+
24
+ def relative?
25
+ @relative
26
+ end
27
+
28
+ attr_reader :min_delay_between_events, :silencer_rules
29
+
30
+ def adapter_instance_options(klass)
31
+ valid_keys = klass.const_get('DEFAULTS').keys
32
+ Hash[@options.select { |key, _| valid_keys.include?(key) }]
33
+ end
34
+
35
+ def adapter_select_options
36
+ valid_keys = %w[force_polling polling_fallback_message].map(&:to_sym)
37
+ Hash[@options.select { |key, _| valid_keys.include?(key) }]
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,136 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'English'
4
+
5
+ require 'listen/version'
6
+
7
+ require 'listen/backend'
8
+
9
+ require 'listen/silencer'
10
+ require 'listen/silencer/controller'
11
+
12
+ require 'listen/queue_optimizer'
13
+
14
+ require 'listen/fsm'
15
+
16
+ require 'listen/event/loop'
17
+ require 'listen/event/queue'
18
+ require 'listen/event/config'
19
+
20
+ require 'listen/listener/config'
21
+
22
+ module Listen
23
+ class Listener
24
+ include Listen::FSM
25
+
26
+ # Initializes the directories listener.
27
+ #
28
+ # @param [String] directory the directories to listen to
29
+ # @param [Hash] options the listen options (see Listen::Listener::Options)
30
+ #
31
+ # @yield [modified, added, removed] the changed files
32
+ # @yieldparam [Array<String>] modified the list of modified files
33
+ # @yieldparam [Array<String>] added the list of added files
34
+ # @yieldparam [Array<String>] removed the list of removed files
35
+ #
36
+ # rubocop:disable Metrics/MethodLength
37
+ def initialize(*dirs, &block)
38
+ options = dirs.last.is_a?(Hash) ? dirs.pop : {}
39
+
40
+ @config = Config.new(options)
41
+
42
+ eq_config = Event::Queue::Config.new(@config.relative?)
43
+ queue = Event::Queue.new(eq_config)
44
+
45
+ silencer = Silencer.new
46
+ rules = @config.silencer_rules
47
+ @silencer_controller = Silencer::Controller.new(silencer, rules)
48
+
49
+ @backend = Backend.new(dirs, queue, silencer, @config)
50
+
51
+ optimizer_config = QueueOptimizer::Config.new(@backend, silencer)
52
+
53
+ pconfig = Event::Config.new(
54
+ self,
55
+ queue,
56
+ QueueOptimizer.new(optimizer_config),
57
+ @backend.min_delay_between_events,
58
+ &block)
59
+
60
+ @processor = Event::Loop.new(pconfig)
61
+
62
+ initialize_fsm
63
+ end
64
+ # rubocop:enable Metrics/MethodLength
65
+
66
+ start_state :initializing
67
+
68
+ state :initializing, to: [:backend_started, :stopped]
69
+
70
+ state :backend_started, to: [:processing_events, :stopped] do
71
+ @backend.start
72
+ end
73
+
74
+ state :processing_events, to: [:paused, :stopped] do
75
+ @processor.start
76
+ end
77
+
78
+ state :paused, to: [:processing_events, :stopped] do
79
+ @processor.pause
80
+ end
81
+
82
+ state :stopped, to: [:backend_started] do
83
+ @backend.stop # halt events ASAP
84
+ @processor.stop
85
+ end
86
+
87
+ # Starts processing events and starts adapters
88
+ # or resumes invoking callbacks if paused
89
+ def start
90
+ case state
91
+ when :initializing
92
+ transition :backend_started
93
+ transition :processing_events
94
+ when :paused
95
+ transition :processing_events
96
+ else
97
+ raise ArgumentError, "cannot start from state #{state.inspect}"
98
+ end
99
+ end
100
+
101
+ # Stops both listening for events and processing them
102
+ def stop
103
+ transition :stopped
104
+ end
105
+
106
+ # Stops invoking callbacks (messages pile up)
107
+ def pause
108
+ transition :paused
109
+ end
110
+
111
+ # processing means callbacks are called
112
+ def processing?
113
+ state == :processing_events
114
+ end
115
+
116
+ def paused?
117
+ state == :paused
118
+ end
119
+
120
+ def stopped?
121
+ state == :stopped
122
+ end
123
+
124
+ def ignore(regexps)
125
+ @silencer_controller.append_ignores(regexps)
126
+ end
127
+
128
+ def ignore!(regexps)
129
+ @silencer_controller.replace_with_bang_ignores(regexps)
130
+ end
131
+
132
+ def only(regexps)
133
+ @silencer_controller.replace_with_only(regexps)
134
+ end
135
+ end
136
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Listen
4
+ @logger = nil
5
+
6
+ # Listen.logger will always be present.
7
+ # If you don't want logging, set Listen.logger = ::Logger.new('/dev/null', level: ::Logger::UNKNOWN)
8
+
9
+ @adapter_warn_behavior = :warn
10
+
11
+ class << self
12
+ attr_writer :logger
13
+ attr_accessor :adapter_warn_behavior
14
+
15
+ def logger
16
+ @logger ||= default_logger
17
+ end
18
+
19
+ def adapter_warn(message)
20
+ case ENV['LISTEN_GEM_ADAPTER_WARN_BEHAVIOR']&.to_sym || adapter_warn_behavior_callback(message)
21
+ when :log
22
+ logger.warn(message)
23
+ when :silent, nil, false
24
+ # do nothing
25
+ else # :warn
26
+ warn(message)
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ def default_logger
33
+ level =
34
+ case ENV['LISTEN_GEM_DEBUGGING'].to_s
35
+ when /debug|2/i
36
+ ::Logger::DEBUG
37
+ when /info|true|yes|1/i
38
+ ::Logger::INFO
39
+ when /warn/i
40
+ ::Logger::WARN
41
+ when /fatal/i
42
+ ::Logger::FATAL
43
+ else
44
+ ::Logger::ERROR
45
+ end
46
+
47
+ ::Logger.new(STDERR, level: level)
48
+ end
49
+
50
+ def adapter_warn_behavior_callback(message)
51
+ if adapter_warn_behavior.respond_to?(:call)
52
+ case behavior = adapter_warn_behavior.call(message)
53
+ when Symbol
54
+ behavior
55
+ when false, nil
56
+ :silent
57
+ else
58
+ :warn
59
+ end
60
+ else
61
+ adapter_warn_behavior
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Listen
4
+ module MonotonicTime
5
+ class << self
6
+ if defined?(Process::CLOCK_MONOTONIC)
7
+
8
+ def now
9
+ Process.clock_gettime(Process::CLOCK_MONOTONIC)
10
+ end
11
+
12
+ elsif defined?(Process::CLOCK_MONOTONIC_RAW)
13
+
14
+ def now
15
+ Process.clock_gettime(Process::CLOCK_MONOTONIC_RAW)
16
+ end
17
+
18
+ else
19
+
20
+ def now
21
+ Time.now.to_f
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Listen
4
+ class Options
5
+ def initialize(opts, defaults)
6
+ @options = {}
7
+ given_options = opts.dup
8
+ defaults.each_key do |key|
9
+ @options[key] = given_options.delete(key) || defaults[key]
10
+ end
11
+
12
+ given_options.empty? or raise ArgumentError, "Unknown options: #{given_options.inspect}"
13
+ end
14
+
15
+ def respond_to_missing?(name, *_)
16
+ @options.has_key?(name)
17
+ end
18
+
19
+ def method_missing(name, *_)
20
+ respond_to_missing?(name) or raise NameError, "Bad option: #{name.inspect} (valid:#{@options.keys.inspect})"
21
+ @options[name]
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,129 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Listen
4
+ class QueueOptimizer
5
+ class Config
6
+ def initialize(adapter_class, silencer)
7
+ @adapter_class = adapter_class
8
+ @silencer = silencer
9
+ end
10
+
11
+ def exist?(path)
12
+ Pathname(path).exist?
13
+ end
14
+
15
+ def silenced?(path, type)
16
+ @silencer.silenced?(path, type)
17
+ end
18
+
19
+ def debug(*args, &block)
20
+ Listen.logger.debug(*args, &block)
21
+ end
22
+ end
23
+
24
+ def smoosh_changes(changes)
25
+ # TODO: adapter could be nil at this point (shutdown)
26
+ cookies = changes.group_by do |_, _, _, _, options|
27
+ (options || {})[:cookie]
28
+ end
29
+ _squash_changes(_reinterpret_related_changes(cookies))
30
+ end
31
+
32
+ def initialize(config)
33
+ @config = config
34
+ end
35
+
36
+ private
37
+
38
+ attr_reader :config
39
+
40
+ # groups changes into the expected structure expected by
41
+ # clients
42
+ def _squash_changes(changes)
43
+ # We combine here for backward compatibility
44
+ # Newer clients should receive dir and path separately
45
+ changes = changes.map { |change, dir, path| [change, dir + path] }
46
+
47
+ actions = changes.group_by(&:last).map do |path, action_list|
48
+ [_logical_action_for(path, action_list.map(&:first)), path.to_s]
49
+ end
50
+
51
+ config.debug("listen: raw changes: #{actions.inspect}")
52
+
53
+ { modified: [], added: [], removed: [] }.tap do |squashed|
54
+ actions.each do |type, path|
55
+ squashed[type] << path unless type.nil?
56
+ end
57
+ config.debug("listen: final changes: #{squashed.inspect}")
58
+ end
59
+ end
60
+
61
+ def _logical_action_for(path, actions)
62
+ actions << :added if actions.delete(:moved_to)
63
+ actions << :removed if actions.delete(:moved_from)
64
+
65
+ modified = actions.find { |x| x == :modified }
66
+ _calculate_add_remove_difference(actions, path, modified)
67
+ end
68
+
69
+ def _calculate_add_remove_difference(actions, path, default_if_exists)
70
+ added = actions.count { |x| x == :added }
71
+ removed = actions.count { |x| x == :removed }
72
+ diff = added - removed
73
+
74
+ # TODO: avoid checking if path exists and instead assume the events are
75
+ # in order (if last is :removed, it doesn't exist, etc.)
76
+ if config.exist?(path)
77
+ if diff > 0
78
+ :added
79
+ elsif diff.zero? && added > 0
80
+ :modified
81
+ else
82
+ default_if_exists
83
+ end
84
+ else
85
+ diff < 0 ? :removed : nil
86
+ end
87
+ end
88
+
89
+ # remove extraneous rb-inotify events, keeping them only if it's a possible
90
+ # editor rename() call (e.g. Kate and Sublime)
91
+ def _reinterpret_related_changes(cookies)
92
+ table = { moved_to: :added, moved_from: :removed }
93
+ cookies.flat_map do |_, changes|
94
+ if (editor_modified = editor_modified?(changes))
95
+ [[:modified, *editor_modified]]
96
+ else
97
+ not_silenced = changes.reject do |type, _, _, path, _|
98
+ config.silenced?(Pathname(path), type)
99
+ end
100
+ not_silenced.map do |_, change, dir, path, _|
101
+ [table.fetch(change, change), dir, path]
102
+ end
103
+ end
104
+ end
105
+ end
106
+
107
+ def editor_modified?(changes)
108
+ return unless changes.size == 2
109
+
110
+ from_type = from = nil
111
+ to_type = to_dir = to = nil
112
+
113
+ changes.each do |data|
114
+ case data[1]
115
+ when :moved_from
116
+ from_type, _from_change, _, from, = data
117
+ when :moved_to
118
+ to_type, _to_change, to_dir, to, = data
119
+ end
120
+ end
121
+
122
+ # Expect an ignored moved_from and non-ignored moved_to
123
+ # to qualify as an "editor modify"
124
+ if from && to && config.silenced?(Pathname(from), from_type) && !config.silenced?(Pathname(to), to_type)
125
+ [to_dir, to]
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Listen
4
+ # @private api
5
+ class Record
6
+ # Represents a directory entry (dir or file)
7
+ class Entry
8
+ # file: "/home/me/watched_dir", "app/models", "foo.rb"
9
+ # dir, "/home/me/watched_dir", "."
10
+ def initialize(root, relative, name = nil)
11
+ @root = root
12
+ @relative = relative
13
+ @name = name
14
+ end
15
+
16
+ attr_reader :root, :relative, :name
17
+
18
+ def children
19
+ child_relative = _join
20
+ (_entries(sys_path) - %w[. ..]).map do |name|
21
+ Entry.new(@root, child_relative, name)
22
+ end
23
+ end
24
+
25
+ def meta
26
+ lstat = ::File.lstat(sys_path)
27
+ { mtime: lstat.mtime.to_f, mode: lstat.mode, size: lstat.size }
28
+ end
29
+
30
+ # record hash is e.g.
31
+ # if @record["/home/me/watched_dir"]["project/app/models"]["foo.rb"]
32
+ # if @record["/home/me/watched_dir"]["project/app"]["models"]
33
+ # record_dir_key is "project/app/models"
34
+ def record_dir_key
35
+ ::File.join(*[@relative, @name].compact)
36
+ end
37
+
38
+ def sys_path
39
+ # Use full path in case someone uses chdir
40
+ ::File.join(*[@root, @relative, @name].compact)
41
+ end
42
+
43
+ def real_path
44
+ @real_path ||= ::File.realpath(sys_path)
45
+ end
46
+
47
+ private
48
+
49
+ def _join
50
+ args = [@relative, @name].compact
51
+ args.empty? ? nil : ::File.join(*args)
52
+ end
53
+
54
+ def _entries(dir)
55
+ return Dir.entries(dir) unless RUBY_ENGINE == 'jruby'
56
+
57
+ # JRuby inconsistency workaround, see:
58
+ # https://github.com/jruby/jruby/issues/3840
59
+ exists = ::File.exist?(dir)
60
+ directory = ::File.directory?(dir)
61
+ return Dir.entries(dir) unless exists && !directory
62
+ raise Errno::ENOTDIR, dir
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'set'
4
+ require 'listen/error'
5
+
6
+ module Listen
7
+ # @private api
8
+ class Record
9
+ class SymlinkDetector
10
+ README_URL = 'https://github.com/guard/listen/blob/master/README.md'
11
+
12
+ SYMLINK_LOOP_ERROR = <<-EOS.freeze
13
+ ** ERROR: directory is already being watched! **
14
+
15
+ Directory: %s
16
+
17
+ is already being watched through: %s
18
+
19
+ MORE INFO: #{README_URL}
20
+ EOS
21
+
22
+ Error = ::Listen::Error # for backward compatibility
23
+
24
+ def initialize
25
+ @real_dirs = Set.new
26
+ end
27
+
28
+ def verify_unwatched!(entry)
29
+ real_path = entry.real_path
30
+ @real_dirs.add?(real_path) or _fail(entry.sys_path, real_path)
31
+ end
32
+
33
+ # Leaving this stub here since some warning work-arounds were referring to it.
34
+ # Deprecated. Will be removed in Listen v4.0.
35
+ def warn(message)
36
+ Listen.adapter_warn(message)
37
+ end
38
+
39
+ private
40
+
41
+ def _fail(symlinked, real_path)
42
+ warn(format(SYMLINK_LOOP_ERROR, symlinked, real_path))
43
+ raise ::Listen::Error::SymlinkLoop, 'Failed due to looped symlinks'
44
+ end
45
+ end
46
+ end
47
+ end