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 +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 +1 -1
- data.tar.gz.sig +0 -0
- metadata +7 -15
- 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
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,10 +158,7 @@ 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
|
- - ">="
|
metadata.gz.sig
CHANGED
|
Binary file
|