brut 0.16.0.pre.pre → 0.17.0

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 (456) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +6 -0
  3. data/CHANGELOG.md +9 -3
  4. data/Gemfile.lock +44 -34
  5. data/bin/docs +7 -0
  6. data/brut-css/package-lock.json +2 -2
  7. data/brut-css/package.json +1 -1
  8. data/brut-js/package-lock.json +311 -2
  9. data/brut-js/package.json +2 -1
  10. data/brut.gemspec +2 -0
  11. data/brutrb.com/jobs.md +1 -1
  12. data/docs/404.html +2 -2
  13. data/docs/adrs.html +4 -4
  14. data/docs/ai.html +4 -4
  15. data/docs/api/Brut/BackEnd/SeedData.html +2 -2
  16. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +2 -2
  17. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +2 -2
  18. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +2 -2
  19. data/docs/api/Brut/BackEnd/Sidekiq.html +2 -2
  20. data/docs/api/Brut/BackEnd/Validators/FormValidator.html +2 -2
  21. data/docs/api/Brut/BackEnd/Validators.html +2 -2
  22. data/docs/api/Brut/BackEnd.html +2 -2
  23. data/docs/api/Brut/CLI/App.html +2 -2
  24. data/docs/api/Brut/CLI/AppRunner.html +2 -2
  25. data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +2 -2
  26. data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +2 -2
  27. data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +3 -3
  28. data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +2 -2
  29. data/docs/api/Brut/CLI/Apps/BuildAssets.html +2 -2
  30. data/docs/api/Brut/CLI/Apps/DB/Create.html +2 -2
  31. data/docs/api/Brut/CLI/Apps/DB/Drop.html +2 -2
  32. data/docs/api/Brut/CLI/Apps/DB/Migrate.html +2 -2
  33. data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +2 -2
  34. data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +2 -2
  35. data/docs/api/Brut/CLI/Apps/DB/Seed.html +2 -2
  36. data/docs/api/Brut/CLI/Apps/DB/Status.html +2 -2
  37. data/docs/api/Brut/CLI/Apps/DB.html +2 -2
  38. data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +2 -2
  39. data/docs/api/Brut/CLI/Apps/DeployBase.html +2 -2
  40. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +8 -6
  41. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +2 -2
  42. data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +2 -2
  43. data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +2 -2
  44. data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +2 -2
  45. data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +2 -2
  46. data/docs/api/Brut/CLI/Apps/Scaffold/DbModel.html +2 -2
  47. data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +2 -2
  48. data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +2 -2
  49. data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +2 -2
  50. data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +2 -2
  51. data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +2 -2
  52. data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +2 -2
  53. data/docs/api/Brut/CLI/Apps/Scaffold.html +2 -2
  54. data/docs/api/Brut/CLI/Apps/Test/Audit.html +15 -7
  55. data/docs/api/Brut/CLI/Apps/Test/E2e.html +2 -2
  56. data/docs/api/Brut/CLI/Apps/Test/JS.html +2 -2
  57. data/docs/api/Brut/CLI/Apps/Test/Run.html +2 -2
  58. data/docs/api/Brut/CLI/Apps/Test.html +2 -2
  59. data/docs/api/Brut/CLI/Apps.html +2 -2
  60. data/docs/api/Brut/CLI/Command.html +2 -2
  61. data/docs/api/Brut/CLI/Error.html +2 -2
  62. data/docs/api/Brut/CLI/ExecutionResults/Result.html +2 -2
  63. data/docs/api/Brut/CLI/ExecutionResults.html +2 -2
  64. data/docs/api/Brut/CLI/Executor.html +2 -2
  65. data/docs/api/Brut/CLI/InvalidOption.html +2 -2
  66. data/docs/api/Brut/CLI/Options.html +2 -2
  67. data/docs/api/Brut/CLI/Output.html +2 -2
  68. data/docs/api/Brut/CLI/SystemExecError.html +2 -2
  69. data/docs/api/Brut/CLI.html +2 -2
  70. data/docs/api/Brut/FactoryBot.html +2 -2
  71. data/docs/api/Brut/Framework/App.html +2 -2
  72. data/docs/api/Brut/Framework/Config.html +2 -2
  73. data/docs/api/Brut/Framework/Container.html +11 -7
  74. data/docs/api/Brut/Framework/Error.html +2 -2
  75. data/docs/api/Brut/Framework/Errors/AbstractMethod.html +2 -2
  76. data/docs/api/Brut/Framework/Errors/Bug.html +2 -2
  77. data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +2 -2
  78. data/docs/api/Brut/Framework/Errors/MissingParameter.html +2 -2
  79. data/docs/api/Brut/Framework/Errors/NoClassForPath.html +2 -2
  80. data/docs/api/Brut/Framework/Errors/NotFound.html +2 -2
  81. data/docs/api/Brut/Framework/Errors/NotImplemented.html +2 -2
  82. data/docs/api/Brut/Framework/Errors.html +2 -2
  83. data/docs/api/Brut/Framework/FussyTypeEnforcement.html +2 -2
  84. data/docs/api/Brut/Framework/MCP.html +3 -3
  85. data/docs/api/Brut/Framework/ProjectEnvironment.html +2 -2
  86. data/docs/api/Brut/Framework.html +2 -2
  87. data/docs/api/Brut/FrontEnd/AssetPathResolver.html +2 -2
  88. data/docs/api/Brut/FrontEnd/Component/Helpers.html +2 -2
  89. data/docs/api/Brut/FrontEnd/Component.html +2 -2
  90. data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +2 -2
  91. data/docs/api/Brut/FrontEnd/Components/FormTag.html +2 -2
  92. data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +2 -2
  93. data/docs/api/Brut/FrontEnd/Components/Input.html +2 -2
  94. data/docs/api/Brut/FrontEnd/Components/Inputs/ButtonTag.html +2 -2
  95. data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +2 -2
  96. data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +2 -2
  97. data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +2 -2
  98. data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +2 -2
  99. data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +2 -2
  100. data/docs/api/Brut/FrontEnd/Components/Inputs.html +2 -2
  101. data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +2 -2
  102. data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +2 -2
  103. data/docs/api/Brut/FrontEnd/Components/TimeTag.html +2 -2
  104. data/docs/api/Brut/FrontEnd/Components/Traceparent.html +2 -2
  105. data/docs/api/Brut/FrontEnd/Components.html +2 -2
  106. data/docs/api/Brut/FrontEnd/CsrfProtector.html +2 -2
  107. data/docs/api/Brut/FrontEnd/Download.html +2 -2
  108. data/docs/api/Brut/FrontEnd/Flash.html +2 -2
  109. data/docs/api/Brut/FrontEnd/Form.html +2 -2
  110. data/docs/api/Brut/FrontEnd/Forms/Button.html +2 -2
  111. data/docs/api/Brut/FrontEnd/Forms/ButtonInputDefinition.html +2 -2
  112. data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +2 -2
  113. data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +2 -2
  114. data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +2 -2
  115. data/docs/api/Brut/FrontEnd/Forms/Input.html +2 -2
  116. data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +2 -2
  117. data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +2 -2
  118. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +2 -2
  119. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +2 -2
  120. data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +2 -2
  121. data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +2 -2
  122. data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +2 -2
  123. data/docs/api/Brut/FrontEnd/Forms.html +2 -2
  124. data/docs/api/Brut/FrontEnd/GenericResponse.html +2 -2
  125. data/docs/api/Brut/FrontEnd/Handler.html +2 -2
  126. data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +2 -2
  127. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +2 -2
  128. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +2 -2
  129. data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +2 -2
  130. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +2 -2
  131. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +2 -2
  132. data/docs/api/Brut/FrontEnd/Handlers.html +2 -2
  133. data/docs/api/Brut/FrontEnd/HandlingResults.html +2 -2
  134. data/docs/api/Brut/FrontEnd/HttpMethod.html +2 -2
  135. data/docs/api/Brut/FrontEnd/HttpStatus.html +2 -2
  136. data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +2 -2
  137. data/docs/api/Brut/FrontEnd/Layout.html +2 -2
  138. data/docs/api/Brut/FrontEnd/Middleware.html +2 -2
  139. data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +2 -2
  140. data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +2 -2
  141. data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +2 -2
  142. data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +2 -2
  143. data/docs/api/Brut/FrontEnd/Middlewares.html +2 -2
  144. data/docs/api/Brut/FrontEnd/Page.html +2 -2
  145. data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +2 -2
  146. data/docs/api/Brut/FrontEnd/Pages.html +2 -2
  147. data/docs/api/Brut/FrontEnd/RequestContext.html +2 -2
  148. data/docs/api/Brut/FrontEnd/RouteHook.html +2 -2
  149. data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +2 -2
  150. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +2 -2
  151. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +2 -2
  152. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +2 -2
  153. data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +2 -2
  154. data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +2 -2
  155. data/docs/api/Brut/FrontEnd/RouteHooks.html +2 -2
  156. data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +2 -2
  157. data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +2 -2
  158. data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +2 -2
  159. data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +2 -2
  160. data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +2 -2
  161. data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +2 -2
  162. data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +2 -2
  163. data/docs/api/Brut/FrontEnd/Routing/Route.html +2 -2
  164. data/docs/api/Brut/FrontEnd/Routing.html +2 -2
  165. data/docs/api/Brut/FrontEnd/Session.html +2 -2
  166. data/docs/api/Brut/FrontEnd.html +2 -2
  167. data/docs/api/Brut/I18n/BaseMethods.html +2 -2
  168. data/docs/api/Brut/I18n/ForBackEnd.html +2 -2
  169. data/docs/api/Brut/I18n/ForCLI.html +2 -2
  170. data/docs/api/Brut/I18n/ForHTML.html +2 -2
  171. data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +2 -2
  172. data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +2 -2
  173. data/docs/api/Brut/I18n.html +2 -2
  174. data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +2 -2
  175. data/docs/api/Brut/Instrumentation/Methods/ClassMethods.html +2 -2
  176. data/docs/api/Brut/Instrumentation/Methods.html +2 -2
  177. data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +2 -2
  178. data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +2 -2
  179. data/docs/api/Brut/Instrumentation/OpenTelemetry.html +2 -2
  180. data/docs/api/Brut/Instrumentation.html +2 -2
  181. data/docs/api/Brut/RubocopConfig.html +2 -2
  182. data/docs/api/Brut/SinatraHelpers/ClassMethods.html +2 -2
  183. data/docs/api/Brut/SinatraHelpers.html +2 -2
  184. data/docs/api/Brut/SpecSupport/ClockSupport.html +2 -2
  185. data/docs/api/Brut/SpecSupport/ComponentSupport.html +2 -2
  186. data/docs/api/Brut/SpecSupport/E2ETestServer.html +2 -2
  187. data/docs/api/Brut/SpecSupport/E2eSupport.html +2 -2
  188. data/docs/api/Brut/SpecSupport/EnhancedNode.html +2 -2
  189. data/docs/api/Brut/SpecSupport/FlashSupport.html +2 -2
  190. data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +2 -2
  191. data/docs/api/Brut/SpecSupport/GeneralSupport.html +2 -2
  192. data/docs/api/Brut/SpecSupport/HandlerSupport.html +2 -2
  193. data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +2 -2
  194. data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +2 -2
  195. data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +2 -2
  196. data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +2 -2
  197. data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +2 -2
  198. data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +2 -2
  199. data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +2 -2
  200. data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +2 -2
  201. data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +2 -2
  202. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +2 -2
  203. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +2 -2
  204. data/docs/api/Brut/SpecSupport/Matchers.html +2 -2
  205. data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +2 -2
  206. data/docs/api/Brut/SpecSupport/RSpecSetup.html +2 -2
  207. data/docs/api/Brut/SpecSupport/SessionSupport.html +2 -2
  208. data/docs/api/Brut/SpecSupport.html +2 -2
  209. data/docs/api/Brut/TUI/AnsiEscapeCode/Mod.html +409 -0
  210. data/docs/api/Brut/TUI/AnsiEscapeCode.html +426 -0
  211. data/docs/api/Brut/TUI/EventLoop/Deque.html +531 -0
  212. data/docs/api/Brut/TUI/EventLoop.html +676 -0
  213. data/docs/api/Brut/TUI/Events/BaseEvent.html +449 -0
  214. data/docs/api/Brut/TUI/Events/EventBus.html +485 -0
  215. data/docs/api/Brut/TUI/Events/EventLoopStarted.html +211 -0
  216. data/docs/api/Brut/TUI/Events/Exception.html +523 -0
  217. data/docs/api/Brut/TUI/Events/Tick.html +294 -0
  218. data/docs/api/Brut/TUI/Events.html +131 -0
  219. data/docs/api/Brut/TUI/MarkupString.html +537 -0
  220. data/docs/api/Brut/TUI/Script/BlockStep.html +300 -0
  221. data/docs/api/Brut/TUI/Script/Events/CommandExecutionFailed.html +252 -0
  222. data/docs/api/Brut/TUI/Script/Events/CommandExecutionSucceeded.html +163 -0
  223. data/docs/api/Brut/TUI/Script/Events/CommandStdErr.html +163 -0
  224. data/docs/api/Brut/TUI/Script/Events/CommandStdOut.html +300 -0
  225. data/docs/api/Brut/TUI/Script/Events/ExecutingCommand.html +298 -0
  226. data/docs/api/Brut/TUI/Script/Events/Message.html +345 -0
  227. data/docs/api/Brut/TUI/Script/Events/PhaseCompleted.html +229 -0
  228. data/docs/api/Brut/TUI/Script/Events/PhaseStarted.html +350 -0
  229. data/docs/api/Brut/TUI/Script/Events/ScriptCompleted.html +282 -0
  230. data/docs/api/Brut/TUI/Script/Events/ScriptStarted.html +343 -0
  231. data/docs/api/Brut/TUI/Script/Events/StepCompleted.html +163 -0
  232. data/docs/api/Brut/TUI/Script/Events/StepStarted.html +346 -0
  233. data/docs/api/Brut/TUI/Script/Events.html +115 -0
  234. data/docs/api/Brut/TUI/Script/ExecStep/ProcessStatusFailed.html +210 -0
  235. data/docs/api/Brut/TUI/Script/ExecStep.html +493 -0
  236. data/docs/api/Brut/TUI/Script/LoggingSubscriber.html +914 -0
  237. data/docs/api/Brut/TUI/Script/PutsSubscriber.html +783 -0
  238. data/docs/api/Brut/TUI/Script/Step.html +313 -0
  239. data/docs/api/Brut/TUI/Script.html +1250 -0
  240. data/docs/api/Brut/TUI/Terminal.html +593 -0
  241. data/docs/api/Brut/TUI/TerminalTheme.html +1403 -0
  242. data/docs/api/Brut/TUI/Themes/Dark.html +706 -0
  243. data/docs/api/Brut/TUI/Themes/Light.html +804 -0
  244. data/docs/api/Brut/TUI/Themes/None.html +218 -0
  245. data/docs/api/Brut/TUI/Themes.html +115 -0
  246. data/docs/api/Brut/TUI.html +129 -0
  247. data/docs/api/Brut.html +4 -4
  248. data/docs/api/Clock.html +2 -2
  249. data/docs/api/ModuleName.html +2 -2
  250. data/docs/api/RichString.html +2 -2
  251. data/docs/api/SemanticLogger/Appender/Async.html +2 -2
  252. data/docs/api/Sequel/Extensions/BrutInstrumentation.html +2 -2
  253. data/docs/api/Sequel/Extensions/BrutMigrations.html +2 -2
  254. data/docs/api/Sequel/Extensions.html +2 -2
  255. data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +2 -2
  256. data/docs/api/Sequel/Plugins/CreatedAt.html +2 -2
  257. data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +2 -2
  258. data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +2 -2
  259. data/docs/api/Sequel/Plugins/ExternalId.html +2 -2
  260. data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +2 -2
  261. data/docs/api/Sequel/Plugins/FindBang.html +2 -2
  262. data/docs/api/Sequel/Plugins.html +2 -2
  263. data/docs/api/Sequel.html +2 -2
  264. data/docs/api/_index.html +247 -2
  265. data/docs/api/class_list.html +1 -1
  266. data/docs/api/file.README.html +2 -2
  267. data/docs/api/index.html +2 -2
  268. data/docs/api/method_list.html +1551 -431
  269. data/docs/api/top-level-namespace.html +2 -2
  270. data/docs/assets/{app.Dm7v_ouO.js → app.B8jAEB7R.js} +1 -1
  271. data/docs/assets/chunks/@localSearchIndexroot.DJ8mocCj.js +1 -0
  272. data/docs/assets/chunks/{VPLocalSearchBox.DQK6jQou.js → VPLocalSearchBox.gF-Po_fz.js} +1 -1
  273. data/docs/assets/chunks/{theme.BuExsdM9.js → theme.BjPAOJkz.js} +2 -2
  274. data/docs/assets/{components.md.Dfd3w6UW.js → components.md.Ber8UBM0.js} +3 -3
  275. data/docs/assets/{configuration.md.DTYoV2Ea.js → configuration.md.DrJ6YVoZ.js} +1 -1
  276. data/docs/assets/{deployment.md.C1u5ep0g.js → deployment.md.CHTx2eTR.js} +10 -3
  277. data/docs/assets/{deployment.md.C1u5ep0g.lean.js → deployment.md.CHTx2eTR.lean.js} +1 -1
  278. data/docs/assets/{forms.md.DEkmJUvb.js → forms.md.RK0zkhm0.js} +2 -2
  279. data/docs/assets/{forms.md.DEkmJUvb.lean.js → forms.md.RK0zkhm0.lean.js} +1 -1
  280. data/docs/assets/{getting-started.md.DO-4eoGW.js → getting-started.md.CGJ44juQ.js} +2 -2
  281. data/docs/assets/jobs.md.Bi3qb3v6.js +25 -0
  282. data/docs/assets/jobs.md.Bi3qb3v6.lean.js +1 -0
  283. data/docs/assets/recipes_dev-env-secrets.md.DC_jVY9U.js +12 -0
  284. data/docs/assets/recipes_dev-env-secrets.md.DC_jVY9U.lean.js +1 -0
  285. data/docs/assets/roadmap.md.DqC1Y7Zt.js +1 -0
  286. data/docs/assets/{roadmap.md.CJsbUmK_.lean.js → roadmap.md.DqC1Y7Zt.lean.js} +1 -1
  287. data/docs/assets/{tutorials_02-dialog.md.D2vSjDVf.js → tutorials_02-dialog.md.DE5WfCXI.js} +1 -1
  288. data/docs/assets.html +4 -4
  289. data/docs/brut-js/api/AjaxSubmit.html +1 -1
  290. data/docs/brut-js/api/AjaxSubmit.js.html +1 -1
  291. data/docs/brut-js/api/Autosubmit.html +1 -1
  292. data/docs/brut-js/api/Autosubmit.js.html +1 -1
  293. data/docs/brut-js/api/BaseCustomElement.html +1 -1
  294. data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
  295. data/docs/brut-js/api/BrutCustomElements.html +1 -1
  296. data/docs/brut-js/api/BufferedLogger.html +1 -1
  297. data/docs/brut-js/api/ConfirmSubmit.html +1 -1
  298. data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
  299. data/docs/brut-js/api/ConfirmationDialog.html +1 -1
  300. data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
  301. data/docs/brut-js/api/ConstraintViolationMessage.html +1 -1
  302. data/docs/brut-js/api/ConstraintViolationMessage.js.html +1 -1
  303. data/docs/brut-js/api/ConstraintViolationMessages.html +1 -1
  304. data/docs/brut-js/api/ConstraintViolationMessages.js.html +1 -1
  305. data/docs/brut-js/api/CopyToClipboard.html +1 -1
  306. data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
  307. data/docs/brut-js/api/Form.html +1 -1
  308. data/docs/brut-js/api/Form.js.html +1 -1
  309. data/docs/brut-js/api/I18nTranslation.html +1 -1
  310. data/docs/brut-js/api/I18nTranslation.js.html +1 -1
  311. data/docs/brut-js/api/LocaleDetection.html +1 -1
  312. data/docs/brut-js/api/LocaleDetection.js.html +1 -1
  313. data/docs/brut-js/api/Logger.html +1 -1
  314. data/docs/brut-js/api/Logger.js.html +1 -1
  315. data/docs/brut-js/api/Message.html +1 -1
  316. data/docs/brut-js/api/Message.js.html +1 -1
  317. data/docs/brut-js/api/PrefixedLogger.html +1 -1
  318. data/docs/brut-js/api/RichString.html +1 -1
  319. data/docs/brut-js/api/RichString.js.html +1 -1
  320. data/docs/brut-js/api/Tabs.html +1 -1
  321. data/docs/brut-js/api/Tabs.js.html +1 -1
  322. data/docs/brut-js/api/Toast.html +1 -1
  323. data/docs/brut-js/api/Toast.js.html +1 -1
  324. data/docs/brut-js/api/Tracing.html +1 -1
  325. data/docs/brut-js/api/Tracing.js.html +1 -1
  326. data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
  327. data/docs/brut-js/api/external-Performance.html +1 -1
  328. data/docs/brut-js/api/external-Promise.html +1 -1
  329. data/docs/brut-js/api/external-ValidityState.html +1 -1
  330. data/docs/brut-js/api/external-Window.html +1 -1
  331. data/docs/brut-js/api/external-fetch.html +1 -1
  332. data/docs/brut-js/api/global.html +1 -1
  333. data/docs/brut-js/api/index.html +1 -1
  334. data/docs/brut-js/api/index.js.html +1 -1
  335. data/docs/brut-js/api/module-testing.html +1 -1
  336. data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
  337. data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
  338. data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
  339. data/docs/brut-js/api/testing.DOMCreator.html +1 -1
  340. data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
  341. data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
  342. data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
  343. data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
  344. data/docs/brut-js/api/testing_index.js.html +1 -1
  345. data/docs/brut-js.html +4 -4
  346. data/docs/business-logic.html +4 -4
  347. data/docs/cli.html +4 -4
  348. data/docs/components.html +8 -8
  349. data/docs/configuration.html +5 -5
  350. data/docs/css.html +4 -4
  351. data/docs/custom-element-tests.html +4 -4
  352. data/docs/database-access.html +4 -4
  353. data/docs/database-schema.html +4 -4
  354. data/docs/deployment.html +13 -6
  355. data/docs/dev-environment.html +4 -4
  356. data/docs/dir-structure.html +4 -4
  357. data/docs/doc-conventions.html +4 -4
  358. data/docs/end-to-end-tests.html +4 -4
  359. data/docs/features.html +4 -4
  360. data/docs/flash-and-session.html +4 -4
  361. data/docs/form-constraints.html +4 -4
  362. data/docs/forms.html +6 -6
  363. data/docs/getting-started.html +7 -7
  364. data/docs/handlers.html +4 -4
  365. data/docs/hashmap.json +1 -1
  366. data/docs/hooks.html +4 -4
  367. data/docs/i18n.html +4 -4
  368. data/docs/index.html +3 -3
  369. data/docs/instrumentation.html +4 -4
  370. data/docs/javascript.html +4 -4
  371. data/docs/jobs.html +29 -5
  372. data/docs/keyword-injection.html +4 -4
  373. data/docs/layouts.html +4 -4
  374. data/docs/lsp.html +4 -4
  375. data/docs/markdown-examples.html +4 -4
  376. data/docs/middleware.html +4 -4
  377. data/docs/overview.html +4 -4
  378. data/docs/pages.html +4 -4
  379. data/docs/recipes/alternate-layouts.html +5 -5
  380. data/docs/recipes/authentication.html +5 -5
  381. data/docs/recipes/custom-flash.html +5 -5
  382. data/docs/recipes/dev-env-secrets.html +40 -0
  383. data/docs/recipes/form-errors.html +5 -5
  384. data/docs/recipes/indexed-forms.html +5 -5
  385. data/docs/recipes/migrations.html +5 -5
  386. data/docs/recipes/text-field-component.html +5 -5
  387. data/docs/roadmap.html +5 -5
  388. data/docs/routes.html +4 -4
  389. data/docs/security.html +4 -4
  390. data/docs/seed-data.html +4 -4
  391. data/docs/space-time-continuum.html +4 -4
  392. data/docs/tutorial.html +4 -4
  393. data/docs/tutorials/01-intro.html +4 -4
  394. data/docs/tutorials/02-dialog.html +5 -5
  395. data/docs/unit-tests.html +4 -4
  396. data/docs/why.html +4 -4
  397. data/lib/brut/cli/apps/build_assets.rb +1 -1
  398. data/lib/brut/cli/apps/heroku_container_based_deploy.rb +1 -1
  399. data/lib/brut/cli/apps/test.rb +6 -4
  400. data/lib/brut/tui/ansi_escape_code.rb +104 -0
  401. data/lib/brut/tui/event_loop.rb +168 -0
  402. data/lib/brut/tui/events/base_event.rb +29 -0
  403. data/lib/brut/tui/events/event_bus.rb +73 -0
  404. data/lib/brut/tui/events/event_loop_started.rb +5 -0
  405. data/lib/brut/tui/events/exception.rb +24 -0
  406. data/lib/brut/tui/events/tick.rb +12 -0
  407. data/lib/brut/tui/events.rb +7 -0
  408. data/lib/brut/tui/markup_string.rb +68 -0
  409. data/lib/brut/tui/script/block_step.rb +17 -0
  410. data/lib/brut/tui/script/events/command_execution_failed.rb +4 -0
  411. data/lib/brut/tui/script/events/command_execution_succeeded.rb +3 -0
  412. data/lib/brut/tui/script/events/command_std_err.rb +3 -0
  413. data/lib/brut/tui/script/events/command_std_out.rb +13 -0
  414. data/lib/brut/tui/script/events/executing_command.rb +12 -0
  415. data/lib/brut/tui/script/events/message.rb +15 -0
  416. data/lib/brut/tui/script/events/phase_completed.rb +4 -0
  417. data/lib/brut/tui/script/events/phase_started.rb +14 -0
  418. data/lib/brut/tui/script/events/script_completed.rb +5 -0
  419. data/lib/brut/tui/script/events/script_started.rb +12 -0
  420. data/lib/brut/tui/script/events/step_completed.rb +3 -0
  421. data/lib/brut/tui/script/events/step_started.rb +12 -0
  422. data/lib/brut/tui/script/events.rb +14 -0
  423. data/lib/brut/tui/script/exec_step.rb +60 -0
  424. data/lib/brut/tui/script/logging_subscriber.rb +98 -0
  425. data/lib/brut/tui/script/puts_subscriber.rb +109 -0
  426. data/lib/brut/tui/script/step.rb +13 -0
  427. data/lib/brut/tui/script.rb +211 -0
  428. data/lib/brut/tui/terminal.rb +74 -0
  429. data/lib/brut/tui/terminal_theme.rb +140 -0
  430. data/lib/brut/tui/themes/dark.rb +14 -0
  431. data/lib/brut/tui/themes/light.rb +17 -0
  432. data/lib/brut/tui/themes/none.rb +9 -0
  433. data/lib/brut/tui/themes.rb +5 -0
  434. data/lib/brut/tui.rb +15 -0
  435. data/lib/brut/version.rb +1 -1
  436. data/lib/brut.rb +1 -0
  437. data/mkbrut/Gemfile.lock +2 -1
  438. data/mkbrut/lib/mkbrut/version.rb +1 -1
  439. data/mkbrut/templates/segments/Heroku/deploy/Dockerfile +9 -7
  440. data/mkbrut/templates/segments/Heroku/deploy/heroku_config.rb +2 -2
  441. data/specs/brut/tui/ansi_escape_code.spec.rb +30 -0
  442. data/specs/brut/tui/event_loop.spec.rb +70 -0
  443. data/specs/brut/tui/events/base_event.spec.rb +26 -0
  444. data/specs/brut/tui/events/event_bus.spec.rb +141 -0
  445. data/specs/brut/tui/events/exception.spec.rb +19 -0
  446. data/specs/brut/tui/events/test_event.rb +5 -0
  447. data/specs/spec_helper.rb +4 -0
  448. metadata +131 -21
  449. data/docs/assets/chunks/@localSearchIndexroot.BiNFswvo.js +0 -1
  450. data/docs/assets/jobs.md.Bc7Y1YpK.js +0 -1
  451. data/docs/assets/jobs.md.Bc7Y1YpK.lean.js +0 -1
  452. data/docs/assets/roadmap.md.CJsbUmK_.js +0 -1
  453. /data/docs/assets/{components.md.Dfd3w6UW.lean.js → components.md.Ber8UBM0.lean.js} +0 -0
  454. /data/docs/assets/{configuration.md.DTYoV2Ea.lean.js → configuration.md.DrJ6YVoZ.lean.js} +0 -0
  455. /data/docs/assets/{getting-started.md.DO-4eoGW.lean.js → getting-started.md.CGJ44juQ.lean.js} +0 -0
  456. /data/docs/assets/{tutorials_02-dialog.md.D2vSjDVf.lean.js → tutorials_02-dialog.md.DE5WfCXI.lean.js} +0 -0
