hoe 4.4.0 → 4.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: 1c31e0e3362927291031e62734b470e8f4f0c16becc1414189fabb72b55dcff4
4
- data.tar.gz: 8a5d6ff3863b75d249e4cf5950b505969cf8b1d793e6f2be7b9e357708d5b856
3
+ metadata.gz: d748b707bbac7227b49c4cbb8f0a9bb86fca5bdb888b5777fe397e992c5f0ab6
4
+ data.tar.gz: 852ac4e7b19085650bf59100d204ecc2a7d17d199ad9dea5a18b03e932759839
5
5
  SHA512:
6
- metadata.gz: 977ea6dade95007c67b7f8291538ead50ea2a4c951549ca26454802c933a2bd4a81e24ed6faebcc88027e487f7eb7ce1705091dcab91e33941ec3e7be574221e
7
- data.tar.gz: 7df64a23d9b3146559bfbdc16f3d5bfed1a3d8ca74479c3c88db27f1dd5cee6ee53a1fdd31d95af48b66e0ce362c60d022de4f0afc3ab7fd7da6e6722c5afb08
6
+ metadata.gz: f306370fc2778a4cf015df82b93a61c13caf08eaaf867ab8e7a4d3ef5010df70d5e9d648769004b47889d7e55d6c63846d2e73dfe999b2409fb078c88411dcdd
7
+ data.tar.gz: f0bb47cc94f3bdf33cc68c9ceb07347219e443540f51abbac269acd6eefc39f333f48b4156acaad64307a83f510ee9921d4503c7c44a13e7dff4faed540b7860
checksums.yaml.gz.sig CHANGED
Binary file
data/History.rdoc CHANGED
@@ -1,3 +1,21 @@
1
+ === 4.5.0 / 2025-12-24
2
+
3
+ * 3 minor enhancements:
4
+
5
+ * Added Hoe::Git plugin, forked from jbarnette/hoe-git + halostatue/hoe-git2
6
+ * Bumped ruby version to 3.2+.
7
+ * Clarified dependency on rake to ~> 13.0.
8
+
9
+ === 4.4.0 / 2025-12-22
10
+
11
+ * 1 minor enhancement:
12
+
13
+ * Added rdoc_options accessor to expose it so you can add more.
14
+
15
+ * 1 bug fix:
16
+
17
+ * Updated File.read_utf to assume String encoding support. (wtn)
18
+
1
19
  === 4.3.0 / 2025-06-17
2
20
 
3
21
  * 4 bug fixes:
data/Manifest.txt CHANGED
@@ -15,6 +15,7 @@ lib/hoe/flay.rb
15
15
  lib/hoe/flog.rb
16
16
  lib/hoe/gem_prelude_sucks.rb
17
17
  lib/hoe/gemcutter.rb
18
+ lib/hoe/git.rb
18
19
  lib/hoe/inline.rb
19
20
  lib/hoe/newb.rb
20
21
  lib/hoe/package.rb
data/README.rdoc CHANGED
@@ -167,6 +167,7 @@ Again, this must be done before the Hoe spec, or it won't be useful.
167
167
  * Hoe::Flog
168
168
  * Hoe::GemPreludeSucks
169
169
  * Hoe::Gemcutter
170
+ * Hoe::Git
170
171
  * Hoe::Inline
171
172
  * Hoe::Newb
172
173
  * Hoe::Package
data/Rakefile CHANGED
@@ -19,9 +19,9 @@ Hoe.spec "hoe" do
19
19
 
20
20
  pluggable!
21
21
  require_rubygems_version ">= 3.0"
22
- require_ruby_version [">= 2.7", "< 4"]
22
+ require_ruby_version ">= 3.2"
23
23
 
24
- dependency "rake", [">= 0.8", "< 15.0"] # FIX: to force it to exist pre-isolate
24
+ dependency "rake", "~> 13.0" # FIX: to force it to exist pre-isolate
25
25
  end
26
26
 
27
27
  task :plugins do
