bake-releases 0.4.2 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a93358e129807efef4429aabfa849b76b4a9af22c2d2b39903886169e6f3d2c8
4
- data.tar.gz: c1cd78406a6af653d0cd1d95a19039f836bfb85c8cfa3cf9a98bf12f39741b9e
3
+ metadata.gz: 44c26d3c49f9192ff7d3a832c7113230ed4e8b05c94d52e5066221ab2d095d86
4
+ data.tar.gz: 03acf82d7290306cd93a580444c1103dc96b033018531a8c7fb68718cfde488f
5
5
  SHA512:
6
- metadata.gz: 659a5910c5f299a9379392f95133447805e45280e727fc7f6ecf51857f26bc303f7f530b8309bb4da34fa65755a78126ceb63ec39fb66f5ff77e183ddd89ed74
7
- data.tar.gz: 235f2f78a28a1d1bbe462c7a58c9f6ac585465d119f85785a8c9d835c3b927d0baac9ee0f63fc3cf06b778f8a966031aa5990801a78310da43a741b5e3e0f506
6
+ metadata.gz: 5beb888f70fcc85a794c1fd813accf4765c9f8710f0e54ee56b0faa14deaa9e1bc2ef84460edeb2dbb8a5a88a17323dbb43077dd0bb121abb392a80392d53077
7
+ data.tar.gz: b8f3a83b17a1aa185f87304411a3065adf68312ddbbc8182718193bbe78545a829b55251bef8206fb7503602a55a15a66b20dc6a82490236ece69aad141e8298
checksums.yaml.gz.sig CHANGED
Binary file
data/agent.md ADDED
@@ -0,0 +1,185 @@
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-service
48
+
49
+ A service layer for Async.
50
+
51
+ #### [Getting Started](.context/async-service/getting-started.md)
52
+
53
+ This guide explains how to get started with `async-service` to create and run services in Ruby.
54
+
55
+ #### [Service Architecture](.context/async-service/service-architecture.md)
56
+
57
+ This guide explains the key architectural components of `async-service` and how they work together to provide a clean separation of concerns.
58
+
59
+ #### [Best Practices](.context/async-service/best-practices.md)
60
+
61
+ This guide outlines recommended patterns and practices for building robust, maintainable services with `async-service`.
62
+
63
+ ### bake-gem
64
+
65
+ Release management for Ruby gems.
66
+
67
+ #### [Getting Started](.context/bake-gem/getting-started.md)
68
+
69
+ This guide explains how to use `bake-gem` to release gems safely and efficiently.
70
+
71
+ ### decode
72
+
73
+ Code analysis for documentation generation.
74
+
75
+ #### [Getting Started with Decode](.context/decode/getting-started.md)
76
+
77
+ The Decode gem provides programmatic access to Ruby code structure and metadata. It can parse Ruby files and extract definitions, comments, and documentation pragmas, enabling code analysis, documentation generation, and other programmatic manipulations of Ruby codebases.
78
+
79
+ #### [Documentation Coverage](.context/decode/coverage.md)
80
+
81
+ This guide explains how to test and monitor documentation coverage in your Ruby projects using the Decode gem's built-in bake tasks.
82
+
83
+ #### [Ruby Documentation](.context/decode/ruby-documentation.md)
84
+
85
+ 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.
86
+
87
+ #### [Setting Up RBS Types and Steep Type Checking for Ruby Gems](.context/decode/types.md)
88
+
89
+ This guide covers the process for establishing robust type checking in Ruby gems using RBS and Steep, focusing on automated generation from source documentation and proper validation.
90
+
91
+ ### falcon
92
+
93
+ A fast, asynchronous, rack-compatible web server.
94
+
95
+ #### [Getting Started](.context/falcon/getting-started.md)
96
+
97
+ This guide gives an overview of how to use Falcon for running Ruby web applications.
98
+
99
+ #### [Rails Integration](.context/falcon/rails-integration.md)
100
+
101
+ This guide explains how to host Rails applications with Falcon.
102
+
103
+ #### [Deployment](.context/falcon/deployment.md)
104
+
105
+ 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.
106
+
107
+ #### [Performance Tuning](.context/falcon/performance-tuning.md)
108
+
109
+ This guide explains the performance characteristics of Falcon.
110
+
111
+ #### [WebSockets](.context/falcon/websockets.md)
112
+
113
+ This guide explains how to use WebSockets with Falcon.
114
+
115
+ #### [Interim Responses](.context/falcon/interim-responses.md)
116
+
117
+ This guide explains how to use interim responses in Falcon to send early hints to the client.
118
+
119
+ #### [How It Works](.context/falcon/how-it-works.md)
120
+
121
+ This guide gives an overview of how Falcon handles an incoming web request.
122
+
123
+ ### protocol-http
124
+
125
+ Provides abstractions to handle HTTP protocols.
126
+
127
+ #### [Getting Started](.context/protocol-http/getting-started.md)
128
+
129
+ This guide explains how to use `protocol-http` for building abstract HTTP interfaces.
130
+
131
+ #### [Message Body](.context/protocol-http/message-body.md)
132
+
133
+ This guide explains how to work with HTTP request and response message bodies using `Protocol::HTTP::Body` classes.
134
+
135
+ #### [Middleware](.context/protocol-http/middleware.md)
136
+
137
+ This guide explains how to build and use HTTP middleware with `Protocol::HTTP::Middleware`.
138
+
139
+ #### [Hypertext References](.context/protocol-http/hypertext-references.md)
140
+
141
+ This guide explains how to use `Protocol::HTTP::Reference` for constructing and manipulating hypertext references (URLs with parameters).
142
+
143
+ #### [URL Parsing](.context/protocol-http/url-parsing.md)
144
+
145
+ This guide explains how to use `Protocol::HTTP::URL` for parsing and manipulating URL components, particularly query strings and parameters.
146
+
147
+ #### [Streaming](.context/protocol-http/streaming.md)
148
+
149
+ This guide gives an overview of how to implement streaming requests and responses.
150
+
151
+ #### [Design Overview](.context/protocol-http/design-overview.md)
152
+
153
+ 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.
154
+
155
+ ### sus
156
+
157
+ A fast and scalable test runner.
158
+
159
+ #### [Using Sus Testing Framework](.context/sus/usage.md)
160
+
161
+ Sus is a modern Ruby testing framework that provides a clean, BDD-style syntax for writing tests. It's designed to be fast, simple, and expressive.
162
+
163
+ #### [Mocking](.context/sus/mocking.md)
164
+
165
+ There are two types of mocking in sus: `receive` and `mock`. The `receive` matcher is a subset of full mocking and is used to set expectations on method calls, while `mock` can be used to replace method implementations or set up more complex behavior.
166
+
167
+ #### [Shared Test Behaviors and Fixtures](.context/sus/shared.md)
168
+
169
+ Sus provides shared test contexts which can be used to define common behaviours or tests that can be reused across one or more test files.
170
+
171
+ ### utopia-project
172
+
173
+ A project documentation tool based on Utopia.
174
+
175
+ #### [Getting Started](.context/utopia-project/getting-started.md)
176
+
177
+ This guide explains how to use `utopia-project` to add documentation to your project.
178
+
179
+ #### [Documentation Guides](.context/utopia-project/documentation-guidelines.md)
180
+
181
+ This guide explains how to create and maintain documentation for your project using `utopia-project`.
182
+
183
+ #### [GitHub Pages Integration](.context/utopia-project/github-pages-integration.md)
184
+
185
+ This guide shows you how to use `utopia-project` with GitHub Pages to deploy documentation.
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
5
+
6
+ # Publish a GitHub release for the given version.
7
+ #
8
+ # Requires a `source_code_uri` or `homepage` pointing to `github.com` in the gemspec.
9
+ # Uses the `gh` command-line tool to create the release.
10
+ # Release notes are extracted from `releases.md` for the given version; if none are found, the release is created with empty notes.
11
+ #
12
+ # @parameter tag_name [String] The tag name of the release, e.g. "v1.2.3".
13
+ def release(tag_name)
14
+ require "tempfile"
15
+
16
+ repo = github_repo
17
+ notes = release_notes(tag_name.to_s)
18
+
19
+ Tempfile.create(["release-notes", ".md"]) do |file|
20
+ file.write(notes || "")
21
+ file.flush
22
+
23
+ system(
24
+ "gh", "release", "create", tag_name.to_s,
25
+ "--repo", repo,
26
+ "--title", tag_name.to_s,
27
+ "--notes-file", file.path,
28
+ "--clobber"
29
+ ) or raise "Failed to create GitHub release for #{tag_name}"
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ GITHUB_URI_PATTERN = %r{github\.com[:/]+(?<repo>[^/\s]+/[^/\s]+?)(?:\.git)?$}
36
+
37
+ def github_repo
38
+ gemspec_path = Dir.glob(File.join(context.root, "*.gemspec")).first
39
+ raise "No gemspec found in #{context.root}" unless gemspec_path
40
+
41
+ spec = Gem::Specification.load(gemspec_path)
42
+
43
+ source_uri = spec.metadata&.dig("source_code_uri") || spec.homepage
44
+ raise "No source_code_uri or homepage found in gemspec" unless source_uri
45
+
46
+ match = GITHUB_URI_PATTERN.match(source_uri)
47
+ raise "URI does not appear to be a GitHub repository: #{source_uri}" unless match
48
+
49
+ match[:repo]
50
+ end
51
+
52
+ def release_notes(tag_name, path = File.join(context.root, "releases.md"))
53
+ return nil unless File.exist?(path)
54
+
55
+ require "markly"
56
+ document = Markly.parse(File.read(path))
57
+
58
+ header = document.find_header(tag_name)
59
+ return nil unless header
60
+
61
+ fragment = Markly::Node.new(:document)
62
+ node = header.next
63
+ while node
64
+ break if node.type == :header && node.header_level <= header.header_level
65
+ next_node = node.next
66
+ fragment.append_child(node)
67
+ node = next_node
68
+ end
69
+
70
+ return nil unless fragment.first_child
71
+
72
+ offset = header.header_level - 1
73
+ if offset > 0
74
+ fragment.walk do |node|
75
+ if node.type == :header
76
+ node.header_level -= offset
77
+ end
78
+ end
79
+ end
80
+
81
+ fragment.to_markdown.strip
82
+ end
data/bake/releases.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2024, by Samuel Williams.
4
+ # Copyright, 2024-2025, by Samuel Williams.
5
5
 
