hoe 4.4.0 → 4.5.1

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: 5fa23cd5190ad19cc063a2e29d6fcb4f5d24bc68bc25e1690d3e6736c86529ee
4
+ data.tar.gz: d5d762fec105afa3e15cedf9e2ddcd27bf9d2b0af0e8218d78d577114d55d728
5
5
  SHA512:
6
- metadata.gz: 977ea6dade95007c67b7f8291538ead50ea2a4c951549ca26454802c933a2bd4a81e24ed6faebcc88027e487f7eb7ce1705091dcab91e33941ec3e7be574221e
7
- data.tar.gz: 7df64a23d9b3146559bfbdc16f3d5bfed1a3d8ca74479c3c88db27f1dd5cee6ee53a1fdd31d95af48b66e0ce362c60d022de4f0afc3ab7fd7da6e6722c5afb08
6
+ metadata.gz: 3f19309f13409b25fbceebce8761712eefa9c6714f965839399fcb892afe5b7389cebbded028705492765cb9054b2e1311802a5c822b5f1d0f19656c066c0081
7
+ data.tar.gz: 18d7767064f4870116a032dcb4538bf8ae84b8987d5d5b0ff36f0f156a33972cf6c23b00f28b3ddb0f657c4847827488d29838c4608d25e8fe5cba9cfdc7b9b4
checksums.yaml.gz.sig CHANGED
Binary file
data/History.rdoc CHANGED
@@ -1,3 +1,28 @@
1
+ === 4.5.1 / 2026-01-02
2
+
3
+ * 2 bug fixes:
4
+
5
+ * Bump rdoc dependency to include 7.x.
6
+ * Fix to load hoe plugins w/ camel-case.
7
+
8
+ === 4.5.0 / 2025-12-24
9
+
10
+ * 3 minor enhancements:
11
+
12
+ * Added Hoe::Git plugin, forked from jbarnette/hoe-git + halostatue/hoe-git2
13
+ * Bumped ruby version to 3.2+.
14
+ * Clarified dependency on rake to ~> 13.0.
15
+
16
+ === 4.4.0 / 2025-12-22
17
+
18
+ * 1 minor enhancement:
19
+
20
+ * Added rdoc_options accessor to expose it so you can add more.
21
+
22
+ * 1 bug fix:
23
+
24
+ * Updated File.read_utf to assume String encoding support. (wtn)
25
+
1
26
  === 4.3.0 / 2025-06-17
2
27
 
3
28
  * 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/publish.rb CHANGED
@@ -100,7 +100,7 @@ module Hoe::Publish
100
100
  # Declare a dependency on rdoc, IF NEEDED.
101
101
 
102
102
  def activate_publish_deps
103
- dependency "rdoc", [">= 4.0", "< 7"], :developer if need_rdoc
103
+ dependency "rdoc", [">= 6.0", "< 8"], :developer if need_rdoc
104
104
  end
105
105
 
106
106
  ##
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.1"
91
91
 
92
92
  @@plugins = [:clean, :debug, :deps, :flay, :flog, :newb, :package,
93
93
  :publish, :gemcutter, :signing, :test]
@@ -428,7 +428,8 @@ class Hoe
428
428
  names.reject! { |n| n =~ /^[A-Z_]+$/ }
429
429
 
430
430
  names.each do |name|
431
- next unless Hoe.plugins.include? name.downcase.intern
431
+ underscored = name.gsub(/(?<!^)(?=[A-Z])/, "_").downcase.intern
432
+ next unless Hoe.plugins.include? underscored
432
433
  warn "extend #{name}" if $DEBUG
433
434
  self.extend Hoe.const_get(name)
434
435
  end
data/test/test_hoe.rb CHANGED
@@ -399,7 +399,7 @@ class TestHoe < Minitest::Test
399
399
 
400
400
  expected = [
401
401
  ["hoe", :development, "~> #{Hoe::VERSION.sub(/\.\d+$/, "")}"],
402
- ["rdoc", :development, "< 7", ">= 4.0"],
402
+ ["rdoc", :development, "< 8", ">= 6.0"],
403
403
  ]
404
404
 
405
405
  assert_equal expected, deps.map { |dep|
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.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
@@ -34,42 +34,36 @@ 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
56
50
  requirements:
57
51
  - - ">="
58
52
  - !ruby/object:Gem::Version
59
- version: '4.0'
53
+ version: '6.0'
60
54
  - - "<"
61
55
  - !ruby/object:Gem::Version
62
- version: '7'
56
+ version: '8'
63
57
  type: :development
64
58
  prerelease: false
65
59
  version_requirements: !ruby/object:Gem::Requirement
66
60
  requirements:
67
61
  - - ">="
68
62
  - !ruby/object:Gem::Version
69
- version: '4.0'
63
+ version: '6.0'
70
64
  - - "<"
71
65
  - !ruby/object:Gem::Version
72
- version: '7'
66
+ version: '8'
73
67
  - !ruby/object:Gem::Dependency
74
68
  name: simplecov
75
69
  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