bake-gem-github 0.1.0 → 0.3.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.
data/agents.md DELETED
@@ -1,437 +0,0 @@
1
- # Agent
2
-
3
- ## Context
4
-
5
- This section provides links to documentation from installed packages. It is automatically generated and may be updated by running `bake agent:context:install`.
6
-
7
- **Important:** Before performing any code, documentation, or analysis tasks, always read and apply the full content of any relevant documentation referenced in the following sections. These context files contain authoritative standards and best practices for documentation, code style, and project-specific workflows. **Do not proceed with any actions until you have read and incorporated the guidance from relevant context files.**
8
-
9
- **Setup Instructions:** If the referenced files are not present or if dependencies have been updated, run `bake agent:context:install` to install the latest context files.
10
-
11
- ### agent-context
12
-
13
- Install and manage context files from Ruby gems.
14
-
15
- #### [Getting Started](.context/agent-context/getting-started.md)
16
-
17
- This guide explains how to use `agent-context`, a tool for discovering and installing contextual information from Ruby gems to help AI agents.
18
-
19
- ### async
20
-
21
- A concurrency framework for Ruby.
22
-
23
- #### [Getting Started](.context/async/getting-started.md)
24
-
25
- This guide shows how to add async to your project and run code asynchronously.
26
-
27
- #### [Scheduler](.context/async/scheduler.md)
28
-
29
- This guide gives an overview of how the scheduler is implemented.
30
-
31
- #### [Tasks](.context/async/tasks.md)
32
-
33
- This guide explains how asynchronous tasks work and how to use them.
34
-
35
- #### [Best Practices](.context/async/best-practices.md)
36
-
37
- This guide gives an overview of best practices for using Async.
38
-
39
- #### [Debugging](.context/async/debugging.md)
40
-
41
- This guide explains how to debug issues with programs that use Async.
42
-
43
- #### [Thread safety](.context/async/thread-safety.md)
44
-
45
- This guide explains thread safety in Ruby, focusing on fibers and threads, common pitfalls, and best practices to avoid problems like data corruption, race conditions, and deadlocks.
46
-
47
- ### async-container
48
-
49
- Abstract container-based parallelism using threads and processes where appropriate.
50
-
51
- #### [Getting Started](.context/async-container/getting-started.md)
52
-
53
- This guide explains how to use `async-container` to build basic scalable systems.
54
-
55
- #### [Container Policies](.context/async-container/policies.md)
56
-
57
- This guide explains how to use policies to monitor container health and implement custom failure handling strategies.
58
-
59
- #### [Systemd Integration](.context/async-container/systemd-integration.md)
60
-
61
- This guide explains how to use `async-container` with systemd to manage your application as a service.
62
-
63
- #### [Kubernetes Integration](.context/async-container/kubernetes-integration.md)
64
-
65
- This guide explains how to use `async-container` with Kubernetes to manage your application as a containerized service.
66
-
67
- ### async-http
68
-
69
- A HTTP client and server library.
70
-
71
- #### [Getting Started](.context/async-http/getting-started.md)
72
-
73
- This guide explains how to make HTTP requests and serve HTTP responses with `Async::HTTP`.
74
-
75
- #### [Choosing a Client](.context/async-http/choosing-a-client.md)
76
-
77
- This guide explains how to choose between ruby:`Async::HTTP::Internet`, ruby:`Async::HTTP::Client`, and higher-level interfaces for libraries.
78
-
79
- #### [Concurrent Requests and Connection Pooling](.context/async-http/concurrent-requests.md)
80
-
81
- This guide explains how to run HTTP requests concurrently while keeping request fan-out, connection usage, and resource life cycles bounded.
82
-
83
- #### [Testing](.context/async-http/testing.md)
84
-
85
- This guide explains how to test `Async::HTTP` clients and servers without depending on external HTTP services.
86
-
87
- ### async-http-cache
88
-
89
- Standard-compliant cache for async-http.
90
-
91
- #### [Getting Started](.context/async-http-cache/getting-started.md)
92
-
93
- This guide explains how to get started with `async-http-cache`, a cache middleware for `Async::HTTP` clients and servers.
94
-
95
- ### async-service
96
-
97
- A service layer for Async.
98
-
99
- #### [Getting Started](.context/async-service/getting-started.md)
100
-
101
- This guide explains how to get started with `async-service` to create and run services in Ruby.
102
-
103
- #### [Container Policies](.context/async-service/policies.md)
104
-
105
- This guide explains how to configure container policies for your services and understand the default failure handling behavior.
106
-
107
- #### [Service Architecture](.context/async-service/service-architecture.md)
108
-
109
- This guide explains the key architectural components of `async-service` and how they work together to provide a clean separation of concerns.
110
-
111
- #### [Best Practices](.context/async-service/best-practices.md)
112
-
113
- This guide outlines recommended patterns and practices for building robust, maintainable services with `async-service`.
114
-
115
- #### [Deployment](.context/async-service/deployment.md)
116
-
117
- This guide explains how to deploy `async-service` applications using systemd and Kubernetes. We'll use a simple example service to demonstrate deployment configurations.
118
-
119
- ### bake
120
-
121
- A replacement for rake with a simpler syntax.
122
-
123
- #### [Getting Started](.context/bake/getting-started.md)
124
-
125
- This guide gives a general overview of `bake` and how to use it.
126
-
127
- #### [Command Line Interface](.context/bake/command-line-interface.md)
128
-
129
- The `bake` command is broken up into two main functions: `list` and `call`.
130
-
131
- #### [Project Integration](.context/bake/project-integration.md)
132
-
133
- This guide explains how to add `bake` to a Ruby project.
134
-
135
- #### [Gem Integration](.context/bake/gem-integration.md)
136
-
137
- This guide explains how to add `bake` to a Ruby gem and export standardised tasks for use by other gems and projects.
138
-
139
- #### [Input and Output](.context/bake/input-and-output.md)
140
-
141
- `bake` has built in tasks for reading input and writing output in different formats. While this can be useful for general processing, there are some limitations, notably that rich object representations like `json` and `yaml` often don't support stream processing.
142
-
143
- ### bake-gem
144
-
145
- Release management for Ruby gems.
146
-
147
- #### [Getting Started](.context/bake-gem/getting-started.md)
148
-
149
- This guide explains how to use `bake-gem` to release gems safely and efficiently.
150
-
151
- ### bake-releases
152
-
153
- Releases document management.
154
-
155
- #### [Getting Started](.context/bake-releases/getting-started.md)
156
-
157
- This guide explains how to use `bake-releases` to manage release documentation for your Ruby gem.
158
-
159
- ### console
160
-
161
- Beautiful logging for Ruby.
162
-
163
- #### [Getting Started](.context/console/getting-started.md)
164
-
165
- This guide explains how to use `console` for logging.
166
-
167
- #### [Command Line](.context/console/command-line.md)
168
-
169
- This guide explains how the `console` gem can be controlled using environment variables.
170
-
171
- #### [Configuration](.context/console/configuration.md)
172
-
173
- This guide explains how to implement per-project configuration for the `console` gem.
174
-
175
- #### [Integration](.context/console/integration.md)
176
-
177
- This guide explains how to integrate the `console` output into different systems.
178
-
179
- #### [Events](.context/console/events.md)
180
-
181
- This guide explains how to log structured events with a well-defined schema.
182
-
183
- ### decode
184
-
185
- Code analysis for documentation generation.
186
-
187
- #### [Getting Started](.context/decode/getting-started.md)
188
-
189
- This guide explains how to use `decode` for source code analysis.
190
-
191
- #### [Documentation Coverage](.context/decode/documentation-coverage.md)
192
-
193
- This guide explains how to test and monitor documentation coverage in your Ruby projects using the Decode gem's built-in bake tasks.
194
-
195
- #### [Ruby Documentation](.context/decode/ruby-documentation.md)
196
-
197
- This guide covers documentation practices and pragmas supported by the Decode gem for documenting Ruby code. These pragmas provide structured documentation that can be parsed and used to generate API documentation and achieve complete documentation coverage.
198
-
199
- ### falcon
200
-
201
- A fast, asynchronous, rack-compatible web server.
202
-
203
- #### [Getting Started](.context/falcon/getting-started.md)
204
-
205
- This guide gives an overview of how to use Falcon for running Ruby web applications.
206
-
207
- #### [Rails Integration](.context/falcon/rails-integration.md)
208
-
209
- This guide explains how to host Rails applications with Falcon.
210
-
211
- #### [Deployment](.context/falcon/deployment.md)
212
-
213
- This guide explains how to deploy applications using the Falcon web server. It covers the recommended deployment methods, configuration options, and examples for different environments, including systemd and kubernetes.
214
-
215
- #### [Dynamic Clusters with Envoy](.context/falcon/cluster-deployment.md)
216
-
217
- This guide explains how to run Falcon workers with independently bound endpoints, publish them dynamically using xDS, and balance requests according to their current load using ORCA.
218
-
219
- #### [Performance Tuning](.context/falcon/performance-tuning.md)
220
-
221
- This guide explains the performance characteristics of Falcon.
222
-
223
- #### [WebSockets](.context/falcon/websockets.md)
224
-
225
- This guide explains how to use WebSockets with Falcon.
226
-
227
- #### [Interim Responses](.context/falcon/interim-responses.md)
228
-
229
- This guide explains how to use interim responses in Falcon to send early hints to the client.
230
-
231
- #### [How It Works](.context/falcon/how-it-works.md)
232
-
233
- This guide gives an overview of how Falcon handles an incoming web request.
234
-
235
- ### io-endpoint
236
-
237
- Provides a separation of concerns interface for IO endpoints.
238
-
239
- #### [Getting Started](.context/io-endpoint/getting-started.md)
240
-
241
- This guide explains how to get started with `io-endpoint`, a library that provides a separation of concerns interface for network I/O endpoints.
242
-
243
- #### [Named Endpoints](.context/io-endpoint/named-endpoints.md)
244
-
245
- This guide explains how to use `IO::Endpoint::NamedEndpoints` to manage multiple endpoints by name, enabling scenarios like running the same application on different protocols or ports.
246
-
247
- ### io-event
248
-
249
- An event loop.
250
-
251
- #### [Getting Started](.context/io-event/getting-started.md)
252
-
253
- This guide explains how to use `io-event` for non-blocking IO.
254
-
255
- ### io-stream
256
-
257
- Provides a generic stream wrapper for IO instances.
258
-
259
- #### [Getting Started](.context/io-stream/getting-started.md)
260
-
261
- This guide explains how to use `io-stream` to add efficient buffering to Ruby IO objects.
262
-
263
- #### [High Performance IO](.context/io-stream/high-performance-io.md)
264
-
265
- This guide explains how to achieve optimal performance when using `io-stream` by understanding and controlling flush behavior.
266
-
267
- ### markly
268
-
269
- CommonMark parser and renderer. Written in C, wrapped in Ruby.
270
-
271
- #### [Getting Started](.context/markly/getting-started.md)
272
-
273
- This guide explains now to install and use Markly.
274
-
275
- #### [Extensions](.context/markly/extensions.md)
276
-
277
- This guide explains how to enable and use Markly's Markdown extensions.
278
-
279
- #### [Abstract Syntax Tree](.context/markly/abstract-syntax-tree.md)
280
-
281
- This guide explains how to use Markly's abstract syntax tree (AST) to parse and manipulate Markdown documents.
282
-
283
- #### [Headings](.context/markly/headings.md)
284
-
285
- This guide explains how to work with headings in Markly, including extracting them for navigation and handling duplicate heading text.
286
-
287
- ### protocol-http
288
-
289
- Provides abstractions to handle HTTP protocols.
290
-
291
- #### [Getting Started](.context/protocol-http/getting-started.md)
292
-
293
- This guide explains how to use `protocol-http` for building abstract HTTP interfaces.
294
-
295
- #### [Message Body](.context/protocol-http/message-body.md)
296
-
297
- This guide explains how to work with HTTP request and response message bodies using `Protocol::HTTP::Body` classes.
298
-
299
- #### [Headers](.context/protocol-http/headers.md)
300
-
301
- This guide explains how to work with HTTP headers using `protocol-http`.
302
-
303
- #### [Middleware](.context/protocol-http/middleware.md)
304
-
305
- This guide explains how to build and use HTTP middleware with `Protocol::HTTP::Middleware`.
306
-
307
- #### [Streaming](.context/protocol-http/streaming.md)
308
-
309
- This guide gives an overview of how to implement streaming requests and responses.
310
-
311
- #### [Design Overview](.context/protocol-http/design-overview.md)
312
-
313
- This guide explains the high level design of `protocol-http` in the context of wider design patterns that can be used to implement HTTP clients and servers.
314
-
315
- ### protocol-http1
316
-
317
- A low level implementation of the HTTP/1 protocol.
318
-
319
- #### [Getting Started](.context/protocol-http1/getting-started.md)
320
-
321
- This guide explains how to get started with `protocol-http1`, a low-level implementation of the HTTP/1 protocol for building HTTP clients and servers.
322
-
323
- ### protocol-http2
324
-
325
- A low level implementation of the HTTP/2 protocol.
326
-
327
- #### [Getting Started](.context/protocol-http2/getting-started.md)
328
-
329
- This guide explains how to use the `protocol-http2` gem to implement a basic HTTP/2 client.
330
-
331
- ### protocol-rack
332
-
333
- An implementation of the Rack protocol/specification.
334
-
335
- #### [Getting Started](.context/protocol-rack/getting-started.md)
336
-
337
- This guide explains how to get started with `protocol-rack` and integrate Rack applications with `Protocol::HTTP` servers.
338
-
339
- #### [Request and Response Handling](.context/protocol-rack/request-response.md)
340
-
341
- This guide explains how to work with requests and responses when bridging between Rack and `Protocol::HTTP`, covering advanced use cases and edge cases.
342
-
343
- ### samovar
344
-
345
- Samovar is a flexible option parser excellent support for sub-commands and help documentation.
346
-
347
- #### [Getting Started](.context/samovar/getting-started.md)
348
-
349
- This guide explains how to use `samovar` to build command-line tools and applications.
350
-
351
- #### [Completion](.context/samovar/completion.md)
352
-
353
- This guide explains how to add shell completion to commands built with `samovar`.
354
-
355
- ### sus
356
-
357
- A fast and scalable test runner.
358
-
359
- #### [Getting Started](.context/sus/getting-started.md)
360
-
361
- This guide explains how to use the `sus` gem to write tests for your Ruby projects.
362
-
363
- #### [Mocking](.context/sus/mocking.md)
364
-
365
- This guide explains how to use mocking in sus to isolate dependencies and verify interactions in your tests.
366
-
367
- #### [Shared Test Behaviors and Fixtures](.context/sus/shared-contexts.md)
368
-
369
- This guide explains how to use shared test contexts and fixtures in sus to reduce duplication and ensure consistent test behavior across your test suite.
370
-
371
- ### traces
372
-
373
- Application instrumentation and tracing.
374
-
375
- #### [Getting Started](.context/traces/getting-started.md)
376
-
377
- This guide explains how to use `traces` for tracing code execution.
378
-
379
- #### [Context Propagation](.context/traces/context-propagation.md)
380
-
381
- This guide explains how to propagate trace context between different execution contexts within your application using `Traces.current_context` and `Traces.with_context`.
382
-
383
- #### [Testing](.context/traces/testing.md)
384
-
385
- This guide explains how to test traces in your code.
386
-
387
- #### [Capture](.context/traces/capture.md)
388
-
389
- This guide explains how to use `traces` for exporting traces from your application. This can be used to document all possible traces.
390
-
391
- ### utopia
392
-
393
- Utopia is a framework for building dynamic content-driven websites.
394
-
395
- #### [Getting Started](.context/utopia/getting-started.md)
396
-
397
- This guide explains how to set up a `utopia` website for local development and deployment.
398
-
399
- #### [Middleware](.context/utopia/middleware.md)
400
-
401
- This guide gives an overview of the different middleware used by Utopia.
402
-
403
- #### [Server Setup](.context/utopia/server-setup.md)
404
-
405
- This guide explains how to deploy a `utopia` web application.
406
-
407
- #### [Integrating with JavaScript](.context/utopia/integrating-with-javascript.md)
408
-
409
- This guide explains how to integrate JavaScript into your Utopia application.
410
-
411
- #### [What is XNode?](.context/utopia/what-is-xnode.md)
412
-
413
- This guide explains the `xnode` view layer and how it can be used to build efficient websites.
414
-
415
- #### [Updating Utopia](.context/utopia/updating-utopia.md)
416
-
417
- This guide explains how to update existing `utopia` websites.
418
-
419
- ### utopia-project
420
-
421
- A project documentation tool based on Utopia.
422
-
423
- #### [Getting Started](.context/utopia-project/getting-started.md)
424
-
425
- This guide explains how to use `utopia-project` to add documentation to your project.
426
-
427
- #### [Documentation Guides](.context/utopia-project/documentation-guidelines.md)
428
-
429
- This guide explains how to create and maintain documentation for your project using `utopia-project`.
430
-
431
- #### [Mermaid Diagrams](.context/utopia-project/mermaid-diagrams.md)
432
-
433
- This guide explains how to use Mermaid diagrams in your documentation to visualize complex relationships, flows, and architectures.
434
-
435
- #### [GitHub Pages Integration](.context/utopia-project/github-pages-integration.md)
436
-
437
- This guide shows you how to use `utopia-project` with GitHub Pages to deploy documentation.
@@ -1,17 +0,0 @@
1
- # Releases
2
-
3
- Prepare releases with `bundle exec bake gem:github:release:patch` (or `minor` / `major`), or dispatch `release-prepare.yaml` on the default branch. Core `gem:release:branch:*` tasks only create a local branch and commit; they do not push or publish.
4
-
5
- Review the entire release diff. Native GitHub rules require the configured reviews and CI, including an up-to-date branch and **Release validation**. Administrators can explicitly bypass the review/check rules. A rebase is sufficient only if regenerated content still matches. If notes are stale, prepare again from the current default branch and preserve any manual edits separately for review.
6
-
7
- Merging a version increase publishes the actual merged commit through `release-publish.yaml`. There is no second release approval. The public `release.cert` stays in Git; the optional private key belongs in the Actions secret `GEM_SIGNING_KEY`, supplied by the `rubygems` environment or an organization secret. RubyGems authentication uses Trusted Publishing.
8
-
9
- Before uploading to RubyGems, the publisher preserves the verified gem, receipt and both attestation bundles as assets of a draft GitHub release. The draft becomes public after registry verification and tag creation. Registry propagation is retried for up to one minute.
10
-
11
- If a publishing job fails, use **Re-run all jobs** on that same workflow run, or `bundle exec bake gem:github:release:resume run=RUN_ID`. The original artifact is restored from the workflow artifact or GitHub release before another upload is attempted. Actions artifacts can disappear on rerun, so the draft release is the durable backup. Do not delete it, create a replacement version bump or rebuild an already-published version. Conflicting bytes or tags require investigation; never automatically yank a version or move a tag. An incomplete draft requires restoring the missing original files before retrying.
12
-
13
- Verify both the downloaded gem and `release.json` with `gh attestation verify`, enforcing the publishing workflow's certificate identity and default branch ref. Then check the signed receipt's source commit and gem digest; follow the companion gem's setup guide for the complete commands. `--source-digest` checks the workflow revision, which can differ from the release commit. Release assets include the gem, RubyGems Sigstore bundle, GitHub provenance bundle, and signed source/digest receipt.
14
-
15
- The initial implementation supports public repositories, a single gemspec, stable patch/minor/major versions, and merge/squash commits. Keep rebase merges and merge queues disabled. Generation hooks must be repeatable from the same source and version. Run setup and account recovery checks before enabling publishing; see the companion gem's setup guide.
16
-
17
- After upgrading `bake-gem-github`, start from a clean working tree and run `bundle exec bake gem:github:setup:update`. It updates generated files without staging or committing them. Review `git diff`, selectively keep changes and restore customizations as needed, then open a PR.