6
6
  # Update the 'Unreleased' section of the releases document with the given version number, if it exists.
7
7
  #
@@ -36,7 +36,7 @@ $ bundle add bake-releases
36
36
  # bake.rb
37
37
 
38
38
  def after_gem_release_version_increment(version)
39
- context['releases:update'].call(version)
39
+ context["releases:update"].call(version)
40
40
  end
41
41
  ```
42
42
 
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2024, by Samuel Williams.
4
+ # Copyright, 2024-2025, by Samuel Williams.
5
5
 
6
6
  module Bake
7
7
  module Releases
8
- VERSION = "0.4.2"
8
+ VERSION = "0.5.0"
9
9
  end
10
10
  end
data/license.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # MIT License
2
2
 
3
- Copyright, 2024, by Samuel Williams.
3
+ Copyright, 2024-2025, by Samuel Williams.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/readme.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  Please see the [project releases](https://ioquatix.github.io/bake-releases/releases/index) for all releases.
4
4
 
5
+ ### v0.5.0
6
+
7
+ - Add support for automatic GitHub release creation.
8
+
5
9
  ### v0.4.0
6
10
 
7
11
  - Add documentation and agent context.
data/releases.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Releases
2
2
 
3
+ ## v0.5.0
4
+
5
+ - Add support for automatic GitHub release creation.
6
+
3
7
  ## v0.4.0
4
8
 
5
9
  - Add documentation and agent context.
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bake-releases
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -70,7 +70,9 @@ executables: []
70
70
  extensions: []
71
71
  extra_rdoc_files: []
72
72
  files:
73
+ - agent.md
73
74
  - bake/releases.rb
75
+ - bake/releases/github.rb
74
76
  - context/getting-started.md
75
77
  - context/index.yaml
76
78
  - lib/bake/releases/version.rb
@@ -91,14 +93,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
91
93
  requirements:
92
94
  - - ">="
93
95
  - !ruby/object:Gem::Version
94
- version: '3.2'
96
+ version: '3.3'
95
97
  required_rubygems_version: !ruby/object:Gem::Requirement
96
98
  requirements:
97
99
  - - ">="
98
100
  - !ruby/object:Gem::Version
99
101
  version: '0'
100
102
  requirements: []
101
- rubygems_version: 3.6.9
103
+ rubygems_version: 4.0.3
102
104
  specification_version: 4
103
105
  summary: Releases document management.
104
106
  test_files: []
metadata.gz.sig CHANGED
Binary file