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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/History.rdoc +18 -0
- data/Manifest.txt +1 -0
- data/README.rdoc +1 -0
- data/Rakefile +2 -2
- data/lib/hoe/git.rb +186 -0
- data/lib/hoe.rb +12 -11
- data/test/test_hoe.rb +1 -4
- data/test/test_hoe_test.rb +7 -7
- data.tar.gz.sig +0 -0
- metadata +8 -16
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d748b707bbac7227b49c4cbb8f0a9bb86fca5bdb888b5777fe397e992c5f0ab6
|
|
4
|
+
data.tar.gz: 852ac4e7b19085650bf59100d204ecc2a7d17d199ad9dea5a18b03e932759839
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
data/README.rdoc
CHANGED
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
|
|
22
|
+
require_ruby_version ">= 3.2"
|
|
23
23
|
|
|
24
|
-
dependency "rake",
|
|
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.
|
|
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 =
|
|
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
|
-
|
|
957
|
-
|
|
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
|
|
data/test/test_hoe_test.rb
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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.
|
|
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: '
|
|
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: '
|
|
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
|
|
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.
|
|
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
|