fun_ci 2.0.0-x86_64-linux

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 (200) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +294 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +230 -0
  5. data/exe/fun-ci +7 -0
  6. data/lib/fun_ci/agent/age.rb +15 -0
  7. data/lib/fun_ci/agent/command_support.rb +27 -0
  8. data/lib/fun_ci/agent/commands.rb +27 -0
  9. data/lib/fun_ci/agent/context.rb +10 -0
  10. data/lib/fun_ci/agent/digest.rb +49 -0
  11. data/lib/fun_ci/agent/events.rb +47 -0
  12. data/lib/fun_ci/agent/events_command.rb +61 -0
  13. data/lib/fun_ci/agent/evidence_text.rb +46 -0
  14. data/lib/fun_ci/agent/exit_code.rb +11 -0
  15. data/lib/fun_ci/agent/git.rb +31 -0
  16. data/lib/fun_ci/agent/live_pipeline.rb +35 -0
  17. data/lib/fun_ci/agent/options.rb +75 -0
  18. data/lib/fun_ci/agent/output.rb +81 -0
  19. data/lib/fun_ci/agent/report_stage.rb +73 -0
  20. data/lib/fun_ci/agent/reports.rb +47 -0
  21. data/lib/fun_ci/agent/run_report.rb +30 -0
  22. data/lib/fun_ci/agent/runs_command.rb +34 -0
  23. data/lib/fun_ci/agent/runs_text.rb +27 -0
  24. data/lib/fun_ci/agent/snapshots.rb +39 -0
  25. data/lib/fun_ci/agent/stage_summary.rb +30 -0
  26. data/lib/fun_ci/agent/status_command.rb +36 -0
  27. data/lib/fun_ci/agent/status_json.rb +27 -0
  28. data/lib/fun_ci/agent/status_text.rb +37 -0
  29. data/lib/fun_ci/agent/system_clock.rb +11 -0
  30. data/lib/fun_ci/agent/verdict.rb +32 -0
  31. data/lib/fun_ci/agent/wait_command.rb +71 -0
  32. data/lib/fun_ci/agent/waiting.rb +32 -0
  33. data/lib/fun_ci/agent/why_command.rb +50 -0
  34. data/lib/fun_ci/agent/why_json.rb +35 -0
  35. data/lib/fun_ci/agent/why_text.rb +43 -0
  36. data/lib/fun_ci/cli.rb +128 -0
  37. data/lib/fun_ci/cli_help.rb +65 -0
  38. data/lib/fun_ci/console/board_data.rb +66 -0
  39. data/lib/fun_ci/console/board_heartbeat.rb +40 -0
  40. data/lib/fun_ci/console/console_events.rb +20 -0
  41. data/lib/fun_ci/console/console_log.rb +26 -0
  42. data/lib/fun_ci/console/console_loop.rb +41 -0
  43. data/lib/fun_ci/console/console_session.rb +82 -0
  44. data/lib/fun_ci/console/console_state.rb +42 -0
  45. data/lib/fun_ci/console/key_handler.rb +73 -0
  46. data/lib/fun_ci/console/launcher.rb +43 -0
  47. data/lib/fun_ci/console/milestone_events.rb +38 -0
  48. data/lib/fun_ci/console/milestones.rb +25 -0
  49. data/lib/fun_ci/console/renderer_lookup.rb +51 -0
  50. data/lib/fun_ci/console/renderer_process.rb +60 -0
  51. data/lib/fun_ci/console/run_message.rb +33 -0
  52. data/lib/fun_ci/console/stage_change_detector.rb +32 -0
  53. data/lib/fun_ci/console/stage_events.rb +31 -0
  54. data/lib/fun_ci/console/stop_report.rb +39 -0
  55. data/lib/fun_ci/console/streak_counter.rb +19 -0
  56. data/lib/fun_ci/console/view.rb +47 -0
  57. data/lib/fun_ci/evidence/about.rb +12 -0
  58. data/lib/fun_ci/evidence/about_stage.rb +29 -0
  59. data/lib/fun_ci/evidence/caps.rb +77 -0
  60. data/lib/fun_ci/evidence/catalog.rb +83 -0
  61. data/lib/fun_ci/evidence/collector.rb +95 -0
  62. data/lib/fun_ci/evidence/command_output.rb +45 -0
  63. data/lib/fun_ci/evidence/command_reading.rb +38 -0
  64. data/lib/fun_ci/evidence/command_runner.rb +75 -0
  65. data/lib/fun_ci/evidence/context.rb +21 -0
  66. data/lib/fun_ci/evidence/context_document.rb +29 -0
  67. data/lib/fun_ci/evidence/deadline.rb +15 -0
  68. data/lib/fun_ci/evidence/detection.rb +82 -0
  69. data/lib/fun_ci/evidence/document.rb +59 -0
  70. data/lib/fun_ci/evidence/extract_command.rb +83 -0
  71. data/lib/fun_ci/evidence/extract_options.rb +45 -0
  72. data/lib/fun_ci/evidence/extraction.rb +54 -0
  73. data/lib/fun_ci/evidence/extractors/command.rb +52 -0
  74. data/lib/fun_ci/evidence/extractors/grep.rb +49 -0
  75. data/lib/fun_ci/evidence/extractors/json_log.rb +45 -0
  76. data/lib/fun_ci/evidence/extractors/junit_files.rb +32 -0
  77. data/lib/fun_ci/evidence/extractors/last_lines.rb +25 -0
  78. data/lib/fun_ci/evidence/extractors/log_file.rb +62 -0
  79. data/lib/fun_ci/evidence/extractors/process_tree.rb +51 -0
  80. data/lib/fun_ci/evidence/extractors/section.rb +49 -0
  81. data/lib/fun_ci/evidence/findings.rb +14 -0
  82. data/lib/fun_ci/evidence/line_ranges.rb +21 -0
  83. data/lib/fun_ci/evidence/line_scan.rb +22 -0
  84. data/lib/fun_ci/evidence/log_record.rb +58 -0
  85. data/lib/fun_ci/evidence/masking.rb +55 -0
  86. data/lib/fun_ci/evidence/option_check.rb +53 -0
  87. data/lib/fun_ci/evidence/outcome.rb +15 -0
  88. data/lib/fun_ci/evidence/patterns.rb +22 -0
  89. data/lib/fun_ci/evidence/presets/README.md +7 -0
  90. data/lib/fun_ci/evidence/presets/bun-test.yml +6 -0
  91. data/lib/fun_ci/evidence/presets/cargo-test.yml +6 -0
  92. data/lib/fun_ci/evidence/presets/dart-test.yml +6 -0
  93. data/lib/fun_ci/evidence/presets/deno-test.yml +6 -0
  94. data/lib/fun_ci/evidence/presets/dotnet-test.yml +6 -0
  95. data/lib/fun_ci/evidence/presets/ecs.yml +3 -0
  96. data/lib/fun_ci/evidence/presets/eslint.yml +6 -0
  97. data/lib/fun_ci/evidence/presets/exunit.yml +6 -0
  98. data/lib/fun_ci/evidence/presets/gcc.yml +6 -0
  99. data/lib/fun_ci/evidence/presets/go-build.yml +5 -0
  100. data/lib/fun_ci/evidence/presets/go-test.yml +6 -0
  101. data/lib/fun_ci/evidence/presets/gradle.yml +6 -0
  102. data/lib/fun_ci/evidence/presets/gtest.yml +6 -0
  103. data/lib/fun_ci/evidence/presets/jest.yml +6 -0
  104. data/lib/fun_ci/evidence/presets/logstash.yml +3 -0
  105. data/lib/fun_ci/evidence/presets/maven.yml +6 -0
  106. data/lib/fun_ci/evidence/presets/minitest.yml +6 -0
  107. data/lib/fun_ci/evidence/presets/mocha.yml +6 -0
  108. data/lib/fun_ci/evidence/presets/mypy.yml +6 -0
  109. data/lib/fun_ci/evidence/presets/node-test.yml +6 -0
  110. data/lib/fun_ci/evidence/presets/phpunit.yml +6 -0
  111. data/lib/fun_ci/evidence/presets/pino.yml +5 -0
  112. data/lib/fun_ci/evidence/presets/prove.yml +6 -0
  113. data/lib/fun_ci/evidence/presets/pytest.yml +6 -0
  114. data/lib/fun_ci/evidence/presets/rspec.yml +6 -0
  115. data/lib/fun_ci/evidence/presets/rubocop.yml +6 -0
  116. data/lib/fun_ci/evidence/presets/ruff.yml +6 -0
  117. data/lib/fun_ci/evidence/presets/rustc.yml +6 -0
  118. data/lib/fun_ci/evidence/presets/shellcheck.yml +5 -0
  119. data/lib/fun_ci/evidence/presets/structlog.yml +4 -0
  120. data/lib/fun_ci/evidence/presets/swift-test.yml +5 -0
  121. data/lib/fun_ci/evidence/presets/tsc.yml +6 -0
  122. data/lib/fun_ci/evidence/presets/unittest.yml +6 -0
  123. data/lib/fun_ci/evidence/presets/vitest.yml +6 -0
  124. data/lib/fun_ci/evidence/presets.rb +30 -0
  125. data/lib/fun_ci/evidence/problem.rb +9 -0
  126. data/lib/fun_ci/evidence/process_table.rb +40 -0
  127. data/lib/fun_ci/evidence/saved_run.rb +22 -0
  128. data/lib/fun_ci/evidence/section_walk.rb +49 -0
  129. data/lib/fun_ci/evidence/settings.rb +64 -0
  130. data/lib/fun_ci/evidence/settings_check.rb +78 -0
  131. data/lib/fun_ci/evidence/source.rb +34 -0
  132. data/lib/fun_ci/evidence/sources.rb +21 -0
  133. data/lib/fun_ci/evidence/stage_context.rb +30 -0
  134. data/lib/fun_ci/evidence/stamp.rb +10 -0
  135. data/lib/fun_ci/evidence/start.rb +36 -0
  136. data/lib/fun_ci/evidence/worktree.rb +62 -0
  137. data/lib/fun_ci/persistence/active_runs.rb +69 -0
  138. data/lib/fun_ci/persistence/database.rb +81 -0
  139. data/lib/fun_ci/persistence/null_recorder.rb +25 -0
  140. data/lib/fun_ci/persistence/output_tail.rb +24 -0
  141. data/lib/fun_ci/persistence/pipeline_recorder.rb +120 -0
  142. data/lib/fun_ci/persistence/pipeline_run.rb +68 -0
  143. data/lib/fun_ci/persistence/project_runs.rb +52 -0
  144. data/lib/fun_ci/persistence/raw_outputs.rb +46 -0
  145. data/lib/fun_ci/persistence/retention.rb +25 -0
  146. data/lib/fun_ci/persistence/run_status.rb +31 -0
  147. data/lib/fun_ci/persistence/stage_job.rb +91 -0
  148. data/lib/fun_ci/persistence/state_dir.rb +26 -0
  149. data/lib/fun_ci/persistence/write_trouble.rb +46 -0
  150. data/lib/fun_ci/pipeline/background_fork.rb +42 -0
  151. data/lib/fun_ci/pipeline/command_executor.rb +58 -0
  152. data/lib/fun_ci/pipeline/gate.rb +35 -0
  153. data/lib/fun_ci/pipeline/git_environment.rb +16 -0
  154. data/lib/fun_ci/pipeline/head_part.rb +40 -0
  155. data/lib/fun_ci/pipeline/in_place.rb +17 -0
  156. data/lib/fun_ci/pipeline/output_window.rb +73 -0
  157. data/lib/fun_ci/pipeline/pipeline_forker.rb +40 -0
  158. data/lib/fun_ci/pipeline/process_runner.rb +101 -0
  159. data/lib/fun_ci/pipeline/progress_reporter.rb +31 -0
  160. data/lib/fun_ci/pipeline/run_canceller.rb +75 -0
  161. data/lib/fun_ci/pipeline/slot.rb +30 -0
  162. data/lib/fun_ci/pipeline/slot_lock.rb +13 -0
  163. data/lib/fun_ci/pipeline/slot_run.rb +86 -0
  164. data/lib/fun_ci/pipeline/stage_dir.rb +50 -0
  165. data/lib/fun_ci/pipeline/stage_end.rb +70 -0
  166. data/lib/fun_ci/pipeline/stage_execution.rb +67 -0
  167. data/lib/fun_ci/pipeline/stage_runner.rb +63 -0
  168. data/lib/fun_ci/pipeline/stale_pipeline_canceller.rb +36 -0
  169. data/lib/fun_ci/pipeline/tail_segments.rb +60 -0
  170. data/lib/fun_ci/pipeline/test_report.rb +48 -0
  171. data/lib/fun_ci/pipeline/trigger.rb +93 -0
  172. data/lib/fun_ci/pipeline/trigger_command.rb +62 -0
  173. data/lib/fun_ci/pipeline/trigger_params.rb +48 -0
  174. data/lib/fun_ci/pipeline/workspaces.rb +22 -0
  175. data/lib/fun_ci/pipeline/worktree_pool.rb +66 -0
  176. data/lib/fun_ci/pipeline/worktree_prune.rb +49 -0
  177. data/lib/fun_ci/pipeline/worktrees.rb +45 -0
  178. data/lib/fun_ci/setup/agent_instructions.rb +31 -0
  179. data/lib/fun_ci/setup/commands.rb +49 -0
  180. data/lib/fun_ci/setup/git_hooks.rb +20 -0
  181. data/lib/fun_ci/setup/hook_script.rb +47 -0
  182. data/lib/fun_ci/setup/hook_writer.rb +57 -0
  183. data/lib/fun_ci/setup/installer.rb +71 -0
  184. data/lib/fun_ci/setup/legacy_hooks.rb +38 -0
  185. data/lib/fun_ci/setup/maven_linter_detector.rb +26 -0
  186. data/lib/fun_ci/setup/project_config.rb +68 -0
  187. data/lib/fun_ci/setup/project_detector.rb +54 -0
  188. data/lib/fun_ci/setup/settings.rb +36 -0
  189. data/lib/fun_ci/setup/setup_checker.rb +36 -0
  190. data/lib/fun_ci/setup/stage_templates/javascript.rb +18 -0
  191. data/lib/fun_ci/setup/stage_templates/managed.rb +24 -0
  192. data/lib/fun_ci/setup/stage_templates/native.rb +25 -0
  193. data/lib/fun_ci/setup/stage_templates/scripting.rb +27 -0
  194. data/lib/fun_ci/setup/stage_templates/shell.rb +16 -0
  195. data/lib/fun_ci/setup/stage_templates.rb +25 -0
  196. data/lib/fun_ci/setup/template_writer.rb +28 -0
  197. data/lib/fun_ci/version.rb +6 -0
  198. data/lib/fun_ci.rb +13 -0
  199. data/libexec/fun-ci-renderer +0 -0
  200. metadata +286 -0
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "stage_templates/managed"
4
+ require_relative "stage_templates/native"
5
+ require_relative "stage_templates/scripting"
6
+ require_relative "stage_templates/javascript"
7
+
8
+ module FunCi
9
+ module Setup
10
+ # The stage scripts `fun-ci init` writes, per kind of project (AT-10.21).
11
+ # Test stages run the fast suite without the tests the tool's convention
12
+ # marks slow, and the slow suite with only those; where the tool has no
13
+ # such convention, the slow suite is a `test:slow` script (`test-slow`,
14
+ # for make).
15
+ module StageTemplates
16
+ TEMPLATES = [MANAGED, NATIVE, SCRIPTING, JAVASCRIPT].reduce(:merge).freeze
17
+
18
+ # { "lint.sh" => script, ... }; +lint_override+ replaces the lint command.
19
+ def self.scripts(template_id, lint_override: nil)
20
+ scripts = TEMPLATES.fetch(template_id)
21
+ lint_override ? scripts.merge("lint.sh" => script(lint_override)) : scripts
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "stage_templates"
4
+
5
+ module FunCi
6
+ module Setup
7
+ # Writes a project's .fun-ci/ stage scripts, executable.
8
+ class TemplateWriter
9
+ def initialize(template_id, target_dir, lint_override: nil)
10
+ @scripts = StageTemplates.scripts(template_id, lint_override: lint_override)
11
+ @target_dir = target_dir
12
+ end
13
+
14
+ def write
15
+ fun_ci_dir = File.join(@target_dir, ".fun-ci")
16
+ Dir.mkdir(fun_ci_dir)
17
+ @scripts.each { |name, content| write_script(File.join(fun_ci_dir, name), content) }
18
+ end
19
+
20
+ private
21
+
22
+ def write_script(path, content)
23
+ File.write(path, content)
24
+ File.chmod(0o755, path)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Loaded on its own by the gemspec, so it must not require anything.
4
+ module FunCi
5
+ VERSION = "2.0.0"
6
+ end
data/lib/fun_ci.rb ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "fun_ci/version"
4
+ require_relative "fun_ci/persistence/database"
5
+ require_relative "fun_ci/persistence/pipeline_run"
6
+ require_relative "fun_ci/persistence/stage_job"
7
+ require_relative "fun_ci/setup/project_config"
8
+
9
+ module FunCi
10
+ BUILD_TIMEOUT = 30
11
+ FAST_SUITE_TIMEOUT = 10
12
+ SLOW_SUITE_TIMEOUT = 300
13
+ end
Binary file
metadata ADDED
@@ -0,0 +1,286 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fun_ci
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
+ platform: x86_64-linux
6
+ authors:
7
+ - Erik Thyge Madsen
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: rexml
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '3.2'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '3.2'
26
+ - !ruby/object:Gem::Dependency
27
+ name: sqlite3
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '2.0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.0'
40
+ description: 'Opinionated local CI that checks your code before it leaves your machine.
41
+ After every commit a git hook runs four stages in a worktree at that commit: lint
42
+ and build in parallel, then a fast suite, with a slow suite in the background, each
43
+ held to a strict time budget (30 s, 30 s, 10 s and 5 minutes). The pre-push hook
44
+ stops a push whose lint, build or fast suite failed. There are two ways in. People
45
+ watch fun-ci console, a terminal dashboard drawn in 24-bit colour by a Rust renderer
46
+ (included in the Linux and macOS gems), where each milestone of a run plays its
47
+ own scene: a rocket while it runs, fireworks when it passes, an explosion when it
48
+ fails, and a quiet night scene when nothing has run for a while. Coding agents and
49
+ scripts ask with commands that answer in exit codes: fun-ci wait blocks until a
50
+ commit''s verdict is in, and fun-ci why prints what was kept about a failure (the
51
+ failures a test runner reported, excerpts picked out by presets for 34 tools, log
52
+ lines, the end of the output, with secrets masked), so nobody has to run a suite
53
+ again to see what broke. Results are kept in SQLite. Any language works, since the
54
+ stages are shell scripts; fun-ci init writes them for Ruby, Gradle and Maven projects.'
55
+ executables:
56
+ - fun-ci
57
+ extensions: []
58
+ extra_rdoc_files: []
59
+ files:
60
+ - CHANGELOG.md
61
+ - LICENSE.txt
62
+ - README.md
63
+ - exe/fun-ci
64
+ - lib/fun_ci.rb
65
+ - lib/fun_ci/agent/age.rb
66
+ - lib/fun_ci/agent/command_support.rb
67
+ - lib/fun_ci/agent/commands.rb
68
+ - lib/fun_ci/agent/context.rb
69
+ - lib/fun_ci/agent/digest.rb
70
+ - lib/fun_ci/agent/events.rb
71
+ - lib/fun_ci/agent/events_command.rb
72
+ - lib/fun_ci/agent/evidence_text.rb
73
+ - lib/fun_ci/agent/exit_code.rb
74
+ - lib/fun_ci/agent/git.rb
75
+ - lib/fun_ci/agent/live_pipeline.rb
76
+ - lib/fun_ci/agent/options.rb
77
+ - lib/fun_ci/agent/output.rb
78
+ - lib/fun_ci/agent/report_stage.rb
79
+ - lib/fun_ci/agent/reports.rb
80
+ - lib/fun_ci/agent/run_report.rb
81
+ - lib/fun_ci/agent/runs_command.rb
82
+ - lib/fun_ci/agent/runs_text.rb
83
+ - lib/fun_ci/agent/snapshots.rb
84
+ - lib/fun_ci/agent/stage_summary.rb
85
+ - lib/fun_ci/agent/status_command.rb
86
+ - lib/fun_ci/agent/status_json.rb
87
+ - lib/fun_ci/agent/status_text.rb
88
+ - lib/fun_ci/agent/system_clock.rb
89
+ - lib/fun_ci/agent/verdict.rb
90
+ - lib/fun_ci/agent/wait_command.rb
91
+ - lib/fun_ci/agent/waiting.rb
92
+ - lib/fun_ci/agent/why_command.rb
93
+ - lib/fun_ci/agent/why_json.rb
94
+ - lib/fun_ci/agent/why_text.rb
95
+ - lib/fun_ci/cli.rb
96
+ - lib/fun_ci/cli_help.rb
97
+ - lib/fun_ci/console/board_data.rb
98
+ - lib/fun_ci/console/board_heartbeat.rb
99
+ - lib/fun_ci/console/console_events.rb
100
+ - lib/fun_ci/console/console_log.rb
101
+ - lib/fun_ci/console/console_loop.rb
102
+ - lib/fun_ci/console/console_session.rb
103
+ - lib/fun_ci/console/console_state.rb
104
+ - lib/fun_ci/console/key_handler.rb
105
+ - lib/fun_ci/console/launcher.rb
106
+ - lib/fun_ci/console/milestone_events.rb
107
+ - lib/fun_ci/console/milestones.rb
108
+ - lib/fun_ci/console/renderer_lookup.rb
109
+ - lib/fun_ci/console/renderer_process.rb
110
+ - lib/fun_ci/console/run_message.rb
111
+ - lib/fun_ci/console/stage_change_detector.rb
112
+ - lib/fun_ci/console/stage_events.rb
113
+ - lib/fun_ci/console/stop_report.rb
114
+ - lib/fun_ci/console/streak_counter.rb
115
+ - lib/fun_ci/console/view.rb
116
+ - lib/fun_ci/evidence/about.rb
117
+ - lib/fun_ci/evidence/about_stage.rb
118
+ - lib/fun_ci/evidence/caps.rb
119
+ - lib/fun_ci/evidence/catalog.rb
120
+ - lib/fun_ci/evidence/collector.rb
121
+ - lib/fun_ci/evidence/command_output.rb
122
+ - lib/fun_ci/evidence/command_reading.rb
123
+ - lib/fun_ci/evidence/command_runner.rb
124
+ - lib/fun_ci/evidence/context.rb
125
+ - lib/fun_ci/evidence/context_document.rb
126
+ - lib/fun_ci/evidence/deadline.rb
127
+ - lib/fun_ci/evidence/detection.rb
128
+ - lib/fun_ci/evidence/document.rb
129
+ - lib/fun_ci/evidence/extract_command.rb
130
+ - lib/fun_ci/evidence/extract_options.rb
131
+ - lib/fun_ci/evidence/extraction.rb
132
+ - lib/fun_ci/evidence/extractors/command.rb
133
+ - lib/fun_ci/evidence/extractors/grep.rb
134
+ - lib/fun_ci/evidence/extractors/json_log.rb
135
+ - lib/fun_ci/evidence/extractors/junit_files.rb
136
+ - lib/fun_ci/evidence/extractors/last_lines.rb
137
+ - lib/fun_ci/evidence/extractors/log_file.rb
138
+ - lib/fun_ci/evidence/extractors/process_tree.rb
139
+ - lib/fun_ci/evidence/extractors/section.rb
140
+ - lib/fun_ci/evidence/findings.rb
141
+ - lib/fun_ci/evidence/line_ranges.rb
142
+ - lib/fun_ci/evidence/line_scan.rb
143
+ - lib/fun_ci/evidence/log_record.rb
144
+ - lib/fun_ci/evidence/masking.rb
145
+ - lib/fun_ci/evidence/option_check.rb
146
+ - lib/fun_ci/evidence/outcome.rb
147
+ - lib/fun_ci/evidence/patterns.rb
148
+ - lib/fun_ci/evidence/presets.rb
149
+ - lib/fun_ci/evidence/presets/README.md
150
+ - lib/fun_ci/evidence/presets/bun-test.yml
151
+ - lib/fun_ci/evidence/presets/cargo-test.yml
152
+ - lib/fun_ci/evidence/presets/dart-test.yml
153
+ - lib/fun_ci/evidence/presets/deno-test.yml
154
+ - lib/fun_ci/evidence/presets/dotnet-test.yml
155
+ - lib/fun_ci/evidence/presets/ecs.yml
156
+ - lib/fun_ci/evidence/presets/eslint.yml
157
+ - lib/fun_ci/evidence/presets/exunit.yml
158
+ - lib/fun_ci/evidence/presets/gcc.yml
159
+ - lib/fun_ci/evidence/presets/go-build.yml
160
+ - lib/fun_ci/evidence/presets/go-test.yml
161
+ - lib/fun_ci/evidence/presets/gradle.yml
162
+ - lib/fun_ci/evidence/presets/gtest.yml
163
+ - lib/fun_ci/evidence/presets/jest.yml
164
+ - lib/fun_ci/evidence/presets/logstash.yml
165
+ - lib/fun_ci/evidence/presets/maven.yml
166
+ - lib/fun_ci/evidence/presets/minitest.yml
167
+ - lib/fun_ci/evidence/presets/mocha.yml
168
+ - lib/fun_ci/evidence/presets/mypy.yml
169
+ - lib/fun_ci/evidence/presets/node-test.yml
170
+ - lib/fun_ci/evidence/presets/phpunit.yml
171
+ - lib/fun_ci/evidence/presets/pino.yml
172
+ - lib/fun_ci/evidence/presets/prove.yml
173
+ - lib/fun_ci/evidence/presets/pytest.yml
174
+ - lib/fun_ci/evidence/presets/rspec.yml
175
+ - lib/fun_ci/evidence/presets/rubocop.yml
176
+ - lib/fun_ci/evidence/presets/ruff.yml
177
+ - lib/fun_ci/evidence/presets/rustc.yml
178
+ - lib/fun_ci/evidence/presets/shellcheck.yml
179
+ - lib/fun_ci/evidence/presets/structlog.yml
180
+ - lib/fun_ci/evidence/presets/swift-test.yml
181
+ - lib/fun_ci/evidence/presets/tsc.yml
182
+ - lib/fun_ci/evidence/presets/unittest.yml
183
+ - lib/fun_ci/evidence/presets/vitest.yml
184
+ - lib/fun_ci/evidence/problem.rb
185
+ - lib/fun_ci/evidence/process_table.rb
186
+ - lib/fun_ci/evidence/saved_run.rb
187
+ - lib/fun_ci/evidence/section_walk.rb
188
+ - lib/fun_ci/evidence/settings.rb
189
+ - lib/fun_ci/evidence/settings_check.rb
190
+ - lib/fun_ci/evidence/source.rb
191
+ - lib/fun_ci/evidence/sources.rb
192
+ - lib/fun_ci/evidence/stage_context.rb
193
+ - lib/fun_ci/evidence/stamp.rb
194
+ - lib/fun_ci/evidence/start.rb
195
+ - lib/fun_ci/evidence/worktree.rb
196
+ - lib/fun_ci/persistence/active_runs.rb
197
+ - lib/fun_ci/persistence/database.rb
198
+ - lib/fun_ci/persistence/null_recorder.rb
199
+ - lib/fun_ci/persistence/output_tail.rb
200
+ - lib/fun_ci/persistence/pipeline_recorder.rb
201
+ - lib/fun_ci/persistence/pipeline_run.rb
202
+ - lib/fun_ci/persistence/project_runs.rb
203
+ - lib/fun_ci/persistence/raw_outputs.rb
204
+ - lib/fun_ci/persistence/retention.rb
205
+ - lib/fun_ci/persistence/run_status.rb
206
+ - lib/fun_ci/persistence/stage_job.rb
207
+ - lib/fun_ci/persistence/state_dir.rb
208
+ - lib/fun_ci/persistence/write_trouble.rb
209
+ - lib/fun_ci/pipeline/background_fork.rb
210
+ - lib/fun_ci/pipeline/command_executor.rb
211
+ - lib/fun_ci/pipeline/gate.rb
212
+ - lib/fun_ci/pipeline/git_environment.rb
213
+ - lib/fun_ci/pipeline/head_part.rb
214
+ - lib/fun_ci/pipeline/in_place.rb
215
+ - lib/fun_ci/pipeline/output_window.rb
216
+ - lib/fun_ci/pipeline/pipeline_forker.rb
217
+ - lib/fun_ci/pipeline/process_runner.rb
218
+ - lib/fun_ci/pipeline/progress_reporter.rb
219
+ - lib/fun_ci/pipeline/run_canceller.rb
220
+ - lib/fun_ci/pipeline/slot.rb
221
+ - lib/fun_ci/pipeline/slot_lock.rb
222
+ - lib/fun_ci/pipeline/slot_run.rb
223
+ - lib/fun_ci/pipeline/stage_dir.rb
224
+ - lib/fun_ci/pipeline/stage_end.rb
225
+ - lib/fun_ci/pipeline/stage_execution.rb
226
+ - lib/fun_ci/pipeline/stage_runner.rb
227
+ - lib/fun_ci/pipeline/stale_pipeline_canceller.rb
228
+ - lib/fun_ci/pipeline/tail_segments.rb
229
+ - lib/fun_ci/pipeline/test_report.rb
230
+ - lib/fun_ci/pipeline/trigger.rb
231
+ - lib/fun_ci/pipeline/trigger_command.rb
232
+ - lib/fun_ci/pipeline/trigger_params.rb
233
+ - lib/fun_ci/pipeline/workspaces.rb
234
+ - lib/fun_ci/pipeline/worktree_pool.rb
235
+ - lib/fun_ci/pipeline/worktree_prune.rb
236
+ - lib/fun_ci/pipeline/worktrees.rb
237
+ - lib/fun_ci/setup/agent_instructions.rb
238
+ - lib/fun_ci/setup/commands.rb
239
+ - lib/fun_ci/setup/git_hooks.rb
240
+ - lib/fun_ci/setup/hook_script.rb
241
+ - lib/fun_ci/setup/hook_writer.rb
242
+ - lib/fun_ci/setup/installer.rb
243
+ - lib/fun_ci/setup/legacy_hooks.rb
244
+ - lib/fun_ci/setup/maven_linter_detector.rb
245
+ - lib/fun_ci/setup/project_config.rb
246
+ - lib/fun_ci/setup/project_detector.rb
247
+ - lib/fun_ci/setup/settings.rb
248
+ - lib/fun_ci/setup/setup_checker.rb
249
+ - lib/fun_ci/setup/stage_templates.rb
250
+ - lib/fun_ci/setup/stage_templates/javascript.rb
251
+ - lib/fun_ci/setup/stage_templates/managed.rb
252
+ - lib/fun_ci/setup/stage_templates/native.rb
253
+ - lib/fun_ci/setup/stage_templates/scripting.rb
254
+ - lib/fun_ci/setup/stage_templates/shell.rb
255
+ - lib/fun_ci/setup/template_writer.rb
256
+ - lib/fun_ci/version.rb
257
+ - libexec/fun-ci-renderer
258
+ homepage: https://github.com/beatmadsen/fun-ci
259
+ licenses:
260
+ - MIT
261
+ metadata:
262
+ homepage_uri: https://github.com/beatmadsen/fun-ci
263
+ source_code_uri: https://github.com/beatmadsen/fun-ci
264
+ changelog_uri: https://github.com/beatmadsen/fun-ci/blob/main/CHANGELOG.md
265
+ bug_tracker_uri: https://github.com/beatmadsen/fun-ci/issues
266
+ documentation_uri: https://github.com/beatmadsen/fun-ci#readme
267
+ rubygems_mfa_required: 'true'
268
+ rdoc_options: []
269
+ require_paths:
270
+ - lib
271
+ required_ruby_version: !ruby/object:Gem::Requirement
272
+ requirements:
273
+ - - ">="
274
+ - !ruby/object:Gem::Version
275
+ version: '3.2'
276
+ required_rubygems_version: !ruby/object:Gem::Requirement
277
+ requirements:
278
+ - - ">="
279
+ - !ruby/object:Gem::Version
280
+ version: '0'
281
+ requirements: []
282
+ rubygems_version: 3.6.9
283
+ specification_version: 4
284
+ summary: Opinionated local CI that checks every commit on your machine, for you to
285
+ watch and for your coding agent to ask
286
+ test_files: []