data/lib/hoe/git.rb ADDED
@@ -0,0 +1,186 @@
1
+ class Hoe # :nodoc:
2
+
3
+ ##
4
+ # This module is a Hoe plugin. You can set its attributes in your
5
+ # Rakefile Hoe spec, like this:
6
+ #
7
+ # Hoe.plugin :git
8
+ #
9
+ # Hoe.spec "myproj" do
10
+ # self.git_release_tag_prefix = "REL_"
11
+ # self.git_remotes << "myremote"
12
+ # end
13
+ #
14
+ #
15
+ # === Tasks
16
+ #
17
+ # git:changelog:: Print the current changelog.
18
+ # git:manifest:: Update the manifest with Git's file list.
19
+ # git:tag:: Create and push a tag.
20
+
21
+ module Git
22
+
23
+ ##
24
+ # What do you want at the front of your release tags?
25
+ # [default: <tt>"v"</tt>]
26
+
27
+ attr_accessor :git_release_tag_prefix
28
+
29
+ ##
30
+ # Which remotes do you want to push tags, etc. to?
31
+ # [default: <tt>%w[ origin ]</tt>]
32
+
33
+ attr_accessor :git_remotes
34
+
35
+ attr_accessor :git_changes # :nodoc:
36
+
37
+ def initialize_git # :nodoc:
38
+ self.git_release_tag_prefix = "v"
39
+ self.git_remotes = %w[ origin ]
40
+ end
41
+
42
+ def define_git_tasks # :nodoc:
43
+ return unless File.exist? ".git"
44
+
45
+ desc "Print the current changelog."
46
+ task "git:changelog" do
47
+ tag = ENV["FROM"] || git_tags.last
48
+ range = [tag, "HEAD"].compact.join ".."
49
+
50
+ changes = `git log #{range} --format="tformat:%B|||%aN|||%aE|||"`
51
+ .split("|||")
52
+ .each_slice(3)
53
+ .map { |msg, author, email|
54
+ msg.lines(chomp: true).reject(&:empty?)
55
+ }
56
+ .flatten
57
+
58
+ next if changes.empty?
59
+
60
+ self.git_changes = Hash.new { |h, k| h[k] = [] }
61
+
62
+ codes = {
63
+ "!" => :major,
64
+ "+" => :minor,
65
+ "*" => :minor,
66
+ "-" => :bug,
67
+ "?" => :unknown,
68
+ }
69
+
70
+ codes_re = Regexp.escape codes.keys.join
71
+
72
+ changes.each do |change|
73
+ if change =~ /^\s*([#{codes_re}])\s*(.*)/ then
74
+ code, line = codes[$1], $2
75
+ else
76
+ code, line = codes["?"], change.chomp
77
+ end
78
+
79
+ git_changes[code] << line
80
+ end
81
+
82
+ now = Time.new.strftime "%Y-%m-%d"
83
+
84
+ puts "=== #{ENV["VERSION"] || "NEXT"} / #{now}"
85
+ puts
86
+ changelog_section :major
87
+ changelog_section :minor
88
+ changelog_section :bug
89
+ changelog_section :unknown
90
+ puts
91
+ end
92
+
93
+ desc "Update the manifest with Git's file list. Use Hoe's excludes."
94
+ task "git:manifest" do
95
+ with_config do |config, _|
96
+ files = `git ls-files`
97
+ .lines(chomp:true)
98
+ .grep_v(config["exclude"])
99
+
100
+ File.write "Manifest.txt", files.sort.join("\n")
101
+ end
102
+ end
103
+
104
+ desc "Create and push a TAG " +
105
+ "(default #{git_release_tag_prefix}#{version})."
106
+
107
+ task "git:tag" do
108
+ tag = ENV["TAG"]
109
+ ver = ENV["VERSION"] || version
110
+ pre = ENV["PRERELEASE"] || ENV["PRE"]
111
+ ver += ".#{pre}" if pre
112
+ tag ||= "#{git_release_tag_prefix}#{ver}"
113
+
114
+ git_tag_and_push tag
115
+ end
116
+
117
+ task "git:tags" do
118
+ p git_tags
119
+ end
120
+
121
+ task :release_sanity do
122
+ unless ENV["DIRTY"] or `git status --porcelain`.empty?
123
+ abort "Won't release: Dirty index or untracked files present!"
124
+ end
125
+ end
126
+
127
+ task :release_to => "git:tag"
128
+ end
129
+
130
+ ##
131
+ # Generate a tag and push it to all remotes.
132
+
133
+ def git_tag_and_push tag
134
+ msg = "Tagging #{tag}."
135
+
136
+ flags = " -s" unless `git config --get user.signingkey`.empty?
137
+
138
+ sh %Q(git tag#{flags} -f #{tag} -m "#{msg}")
139
+ git_remotes.each { |remote| sh "git push -f #{remote} tag #{tag}" }
140
+ end
141
+
142
+ ##
143
+ # Return all git tags massaged down to readable versions.
144
+
145
+ def git_tags
146
+ flags = %w[--date-order
147
+ --reverse
148
+ --simplify-by-decoration
149
+ --pretty=format:%H].join " "
150
+ shas = `git log #{flags}`.lines(chomp: true)
151
+
152
+ `git name-rev --tags #{shas.join " "}`
153
+ .lines
154
+ .map { |s| s[/tags\/(#{git_release_tag_prefix}.+)/, 1] }
155
+ .compact
156
+ .map { |s| s.sub(/\^0$/, "") } # v1.2.3^0 -> v1.2.3 (why?)
157
+ .grep(%r{^#{git_release_tag_prefix}}) # TODO: remove?
158
+ end
159
+
160
+ ##
161
+ # Generate and print a changelog section based on the +code+.
162
+
163
+ def changelog_section code
164
+ name = +{
165
+ :major => "major enhancement",
166
+ :minor => "minor enhancement",
167
+ :bug => "bug fix",
168
+ :unknown => "unknown",
169
+ }[code]
170
+
171
+ changes = git_changes[code]
172
+ count = changes.size
173
+ name += "s" if count > 1
174
+ name.sub!(/fixs/, "fixes")
175
+
176
+ return if count < 1
177
+
178
+ puts "* #{count} #{name}:"
179
+ puts
180
+ changes.sort.each do |line|
181
+ puts " * #{line}"
182
+ end
183
+ puts
184
+ end
185
+ end
186
+ end
data/lib/hoe.rb CHANGED
@@ -87,7 +87,7 @@ class Hoe
87
87
  include Rake::DSL if defined?(Rake::DSL)
88
88
 
89
89
  # duh
90
- VERSION = "4.3.0"
90
+ VERSION = "4.5.0"
91
91
 
92
92
  @@plugins = [:clean, :debug, :deps, :flay, :flog, :newb, :package,
93
93
  :publish, :gemcutter, :signing, :test]
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hoe
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.4.0
4
+ version: 4.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -34,22 +34,16 @@ dependencies:
34
34
  name: rake
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: '0.8'
40
- - - "<"
37
+ - - "~>"
41
38
  - !ruby/object:Gem::Version
42
- version: '15.0'
39
+ version: '13.0'
43
40
  type: :runtime
44
41
  prerelease: false
45
42
  version_requirements: !ruby/object:Gem::Requirement
46
43
  requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- version: '0.8'
50
- - - "<"
44
+ - - "~>"
51
45
  - !ruby/object:Gem::Version
52
- version: '15.0'
46
+ version: '13.0'
53
47
  - !ruby/object:Gem::Dependency
54
48
  name: rdoc
55
49
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +116,7 @@ files:
122
116
  - lib/hoe/flog.rb
123
117
  - lib/hoe/gem_prelude_sucks.rb
124
118
  - lib/hoe/gemcutter.rb
119
+ - lib/hoe/git.rb
125
120
  - lib/hoe/inline.rb
126
121
  - lib/hoe/newb.rb
127
122
  - lib/hoe/package.rb
@@ -163,10 +158,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
163
158
  requirements:
164
159
  - - ">="
165
160
  - !ruby/object:Gem::Version
166
- version: '2.7'
167
- - - "<"
168
- - !ruby/object:Gem::Version
169
- version: '4'
161
+ version: '3.2'
170
162
  required_rubygems_version: !ruby/object:Gem::Requirement
171
163
  requirements:
172
164
  - - ">="
metadata.gz.sig CHANGED
Binary file