hoe 4.3.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: 232664e1c18f9f6b79de0bab5fcf3688f2b8a4e15678b64ade007348e0a4ea79
4
- data.tar.gz: 3e0f8ee572a3d43d264a9d73deadf9cdcc56fe1e8afe3debe9c584316f8bc0ce
3
+ metadata.gz: d748b707bbac7227b49c4cbb8f0a9bb86fca5bdb888b5777fe397e992c5f0ab6
4
+ data.tar.gz: 852ac4e7b19085650bf59100d204ecc2a7d17d199ad9dea5a18b03e932759839
5
5
  SHA512:
6
- metadata.gz: c4c79031e28176a1975dca3b1631b0d31db90ee56abea92a37f7038095a9f102f4cdf36025917a93a8e9ad77ccbaf21178d324f53e6495f52be11c7a9599dcea
7
- data.tar.gz: 8a5ceb14b19e6eb056f279c0b7240b4654b2fca73b8fc0ae35bd69a5b39240fe83e26c7e3f5ca527bdec61a0b15963c89c73a3336f15cd81d4c6dc6b3a38548d
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]
@@ -181,6 +181,11 @@ class Hoe
181
181
 
182
182
  attr_accessor :extra_dev_deps
183
183
 
184
+ ##
185
+ # Optional: rdoc arguments to be used when generating rdoc.
186
+
187
+ attr_accessor :rdoc_options
188
+
184
189
  ##
185
190
  # Optional: Extra files you want to add to RDoc.
186
191
  #
@@ -544,7 +549,7 @@ class Hoe
544
549
  s.bindir = bindir || "bin"
545
550
  s.executables = s.files.grep(/^#{s.bindir}/) { |f| File.basename(f) }
546
551
  s.require_paths = dirs unless dirs.empty?
547
- s.rdoc_options = ["--main", readme_file]
552
+ s.rdoc_options = rdoc_options
548
553
  s.post_install_message = post_install_message
549
554
  s.metadata = (urls.keys & URLS_TO_META_MAP.keys).map { |name|
550
555
  [URLS_TO_META_MAP[name], urls[name]]
@@ -663,6 +668,9 @@ class Hoe
663
668
  self.history_file ||= Dir.glob("History.{rdoc,txt,md}").first || "History.txt"
664
669
  self.readme_file ||= Dir.glob("README.{rdoc,txt,md}").first || "README.txt"
665
670
 
671
+ # delayed to set readme_file first
672
+ self.rdoc_options = ["--main", readme_file]
673
+
666
674
  abort "Hoe.new {...} removed. Switch to Hoe.spec." if block_given?
667
675
  end
668
676
 
@@ -953,15 +961,8 @@ end
953
961
  class File # :nodoc:
954
962
  # Like File::read, but strips out a BOM marker if it exists.
955
963
  def self.read_utf path
956
- r19 = "<3".respond_to? :encoding
957
- opt = r19 ? "r:bom|utf-8" : "rb"
958
-
959
- open path, opt do |f|
960
- if r19 then
961
- f.read
962
- else
963
- f.read.sub %r%\A\xEF\xBB\xBF%, ""
964
- end
964
+ open path, "r:bom|utf-8" do |f|
965
+ f.read
965
966
  end
966
967
  end
967
968
  end
data/test/test_hoe.rb CHANGED
@@ -192,10 +192,7 @@ class TestHoe < Minitest::Test
192
192
 
193
193
  content = File.read_utf io.path
194
194
  assert_equal "BOM", content
195
-
196
- if content.respond_to? :encoding then
197
- assert_equal Encoding::UTF_8, content.encoding
198
- end
195
+ assert_equal Encoding::UTF_8, content.encoding
199
196
  end
200
197
  end
201
198
 
@@ -28,11 +28,9 @@ class TestHoeTest < Minitest::Test
28
28
 
29
29
  MT_EXPECTED = %W[-I#{mt_path} -w
30
30
  -e '%srequire "test/test_hoe_test.rb"'
31
- --].join(" ") + " "
31
+ -- %s].join(" ")
32
32
 
33
33
  def test_make_test_cmd_for_minitest
34
- skip "Using TESTOPTS... skipping" if ENV["TESTOPTS"]
35
-
36
34
  framework = %(require "minitest/autorun"; )
37
35
 
38
36
  @tester = Minitest::TestTask.create :testtest do |t|
@@ -40,12 +38,12 @@ class TestHoeTest < Minitest::Test
40
38
  t.test_globs = ["test/test_hoe_test.rb"]
41
39
  end
42
40
 
43
- assert_equal MT_EXPECTED % [framework].join("; "), @tester.make_test_cmd
41
+ fw = [framework].join("; ")
42
+ env = ENV["A"]
43
+ assert_equal MT_EXPECTED % [fw, env], @tester.make_test_cmd
44
44
  end
45
45
 
46
46
  def test_make_test_cmd_for_minitest_prelude
47
- skip "Using TESTOPTS... skipping" if ENV["TESTOPTS"]
48
-
49
47
  prelude = %(require "other/file")
50
48
  framework = %(require "minitest/autorun"; )
51
49
 
@@ -55,6 +53,8 @@ class TestHoeTest < Minitest::Test
55
53
  t.test_globs = ["test/test_hoe_test.rb"]
56
54
  end
57
55
 
58
- assert_equal MT_EXPECTED % [prelude, framework].join("; "), @tester.make_test_cmd
56
+ prelude = [prelude, framework].join("; ")
57
+ env = ENV["A"]
58
+ assert_equal MT_EXPECTED % [prelude, env], @tester.make_test_cmd
59
59
  end
60
60
  end
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.3.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,17 +158,14 @@ 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
  - - ">="
173
165
  - !ruby/object:Gem::Version
174
166
  version: '3.0'
175
167
  requirements: []
176
- rubygems_version: 3.7.1
168
+ rubygems_version: 3.7.2
177
169
  specification_version: 4
178
170
  summary: Hoe is a rake/rubygems helper for project Rakefiles
179
171
  test_files: []
metadata.gz.sig CHANGED
Binary file