@@ -0,0 +1,783 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Class: Brut::TUI::Script::PutsSubscriber
8
+
9
+ &mdash; Documentation by YARD 0.9.37
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../../css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="../../../css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Brut::TUI::Script::PutsSubscriber";
19
+ relpath = '../../../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../../../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../../../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../../../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../../../_index.html">Index (P)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../../../Brut.html" title="Brut (module)">Brut</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../../TUI.html" title="Brut::TUI (module)">TUI</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Script.html" title="Brut::TUI::Script (class)">Script</a></span></span>
41
+ &raquo;
42
+ <span class="title">PutsSubscriber</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../../../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Class: Brut::TUI::Script::PutsSubscriber
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName">Object</span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next">Brut::TUI::Script::PutsSubscriber</li>
78
+
79
+ </ul>
80
+ <a href="#" class="inheritanceTree">show all</a>
81
+
82
+ </dd>
83
+ </dl>
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+ <dl>
96
+ <dt>Defined in:</dt>
97
+ <dd>lib/brut/tui/script/puts_subscriber.rb</dd>
98
+ </dl>
99
+
100
+ </div>
101
+
102
+ <h2>Overview</h2><div class="docstring">
103
+ <div class="discussion">
104
+ <p>A subscriber that attempts to provide a user-friend, brief, summarized, fancy
105
+ output for the script that is running. It is intended to show you
106
+ what's happening at a high level, but deferring all details (like child process
107
+ output) to the <span class='object_link'><a href="LoggingSubscriber.html" title="Brut::TUI::Script::LoggingSubscriber (class)">LoggingSubscriber</a></span>'s log file.</p>
108
+
109
+
110
+ </div>
111
+ </div>
112
+ <div class="tags">
113
+
114
+
115
+ </div>
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+ <h2>
124
+ Instance Method Summary
125
+ <small><a href="#" class="summary_toggle">collapse</a></small>
126
+ </h2>
127
+
128
+ <ul class="summary">
129
+
130
+ <li class="public ">
131
+ <span class="summary_signature">
132
+
133
+ <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(progname, terminal:, theme:, stdout: false, stderr: false) &#x21d2; PutsSubscriber </a>
134
+
135
+
136
+
137
+ </span>
138
+
139
+
140
+ <span class="note title constructor">constructor</span>
141
+
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+ <span class="summary_desc"><div class='inline'><p>A new instance of PutsSubscriber.</p>
150
+ </div></span>
151
+
152
+ </li>
153
+
154
+
155
+ <li class="public ">
156
+ <span class="summary_signature">
157
+
158
+ <a href="#on_command_execution_failed-instance_method" title="#on_command_execution_failed (instance method)">#<strong>on_command_execution_failed</strong>(command:) &#x21d2; Object </a>
159
+
160
+
161
+
162
+ </span>
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
+ <span class="summary_desc"><div class='inline'>
173
+ </div></span>
174
+
175
+ </li>
176
+
177
+
178
+ <li class="public ">
179
+ <span class="summary_signature">
180
+
181
+ <a href="#on_command_execution_succeeded-instance_method" title="#on_command_execution_succeeded (instance method)">#<strong>on_command_execution_succeeded</strong>(command:) &#x21d2; Object </a>
182
+
183
+
184
+
185
+ </span>
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+ <span class="summary_desc"><div class='inline'>
196
+ </div></span>
197
+
198
+ </li>
199
+
200
+
201
+ <li class="public ">
202
+ <span class="summary_signature">
203
+
204
+ <a href="#on_command_std_err-instance_method" title="#on_command_std_err (instance method)">#<strong>on_command_std_err</strong>(output:, command:) &#x21d2; Object </a>
205
+
206
+
207
+
208
+ </span>
209
+
210
+
211
+
212
+
213
+
214
+
215
+
216
+
217
+
218
+ <span class="summary_desc"><div class='inline'>
219
+ </div></span>
220
+
221
+ </li>
222
+
223
+
224
+ <li class="public ">
225
+ <span class="summary_signature">
226
+
227
+ <a href="#on_command_std_out-instance_method" title="#on_command_std_out (instance method)">#<strong>on_command_std_out</strong>(output:, command:) &#x21d2; Object </a>
228
+
229
+
230
+
231
+ </span>
232
+
233
+
234
+
235
+
236
+
237
+
238
+
239
+
240
+
241
+ <span class="summary_desc"><div class='inline'>
242
+ </div></span>
243
+
244
+ </li>
245
+
246
+
247
+ <li class="public ">
248
+ <span class="summary_signature">
249
+
250
+ <a href="#on_exception-instance_method" title="#on_exception (instance method)">#<strong>on_exception</strong>(exception:) &#x21d2; Object </a>
251
+
252
+
253
+
254
+ </span>
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+ <span class="summary_desc"><div class='inline'>
265
+ </div></span>
266
+
267
+ </li>
268
+
269
+
270
+ <li class="public ">
271
+ <span class="summary_signature">
272
+
273
+ <a href="#on_executing_command-instance_method" title="#on_executing_command (instance method)">#<strong>on_executing_command</strong>(command:) &#x21d2; Object </a>
274
+
275
+
276
+
277
+ </span>
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+ <span class="summary_desc"><div class='inline'>
288
+ </div></span>
289
+
290
+ </li>
291
+
292
+
293
+ <li class="public ">
294
+ <span class="summary_signature">
295
+
296
+ <a href="#on_message-instance_method" title="#on_message (instance method)">#<strong>on_message</strong>(message:, type:) &#x21d2; Object </a>
297
+
298
+
299
+
300
+ </span>
301
+
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+ <span class="summary_desc"><div class='inline'>
311
+ </div></span>
312
+
313
+ </li>
314
+
315
+
316
+ <li class="public ">
317
+ <span class="summary_signature">
318
+
319
+ <a href="#on_phase_started-instance_method" title="#on_phase_started (instance method)">#<strong>on_phase_started</strong>(description:, step_number:, total_steps:) &#x21d2; Object </a>
320
+
321
+
322
+
323
+ </span>
324
+
325
+
326
+
327
+
328
+
329
+
330
+
331
+
332
+
333
+ <span class="summary_desc"><div class='inline'>
334
+ </div></span>
335
+
336
+ </li>
337
+
338
+
339
+ <li class="public ">
340
+ <span class="summary_signature">
341
+
342
+ <a href="#on_step_started-instance_method" title="#on_step_started (instance method)">#<strong>on_step_started</strong>(description:) &#x21d2; Object </a>
343
+
344
+
345
+
346
+ </span>
347
+
348
+
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+ <span class="summary_desc"><div class='inline'>
357
+ </div></span>
358
+
359
+ </li>
360
+
361
+
362
+ </ul>
363
+
364
+
365
+ <div id="constructor_details" class="method_details_list">
366
+ <h2>Constructor Details</h2>
367
+
368
+ <div class="method_details first">
369
+ <h3 class="signature first" id="initialize-instance_method">
370
+
371
+ #<strong>initialize</strong>(progname, terminal:, theme:, stdout: false, stderr: false) &#x21d2; <tt><span class='object_link'><a href="" title="Brut::TUI::Script::PutsSubscriber (class)">PutsSubscriber</a></span></tt>
372
+
373
+
374
+
375
+
376
+
377
+ </h3><div class="docstring">
378
+ <div class="discussion">
379
+ <p>Returns a new instance of PutsSubscriber.</p>
380
+
381
+
382
+ </div>
383
+ </div>
384
+ <div class="tags">
385
+
386
+
387
+ </div><table class="source_code">
388
+ <tr>
389
+ <td>
390
+ <pre class="lines">
391
+
392
+
393
+ 6
394
+ 7
395
+ 8
396
+ 9
397
+ 10
398
+ 11
399
+ 12
400
+ 13
401
+ 14
402
+ 15
403
+ 16</pre>
404
+ </td>
405
+ <td>
406
+ <pre class="code"><span class="info file"># File 'lib/brut/tui/script/puts_subscriber.rb', line 6</span>
407
+
408
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_progname'>progname</span><span class='comma'>,</span> <span class='label'>terminal:</span><span class='comma'>,</span> <span class='label'>theme:</span><span class='comma'>,</span> <span class='label'>stdout:</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='label'>stderr:</span> <span class='kw'>false</span><span class='rparen'>)</span>
409
+ <span class='ivar'>@progname</span> <span class='op'>=</span> <span class='id identifier rubyid_progname'>progname</span>
410
+ <span class='ivar'>@terminal</span> <span class='op'>=</span> <span class='id identifier rubyid_terminal'>terminal</span>
411
+ <span class='ivar'>@theme</span> <span class='op'>=</span> <span class='id identifier rubyid_theme'>theme</span>
412
+ <span class='ivar'>@prefix_recent</span> <span class='op'>=</span> <span class='kw'>false</span>
413
+ <span class='ivar'>@stdout</span> <span class='op'>=</span> <span class='id identifier rubyid_stdout'>stdout</span>
414
+ <span class='ivar'>@stderr</span> <span class='op'>=</span> <span class='id identifier rubyid_stderr'>stderr</span>
415
+ <span class='ivar'>@stdout_buffer</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
416
+ <span class='ivar'>@stderr_buffer</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
417
+ <span class='ivar'>@step_indent</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Phase 1/1 </span><span class='tstring_end'>&quot;</span></span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span>
418
+ <span class='kw'>end</span></pre>
419
+ </td>
420
+ </tr>
421
+ </table>
422
+ </div>
423
+
424
+ </div>
425
+
426
+
427
+ <div id="instance_method_details" class="method_details_list">
428
+ <h2>Instance Method Details</h2>
429
+
430
+
431
+ <div class="method_details first">
432
+ <h3 class="signature first" id="on_command_execution_failed-instance_method">
433
+
434
+ #<strong>on_command_execution_failed</strong>(command:) &#x21d2; <tt>Object</tt>
435
+
436
+
437
+
438
+
439
+
440
+ </h3><table class="source_code">
441
+ <tr>
442
+ <td>
443
+ <pre class="lines">
444
+
445
+
446
+ 40
447
+ 41
448
+ 42
449
+ 43
450
+ 44
451
+ 45
452
+ 46
453
+ 47
454
+ 48
455
+ 49
456
+ 50
457
+ 51</pre>
458
+ </td>
459
+ <td>
460
+ <pre class="code"><span class="info file"># File 'lib/brut/tui/script/puts_subscriber.rb', line 40</span>
461
+
462
+ <span class='kw'>def</span> <span class='id identifier rubyid_on_command_execution_failed'>on_command_execution_failed</span><span class='lparen'>(</span><span class='label'>command:</span><span class='rparen'>)</span>
463
+ <span class='id identifier rubyid_println'>println</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_with_markup'>with_markup</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>FAILED</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>text:</span> <span class='symbol'>:error</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='label'>step_indent:</span> <span class='kw'>true</span>
464
+ <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@stdout</span>
465
+ <span class='id identifier rubyid_println'>println</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span>
466
+ <span class='id identifier rubyid_println'>println</span> <span class='ivar'>@stdout_buffer</span><span class='lbracket'>[</span><span class='id identifier rubyid_command'>command</span><span class='rbracket'>]</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\n</span><span class='tstring_end'>&quot;</span></span>
467
+ <span class='kw'>end</span>
468
+ <span class='kw'>if</span> <span class='op'>!</span><span class='ivar'>@stderr</span>
469
+ <span class='id identifier rubyid_println'>println</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span>
470
+ <span class='id identifier rubyid_println'>println</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_warning'>warning</span> <span class='op'>+</span> <span class='ivar'>@stderr_buffer</span><span class='lbracket'>[</span><span class='id identifier rubyid_command'>command</span><span class='rbracket'>]</span>
471
+ <span class='kw'>end</span>
472
+
473
+ <span class='kw'>end</span></pre>
474
+ </td>
475
+ </tr>
476
+ </table>
477
+ </div>
478
+
479
+ <div class="method_details ">
480
+ <h3 class="signature " id="on_command_execution_succeeded-instance_method">
481
+
482
+ #<strong>on_command_execution_succeeded</strong>(command:) &#x21d2; <tt>Object</tt>
483
+
484
+
485
+
486
+
487
+
488
+ </h3><table class="source_code">
489
+ <tr>
490
+ <td>
491
+ <pre class="lines">
492
+
493
+
494
+ 77
495
+ 78
496
+ 79</pre>
497
+ </td>
498
+ <td>
499
+ <pre class="code"><span class="info file"># File 'lib/brut/tui/script/puts_subscriber.rb', line 77</span>
500
+
501
+ <span class='kw'>def</span> <span class='id identifier rubyid_on_command_execution_succeeded'>on_command_execution_succeeded</span><span class='lparen'>(</span><span class='label'>command:</span><span class='rparen'>)</span>
502
+ <span class='id identifier rubyid_println'>println</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_with_markup'>with_markup</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>✅</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>text:</span> <span class='symbol'>:success</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='label'>step_indent:</span> <span class='kw'>true</span>
503
+ <span class='kw'>end</span></pre>
504
+ </td>
505
+ </tr>
506
+ </table>
507
+ </div>
508
+
509
+ <div class="method_details ">
510
+ <h3 class="signature " id="on_command_std_err-instance_method">
511
+
512
+ #<strong>on_command_std_err</strong>(output:, command:) &#x21d2; <tt>Object</tt>
513
+
514
+
515
+
516
+
517
+
518
+ </h3><table class="source_code">
519
+ <tr>
520
+ <td>
521
+ <pre class="lines">
522
+
523
+
524
+ 67
525
+ 68
526
+ 69
527
+ 70
528
+ 71
529
+ 72
530
+ 73
531
+ 74
532
+ 75</pre>
533
+ </td>
534
+ <td>
535
+ <pre class="code"><span class="info file"># File 'lib/brut/tui/script/puts_subscriber.rb', line 67</span>
536
+
537
+ <span class='kw'>def</span> <span class='id identifier rubyid_on_command_std_err'>on_command_std_err</span><span class='lparen'>(</span><span class='label'>output:</span><span class='comma'>,</span> <span class='label'>command:</span><span class='rparen'>)</span>
538
+ <span class='kw'>if</span> <span class='ivar'>@stderr</span>
539
+ <span class='ivar'>@prefix_recent</span> <span class='op'>=</span> <span class='kw'>false</span>
540
+ <span class='gvar'>$stdout</span><span class='period'>.</span><span class='id identifier rubyid_print'>print</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_warning'>warning</span> <span class='op'>+</span> <span class='id identifier rubyid_output'>output</span> <span class='op'>+</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_reset'>reset</span>
541
+ <span class='gvar'>$stdout</span><span class='period'>.</span><span class='id identifier rubyid_flush'>flush</span>
542
+ <span class='kw'>else</span>
543
+ <span class='ivar'>@stderr_buffer</span><span class='lbracket'>[</span><span class='id identifier rubyid_command'>command</span><span class='rbracket'>]</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_output'>output</span>
544
+ <span class='kw'>end</span>
545
+ <span class='kw'>end</span></pre>
546
+ </td>
547
+ </tr>
548
+ </table>
549
+ </div>
550
+
551
+ <div class="method_details ">
552
+ <h3 class="signature " id="on_command_std_out-instance_method">
553
+
554
+ #<strong>on_command_std_out</strong>(output:, command:) &#x21d2; <tt>Object</tt>
555
+
556
+
557
+
558
+
559
+
560
+ </h3><table class="source_code">
561
+ <tr>
562
+ <td>
563
+ <pre class="lines">
564
+
565
+
566
+ 57
567
+ 58
568
+ 59
569
+ 60
570
+ 61
571
+ 62
572
+ 63
573
+ 64
574
+ 65</pre>
575
+ </td>
576
+ <td>
577
+ <pre class="code"><span class="info file"># File 'lib/brut/tui/script/puts_subscriber.rb', line 57</span>
578
+
579
+ <span class='kw'>def</span> <span class='id identifier rubyid_on_command_std_out'>on_command_std_out</span><span class='lparen'>(</span><span class='label'>output:</span><span class='comma'>,</span> <span class='label'>command:</span><span class='rparen'>)</span>
580
+ <span class='kw'>if</span> <span class='ivar'>@stdout</span>
581
+ <span class='ivar'>@prefix_recent</span> <span class='op'>=</span> <span class='kw'>false</span>
582
+ <span class='gvar'>$stdout</span><span class='period'>.</span><span class='id identifier rubyid_print'>print</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_normal'>normal</span> <span class='op'>+</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_weak'>weak</span> <span class='op'>+</span> <span class='id identifier rubyid_output'>output</span> <span class='op'>+</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_reset'>reset</span>
583
+ <span class='gvar'>$stdout</span><span class='period'>.</span><span class='id identifier rubyid_flush'>flush</span>
584
+ <span class='kw'>else</span>
585
+ <span class='ivar'>@stdout_buffer</span><span class='lbracket'>[</span><span class='id identifier rubyid_command'>command</span><span class='rbracket'>]</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_output'>output</span>
586
+ <span class='kw'>end</span>
587
+ <span class='kw'>end</span></pre>
588
+ </td>
589
+ </tr>
590
+ </table>
591
+ </div>
592
+
593
+ <div class="method_details ">
594
+ <h3 class="signature " id="on_exception-instance_method">
595
+
596
+ #<strong>on_exception</strong>(exception:) &#x21d2; <tt>Object</tt>
597
+
598
+
599
+
600
+
601
+
602
+ </h3><table class="source_code">
603
+ <tr>
604
+ <td>
605
+ <pre class="lines">
606
+
607
+
608
+ 53
609
+ 54
610
+ 55</pre>
611
+ </td>
612
+ <td>
613
+ <pre class="code"><span class="info file"># File 'lib/brut/tui/script/puts_subscriber.rb', line 53</span>
614
+
615
+ <span class='kw'>def</span> <span class='id identifier rubyid_on_exception'>on_exception</span><span class='lparen'>(</span><span class='label'>exception:</span><span class='rparen'>)</span>
616
+ <span class='id identifier rubyid_println'>println</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_error'>error</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Exception: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_exception'>exception</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'>: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_exception'>exception</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='embexpr_end'>}</span><span class='tstring_content'>\n </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_exception'>exception</span><span class='period'>.</span><span class='id identifier rubyid_backtrace'>backtrace</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\n </span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
617
+ <span class='kw'>end</span></pre>
618
+ </td>
619
+ </tr>
620
+ </table>
621
+ </div>
622
+
623
+ <div class="method_details ">
624
+ <h3 class="signature " id="on_executing_command-instance_method">
625
+
626
+ #<strong>on_executing_command</strong>(command:) &#x21d2; <tt>Object</tt>
627
+
628
+
629
+
630
+
631
+
632
+ </h3><table class="source_code">
633
+ <tr>
634
+ <td>
635
+ <pre class="lines">
636
+
637
+
638
+ 33
639
+ 34
640
+ 35
641
+ 36
642
+ 37
643
+ 38</pre>
644
+ </td>
645
+ <td>
646
+ <pre class="code"><span class="info file"># File 'lib/brut/tui/script/puts_subscriber.rb', line 33</span>
647
+
648
+ <span class='kw'>def</span> <span class='id identifier rubyid_on_executing_command'>on_executing_command</span><span class='lparen'>(</span><span class='label'>command:</span><span class='rparen'>)</span>
649
+ <span class='id identifier rubyid_println'>println</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_with_markup'>with_markup</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&gt; `</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_command'>command</span><span class='embexpr_end'>}</span><span class='tstring_content'>`</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='comma'>,</span> <span class='label'>step_indent:</span> <span class='kw'>true</span>
650
+ <span class='gvar'>$stdout</span><span class='period'>.</span><span class='id identifier rubyid_print'>print</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_reset'>reset</span>
651
+ <span class='ivar'>@stdout_buffer</span><span class='lbracket'>[</span><span class='id identifier rubyid_command'>command</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span>
652
+ <span class='ivar'>@stderr_buffer</span><span class='lbracket'>[</span><span class='id identifier rubyid_command'>command</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span>
653
+ <span class='kw'>end</span></pre>
654
+ </td>
655
+ </tr>
656
+ </table>
657
+ </div>
658
+
659
+ <div class="method_details ">
660
+ <h3 class="signature " id="on_message-instance_method">
661
+
662
+ #<strong>on_message</strong>(message:, type:) &#x21d2; <tt>Object</tt>
663
+
664
+
665
+
666
+
667
+
668
+ </h3><table class="source_code">
669
+ <tr>
670
+ <td>
671
+ <pre class="lines">
672
+
673
+
674
+ 81
675
+ 82
676
+ 83
677
+ 84
678
+ 85
679
+ 86
680
+ 87</pre>
681
+ </td>
682
+ <td>
683
+ <pre class="code"><span class="info file"># File 'lib/brut/tui/script/puts_subscriber.rb', line 81</span>
684
+
685
+ <span class='kw'>def</span> <span class='id identifier rubyid_on_message'>on_message</span><span class='lparen'>(</span><span class='label'>message:</span><span class='comma'>,</span> <span class='label'>type:</span><span class='rparen'>)</span>
686
+ <span class='kw'>if</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='symbol'>:done</span>
687
+ <span class='id identifier rubyid_println'>println</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_with_markup'>with_markup</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='comma'>,</span> <span class='label'>text:</span> <span class='symbol'>:success</span><span class='rparen'>)</span>
688
+ <span class='kw'>else</span>
689
+ <span class='id identifier rubyid_println'>println</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_with_markup'>with_markup</span><span class='lparen'>(</span><span class='id identifier rubyid_message'>message</span><span class='comma'>,</span> <span class='label'>text:</span> <span class='id identifier rubyid_type'>type</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='label'>step_indent:</span> <span class='kw'>true</span>
690
+ <span class='kw'>end</span>
691
+ <span class='kw'>end</span></pre>
692
+ </td>
693
+ </tr>
694
+ </table>
695
+ </div>
696
+
697
+ <div class="method_details ">
698
+ <h3 class="signature " id="on_phase_started-instance_method">
699
+
700
+ #<strong>on_phase_started</strong>(description:, step_number:, total_steps:) &#x21d2; <tt>Object</tt>
701
+
702
+
703
+
704
+
705
+
706
+ </h3><table class="source_code">
707
+ <tr>
708
+ <td>
709
+ <pre class="lines">
710
+
711
+
712
+ 18
713
+ 19
714
+ 20
715
+ 21
716
+ 22
717
+ 23
718
+ 24
719
+ 25
720
+ 26
721
+ 27</pre>
722
+ </td>
723
+ <td>
724
+ <pre class="code"><span class="info file"># File 'lib/brut/tui/script/puts_subscriber.rb', line 18</span>
725
+
726
+ <span class='kw'>def</span> <span class='id identifier rubyid_on_phase_started'>on_phase_started</span><span class='lparen'>(</span><span class='label'>description:</span><span class='comma'>,</span> <span class='label'>step_number:</span><span class='comma'>,</span> <span class='label'>total_steps:</span><span class='rparen'>)</span>
727
+ <span class='id identifier rubyid_total_format_string'>total_format_string</span> <span class='op'>=</span> <span class='kw'>if</span> <span class='id identifier rubyid_total_steps'>total_steps</span> <span class='op'>&lt;</span> <span class='int'>10</span>
728
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>%1d</span><span class='tstring_end'>&quot;</span></span>
729
+ <span class='kw'>else</span>
730
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>%2d</span><span class='tstring_end'>&quot;</span></span>
731
+ <span class='kw'>end</span>
732
+ <span class='id identifier rubyid_preamble'>preamble</span> <span class='op'>=</span> <span class='id identifier rubyid_sprintf'>sprintf</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Phase %d/</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_total_format_string'>total_format_string</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_step_number'>step_number</span><span class='comma'>,</span> <span class='id identifier rubyid_total_steps'>total_steps</span><span class='rparen'>)</span>
733
+ <span class='ivar'>@step_indent</span> <span class='op'>=</span> <span class='id identifier rubyid_preamble'>preamble</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>+</span> <span class='int'>1</span>
734
+ <span class='id identifier rubyid_println'>println</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_reset'>reset</span> <span class='op'>+</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_bold'>bold</span> <span class='op'>+</span> <span class='id identifier rubyid_preamble'>preamble</span> <span class='op'>+</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_reset'>reset</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='tstring_end'>&quot;</span></span> <span class='op'>+</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_with_markup'>with_markup</span><span class='lparen'>(</span><span class='id identifier rubyid_description'>description</span><span class='comma'>,</span> <span class='label'>text:</span> <span class='symbol'>:heading</span><span class='rparen'>)</span>
735
+ <span class='kw'>end</span></pre>
736
+ </td>
737
+ </tr>
738
+ </table>
739
+ </div>
740
+
741
+ <div class="method_details ">
742
+ <h3 class="signature " id="on_step_started-instance_method">
743
+
744
+ #<strong>on_step_started</strong>(description:) &#x21d2; <tt>Object</tt>
745
+
746
+
747
+
748
+
749
+
750
+ </h3><table class="source_code">
751
+ <tr>
752
+ <td>
753
+ <pre class="lines">
754
+
755
+
756
+ 29
757
+ 30
758
+ 31</pre>
759
+ </td>
760
+ <td>
761
+ <pre class="code"><span class="info file"># File 'lib/brut/tui/script/puts_subscriber.rb', line 29</span>
762
+
763
+ <span class='kw'>def</span> <span class='id identifier rubyid_on_step_started'>on_step_started</span><span class='lparen'>(</span><span class='label'>description:</span><span class='rparen'>)</span>
764
+ <span class='id identifier rubyid_println'>println</span> <span class='ivar'>@theme</span><span class='period'>.</span><span class='id identifier rubyid_with_markup'>with_markup</span><span class='lparen'>(</span><span class='id identifier rubyid_description'>description</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='label'>step_indent:</span> <span class='kw'>true</span>
765
+ <span class='kw'>end</span></pre>
766
+ </td>
767
+ </tr>
768
+ </table>
769
+ </div>
770
+
771
+ </div>
772
+
773
+ </div>
774
+
775
+ <div id="footer">
776
+ Generated on Sun Nov 30 20:50:12 2025 by
777
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
778
+ 0.9.37 (ruby-3.4.6).
779
+ </div>
780
+
781
+ </div>
782
+ </body>
783
+ </html>