reissue 0.4.16 → 0.4.18

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: d438320e7dbde72c516a167735971afdf2490f04fd1577799713b4ad5a6bc3bf
4
- data.tar.gz: 593c7a4029f30b05edccec5b3fc41ecf6edd8f55c915c5c4c7430aa411f191d4
3
+ metadata.gz: a2d81243492d9418167e8a70f6f9b36525db84fb631751f3a592e0197e30c106
4
+ data.tar.gz: ef91ae54abde7a9ad9936405f0f2a16d1d1b77896c5abb52613c60b55a7fe1fb
5
5
  SHA512:
6
- metadata.gz: 42d49d6a3517aec2254c1146de03e56fce110d9e1ebacb522dc7d5062c11e2f2f895d6b4dd4d1b7f3ba23c9af465c9e60799bae15a50faaa3943fd06269b4df9
7
- data.tar.gz: 72bec5a3286d02a11e52d44df6260905909b60d5ca89ace23e7550a6f6b5212218a0a92fe388f2a840c2391b6f0b5cc3dc3aa5a98de58d50cda418c1e0c0bc16
6
+ metadata.gz: dd54fb9cbe9012fa1629526e146a913d468bbe7e56cfd39281c23d740f6178e847a03d9add2e71430a56580fa0a28187e30385bbc8f71a6a38c8b703c3866b2d
7
+ data.tar.gz: d023c5ab1a84d4789b4373c0810c6ee96973c27290a3df6e1357aa808e87ceb78d1b82c7313c095bcca3d9735f30e6ad5828b320d41a938f43db57c38ebe0c5f
data/CHANGELOG.md CHANGED
@@ -5,14 +5,21 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
6
6
  and this project adheres to [Semantic Versioning](http://semver.org/).
7
7
 
8
- ## [0.4.16] - 2026-02-24
8
+ ## [0.4.18] - 2026-02-25
9
9
 
10
- ### Fixed
10
+ ### Added
11
+
12
+ - RELEASE_DATE constant tracking in VersionUpdater (496ec6b)
13
+ - Reset RELEASE_DATE to Unreleased when bumping version via Reissue.call (a7894cc)
14
+ - Update RELEASE_DATE to actual date during Reissue.finalize (8253796)
15
+ - RELEASE_DATE to the version.rb (6e08782)
16
+
17
+ ### Changed
11
18
 
12
- - Run bundle install after reissue:bump changes the version (104bfd8)
19
+ - Pass version_file to Reissue.finalize from rake task (83682ff)
13
20
 
14
- ## [0.4.15] - 2026-02-12
21
+ ## [0.4.17] - 2026-02-24
15
22
 
16
23
  ### Fixed
17
24
 
18
- - Non-changelog git trailers no longer appear in changelog entries (18f79e2)
25
+ - Forward tag_pattern to git fragment handler in call and finalize (dd35249)
data/README.md CHANGED
@@ -170,6 +170,28 @@ Reissue::Task.create :reissue do |task|
170
170
  end
171
171
  ```
172
172
 
173
+ ## Tracking Release Dates
174
+
175
+ Reissue can automatically manage a `RELEASE_DATE` constant in your version file alongside `VERSION`. This is completely optional — if no `RELEASE_DATE` is present, nothing changes.
176
+
177
+ ### Opting In
178
+
179
+ Add a `RELEASE_DATE` constant to your version file:
180
+
181
+ ```ruby
182
+ module MyGem
183
+ VERSION = "0.1.0"
184
+ RELEASE_DATE = "Unreleased"
185
+ end
186
+ ```
187
+
188
+ ### What Happens Automatically
189
+
190
+ - **On finalize** (`rake build` / `rake reissue:finalize`): `RELEASE_DATE` is set to the actual release date (e.g., `"2024-06-15"`)
191
+ - **On bump** (`rake reissue` / post-release): `RELEASE_DATE` is reset to `"Unreleased"`
192
+
193
+ No configuration is needed — Reissue detects the constant and updates it automatically.
194
+
173
195
  ## Using Git Trailers for Changelog Entries
174
196
 
175
197
  Reissue can extract changelog entries directly from git commit messages using trailers. This keeps your changelog data close to the code changes.
@@ -21,14 +21,14 @@ module Reissue
21
21
  # @param version_limit [Integer] The number of versions to keep (default: 2).
22
22
  # @param fragment [String] The fragment source configuration (default: nil).
23
23
  # @param fragment_directory [String] @deprecated Use fragment instead
24
- def call(version, date: "Unreleased", changes: {}, changelog_file: @changelog_file, version_limit: 2, retain_changelogs: false, fragment: nil, fragment_directory: nil)
24
+ def call(version, date: "Unreleased", changes: {}, changelog_file: @changelog_file, version_limit: 2, retain_changelogs: false, fragment: nil, fragment_directory: nil, tag_pattern: nil)
25
25
  # Handle deprecation
26
26
  if fragment_directory && !fragment
27
27
  warn "[DEPRECATION] `fragment_directory` parameter is deprecated. Please use `fragment` instead."
28
28
  fragment = fragment_directory
29
29
  end
30
30
 
31
- update(version, date:, changes:, version_limit:, fragment:)
31
+ update(version, date:, changes:, version_limit:, fragment:, tag_pattern:)
32
32
  write(changelog_file, retain_changelogs:)
33
33
 
34
34
  changelog
@@ -57,13 +57,13 @@ module Reissue
57
57
  # @param version_limit [Integer] The number of versions to keep (default: 2).
58
58
  # @param fragment [String] The fragment source configuration (default: nil).
59
59
  # @return [Hash] The updated changelog.
60
- def update(version, date: "Unreleased", changes: {}, version_limit: 2, fragment: nil)
60
+ def update(version, date: "Unreleased", changes: {}, version_limit: 2, fragment: nil, tag_pattern: nil)
61
61
  @changelog = Parser.parse(File.read(@changelog_file))
62
62
 
63
63
  # Merge fragment changes if source is provided
64
64
  merged_changes = changes.dup
65
65
  if fragment
66
- handler = FragmentHandler.for(fragment)
66
+ handler = FragmentHandler.for(fragment, tag_pattern:)
67
67
  fragment_changes = handler.read
68
68
  fragment_changes.each do |section, entries|
69
69
  merged_changes[section] ||= []
data/lib/reissue/rake.rb CHANGED
@@ -201,7 +201,8 @@ module Reissue
201
201
  changelog_file:,
202
202
  version_limit:,
203
203
  version_redo_proc:,
204
- fragment: fragment
204
+ fragment: fragment,
205
+ tag_pattern:
205
206
  )
206
207
  bundle
207
208
 
@@ -245,7 +246,9 @@ module Reissue
245
246
  date,
246
247
  changelog_file:,
247
248
  retain_changelogs:,
248
- fragment: fragment
249
+ fragment: fragment,
250
+ tag_pattern:,
251
+ version_file:
249
252
  )
250
253
  finalize_message = "Finalize the changelog for version #{version} on #{date}"
251
254
  if commit_finalize
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Reissue
4
- VERSION = "0.4.16"
4
+ VERSION = "0.4.18"
5
+ RELEASE_DATE = "2026-02-25"
5
6
  end
@@ -108,6 +108,19 @@ module Reissue
108
108
  VERSION_MATCH = /(?<major>\d+)\.(?<minor>[a-zA-Z\d]+)\.(?<patch>[a-zA-Z\d]+)(?<add>\.(?<pre>[a-zA-Z\d]+))?/
109
109
  def version_regex = VERSION_MATCH
110
110
 
111
+ RELEASE_DATE_MATCH = /RELEASE_DATE\s*=\s*"([^"]*)"/
112
+
113
+ def release_date_regex = RELEASE_DATE_MATCH
114
+
115
+ def update_release_date(date, version_file: @version_file)
116
+ body = File.read(@version_file)
117
+ return unless body.match?(release_date_regex)
118
+ updated = body.gsub(release_date_regex) do |match|
119
+ match.sub(/=\s*"[^"]*"/, "= \"#{date}\"")
120
+ end
121
+ File.write(version_file, updated)
122
+ end
123
+
111
124
  # Writes the updated version to the specified file.
112
125
  #
113
126
  # @param version_file [String] The version_file to the version file (optional, defaults to @version_file).
data/lib/reissue.rb CHANGED
@@ -39,7 +39,8 @@ module Reissue
39
39
  version_limit: 2,
40
40
  version_redo_proc: nil,
41
41
  fragment: nil,
42
- fragment_directory: nil
42
+ fragment_directory: nil,
43
+ tag_pattern: nil
43
44
  )
44
45
  # Handle deprecation
45
46
  if fragment_directory && !fragment
@@ -49,9 +50,10 @@ module Reissue
49
50
 
50
51
  version_updater = VersionUpdater.new(version_file, version_redo_proc:)
51
52
  new_version = version_updater.call(segment, version_file:)
53
+ version_updater.update_release_date("Unreleased", version_file:)
52
54
  if changelog_file
53
55
  changelog_updater = ChangelogUpdater.new(changelog_file)
54
- changelog_updater.call(new_version, date:, changes:, changelog_file:, version_limit:, retain_changelogs:, fragment:)
56
+ changelog_updater.call(new_version, date:, changes:, changelog_file:, version_limit:, retain_changelogs:, fragment:, tag_pattern:)
55
57
  end
56
58
  new_version
57
59
  end
@@ -64,7 +66,7 @@ module Reissue
64
66
  # @param fragment_directory [String] @deprecated Use fragment parameter instead
65
67
  #
66
68
  # @return [Array] The version number and release date.
67
- def self.finalize(date = Date.today, changelog_file: "CHANGELOG.md", retain_changelogs: false, fragment: nil, fragment_directory: nil)
69
+ def self.finalize(date = Date.today, changelog_file: "CHANGELOG.md", retain_changelogs: false, fragment: nil, fragment_directory: nil, tag_pattern: nil, version_file: nil)
68
70
  # Handle deprecation
69
71
  if fragment_directory && !fragment
70
72
  warn "[DEPRECATION] `fragment_directory` parameter is deprecated. Please use `fragment` instead."
@@ -90,7 +92,7 @@ module Reissue
90
92
  changelog_updater.write(changelog_file, retain_changelogs: false)
91
93
 
92
94
  # Get fragment changes
93
- handler = FragmentHandler.for(fragment)
95
+ handler = FragmentHandler.for(fragment, tag_pattern:)
94
96
  fragment_changes = handler.read
95
97
 
96
98
  # Merge existing changes with fragment changes, deduplicating entries
@@ -118,6 +120,11 @@ module Reissue
118
120
  # Now finalize with the date
119
121
  changelog = changelog_updater.finalize(date:, changelog_file:, retain_changelogs:)
120
122
 
123
+ if version_file
124
+ version_updater = VersionUpdater.new(version_file)
125
+ version_updater.update_release_date(date.to_s, version_file:)
126
+ end
127
+
121
128
  changelog["versions"].first.slice("version", "date").values
122
129
  end
123
130
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reissue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.16
4
+ version: 0.4.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Gay