hoe 3.13.0 → 3.13.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/History.rdoc +6 -0
- data/Rakefile +7 -5
- data/bin/sow +18 -18
- data/lib/hoe.rb +54 -54
- data/lib/hoe/clean.rb +3 -3
- data/lib/hoe/debug.rb +12 -12
- data/lib/hoe/deps.rb +17 -17
- data/lib/hoe/flay.rb +4 -6
- data/lib/hoe/flog.rb +4 -6
- data/lib/hoe/gemcutter.rb +1 -1
- data/lib/hoe/inline.rb +26 -26
- data/lib/hoe/newb.rb +1 -1
- data/lib/hoe/package.rb +19 -18
- data/lib/hoe/publish.rb +34 -32
- data/lib/hoe/racc.rb +3 -3
- data/lib/hoe/rake.rb +1 -1
- data/lib/hoe/rcov.rb +20 -21
- data/lib/hoe/signing.rb +11 -11
- data/lib/hoe/test.rb +17 -17
- data/test/test_hoe.rb +80 -81
- data/test/test_hoe_debug.rb +15 -15
- data/test/test_hoe_gemcutter.rb +1 -1
- data/test/test_hoe_publish.rb +7 -7
- data/test/test_hoe_test.rb +2 -2
- metadata +6 -11
- metadata.gz.sig +0 -0
data/lib/hoe/debug.rb
CHANGED
@@ -16,12 +16,12 @@ module Hoe::Debug
|
|
16
16
|
# :stopdoc:
|
17
17
|
|
18
18
|
DIFF = if Hoe::WINDOZE
|
19
|
-
|
19
|
+
"diff.exe"
|
20
20
|
else
|
21
21
|
if system("gdiff", __FILE__, __FILE__)
|
22
|
-
|
22
|
+
"gdiff" # solaris and kin suck
|
23
23
|
else
|
24
|
-
|
24
|
+
"diff"
|
25
25
|
end
|
26
26
|
end unless defined? DIFF
|
27
27
|
|
@@ -31,31 +31,31 @@ module Hoe::Debug
|
|
31
31
|
# Define tasks for plugin.
|
32
32
|
|
33
33
|
def define_debug_tasks
|
34
|
-
desc
|
34
|
+
desc "Create a fresh ~/.hoerc file."
|
35
35
|
task :config_hoe do
|
36
36
|
with_config do |config, path|
|
37
37
|
File.open(path, "w") do |f|
|
38
38
|
YAML.dump(Hoe::DEFAULT_CONFIG.merge(config), f)
|
39
39
|
end
|
40
40
|
|
41
|
-
editor = ENV[
|
42
|
-
system "#{editor} #{path}" if ENV[
|
41
|
+
editor = ENV["EDITOR"] || "vi"
|
42
|
+
system "#{editor} #{path}" if ENV["SHOW_EDITOR"] != "no"
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
-
desc
|
46
|
+
desc "Verify the manifest."
|
47
47
|
task :check_manifest => :clean do
|
48
48
|
check_manifest
|
49
49
|
end
|
50
50
|
|
51
|
-
desc
|
51
|
+
desc "Show information about the gem."
|
52
52
|
task :debug_gem do
|
53
53
|
puts spec.to_ruby
|
54
54
|
end
|
55
55
|
|
56
56
|
task :isolate # stub
|
57
57
|
task :irb => :isolate do
|
58
|
-
name = spec.name.gsub("-",
|
58
|
+
name = spec.name.gsub("-", "/")
|
59
59
|
file = (spec.files.grep(/^lib\/#{name}\.rb$/).first ||
|
60
60
|
spec.files.grep(/^lib\/[^\/]*\.rb$/).first)
|
61
61
|
|
@@ -71,12 +71,12 @@ module Hoe::Debug
|
|
71
71
|
|
72
72
|
def check_manifest
|
73
73
|
f = "Manifest.tmp"
|
74
|
-
require
|
74
|
+
require "find"
|
75
75
|
files = []
|
76
76
|
with_config do |config, _|
|
77
77
|
exclusions = config["exclude"]
|
78
78
|
|
79
|
-
Find.find
|
79
|
+
Find.find "." do |path|
|
80
80
|
next unless File.file? path
|
81
81
|
next if path =~ exclusions
|
82
82
|
files << path[2..-1]
|
@@ -84,7 +84,7 @@ module Hoe::Debug
|
|
84
84
|
|
85
85
|
files = files.sort.join "\n"
|
86
86
|
|
87
|
-
File.open f,
|
87
|
+
File.open f, "w" do |fp| fp.puts files end
|
88
88
|
|
89
89
|
verbose = { :verbose => Rake.application.options.verbose }
|
90
90
|
|
data/lib/hoe/deps.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "rubygems/remote_fetcher"
|
2
|
+
require "uri"
|
3
3
|
|
4
4
|
##
|
5
5
|
# Deps plugin for hoe.
|
@@ -15,7 +15,7 @@ module Hoe::Deps
|
|
15
15
|
##
|
16
16
|
# The main rubygems repository.
|
17
17
|
|
18
|
-
GEMURL = URI.parse
|
18
|
+
GEMURL = URI.parse "http://rubygems.org"
|
19
19
|
|
20
20
|
##
|
21
21
|
# Define tasks for plugin.
|
@@ -38,12 +38,12 @@ module Hoe::Deps
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
-
desc
|
41
|
+
desc "Install missing dependencies."
|
42
42
|
task :check_extra_deps do
|
43
43
|
check_extra_deps_task
|
44
44
|
end
|
45
45
|
|
46
|
-
desc
|
46
|
+
desc "Install missing plugins."
|
47
47
|
task :install_plugins do
|
48
48
|
install_missing_plugins
|
49
49
|
end
|
@@ -72,8 +72,8 @@ module Hoe::Deps
|
|
72
72
|
|
73
73
|
puts " dependents:"
|
74
74
|
unless deps.empty? then
|
75
|
-
deps.sort_by
|
76
|
-
vers = spec.dependencies.find {|s| s.name == name}.requirements_list
|
75
|
+
deps.sort_by(&:full_name).each do |spec|
|
76
|
+
vers = spec.dependencies.find { |s| s.name == name }.requirements_list
|
77
77
|
puts " %-*s - %s" % [max, spec.full_name, vers.join(", ")]
|
78
78
|
end
|
79
79
|
else
|
@@ -88,11 +88,11 @@ module Hoe::Deps
|
|
88
88
|
abort "Couldn't find gem: #{self.name}" unless gem
|
89
89
|
|
90
90
|
deps = self.dependent_upon self.name
|
91
|
-
email = deps.map
|
91
|
+
email = deps.map(&:email).compact.flatten.sort.uniq
|
92
92
|
email = email.map { |s| s.split(/,\s*/) }.flatten.sort.uniq
|
93
93
|
|
94
94
|
email.map! { |s| # don't you people realize how easy this is?
|
95
|
-
s.gsub(/ at | _at_ |\s*(atmark|@nospam@|-at?-|@at?@|<at?>|\[at?\]|\(at?\))\s*/i,
|
95
|
+
s.gsub(/ at | _at_ |\s*(atmark|@nospam@|-at?-|@at?@|<at?>|\[at?\]|\(at?\))\s*/i, "@").gsub(/\s*(dot|\[d(ot)?\]|\.dot\.)\s*/i, ".").gsub(/\s+com$/, ".com")
|
96
96
|
}
|
97
97
|
|
98
98
|
bad, good = email.partition { |e| e !~ /^[\w.+-]+\@[\w.+-]+$/ }
|
@@ -111,7 +111,7 @@ module Hoe::Deps
|
|
111
111
|
mkdir "deps" unless File.directory? "deps"
|
112
112
|
Dir.chdir "deps" do
|
113
113
|
begin
|
114
|
-
deps.sort_by
|
114
|
+
deps.sort_by(&:full_name).each do |spec|
|
115
115
|
full_name = spec.full_name
|
116
116
|
tgz_name = "#{full_name}.tgz"
|
117
117
|
gem_name = "#{full_name}.gem"
|
@@ -122,7 +122,7 @@ module Hoe::Deps
|
|
122
122
|
begin
|
123
123
|
warn "downloading #{full_name}"
|
124
124
|
Gem::RemoteFetcher.fetcher.download(spec, GEMURL, Dir.pwd)
|
125
|
-
FileUtils.mv "cache/#{gem_name}",
|
125
|
+
FileUtils.mv "cache/#{gem_name}", "."
|
126
126
|
rescue Gem::RemoteFetcher::FetchError
|
127
127
|
warn " failed"
|
128
128
|
next
|
@@ -149,7 +149,7 @@ module Hoe::Deps
|
|
149
149
|
|
150
150
|
return @@index if @@index
|
151
151
|
|
152
|
-
dump = unless File.exist?
|
152
|
+
dump = unless File.exist? ".source_index" then
|
153
153
|
warn "Fetching full index and caching. This can take a while."
|
154
154
|
url = GEMURL + "Marshal.#{Gem.marshal_version}.Z"
|
155
155
|
dump = Gem::RemoteFetcher.fetcher.fetch_path url
|
@@ -160,15 +160,15 @@ module Hoe::Deps
|
|
160
160
|
|
161
161
|
h = {}
|
162
162
|
Hash[ary].values.sort.each { |spec| h[spec.name] = spec }
|
163
|
-
ary = h.map { |
|
163
|
+
ary = h.map { |_, v| [v.full_name, v] }
|
164
164
|
|
165
165
|
dump = Marshal.dump ary
|
166
166
|
|
167
|
-
open
|
167
|
+
open ".source_index", "wb" do |io| io.write dump end
|
168
168
|
|
169
169
|
dump
|
170
170
|
else
|
171
|
-
open
|
171
|
+
open ".source_index", "rb" do |io| io.read end
|
172
172
|
end
|
173
173
|
|
174
174
|
@@index = Marshal.load dump
|
@@ -194,10 +194,10 @@ module Hoe::Deps
|
|
194
194
|
# Installs plugins that aren't currently installed
|
195
195
|
|
196
196
|
def install_missing_plugins plugins = Hoe.bad_plugins
|
197
|
-
version =
|
197
|
+
version = ">= 0"
|
198
198
|
|
199
199
|
plugins.each do |name|
|
200
|
-
dash_name = name.to_s.gsub
|
200
|
+
dash_name = name.to_s.gsub "_", "-"
|
201
201
|
|
202
202
|
next if have_gem?("hoe-#{name}") or
|
203
203
|
have_gem?(name) or
|
data/lib/hoe/flay.rb
CHANGED
@@ -22,11 +22,9 @@ module Hoe::Flay
|
|
22
22
|
# Define tasks for plugin.
|
23
23
|
|
24
24
|
def define_flay_tasks
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
# skip
|
30
|
-
end
|
25
|
+
require "flay_task"
|
26
|
+
FlayTask.new :flay, self.flay_threshold
|
27
|
+
rescue Exception
|
28
|
+
# skip
|
31
29
|
end
|
32
30
|
end
|
data/lib/hoe/flog.rb
CHANGED
@@ -28,11 +28,9 @@ module Hoe::Flog
|
|
28
28
|
# Define tasks for plugin.
|
29
29
|
|
30
30
|
def define_flog_tasks
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
# skip
|
36
|
-
end
|
31
|
+
require "flog_task"
|
32
|
+
FlogTask.new :flog, self.flog_threshold, nil, self.flog_method
|
33
|
+
rescue LoadError
|
34
|
+
# skip
|
37
35
|
end
|
38
36
|
end
|
data/lib/hoe/gemcutter.rb
CHANGED
data/lib/hoe/inline.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "rbconfig"
|
2
2
|
|
3
3
|
##
|
4
4
|
# Hoe allows bundling of pre-compiled extensions in the +package+ task.
|
@@ -35,36 +35,36 @@ module Hoe::Inline
|
|
35
35
|
def define_inline_tasks
|
36
36
|
task :test => :clean
|
37
37
|
|
38
|
-
|
39
|
-
s.platform = ENV['FORCE_PLATFORM'] || Gem::Platform::CURRENT
|
38
|
+
return unless ENV["INLINE"]
|
40
39
|
|
41
|
-
|
42
|
-
if defined?(Inline) then
|
43
|
-
directory 'lib/inline'
|
40
|
+
s.platform = ENV["FORCE_PLATFORM"] || Gem::Platform::CURRENT
|
44
41
|
|
45
|
-
|
42
|
+
return unless defined? Inline
|
46
43
|
|
47
|
-
|
48
|
-
|
49
|
-
# name of the extension is CamelCase
|
50
|
-
alternate_name = if name =~ /[A-Z]/ then
|
51
|
-
name.gsub(/([A-Z])/, '_\1').downcase.sub(/^_/, '')
|
52
|
-
elsif name =~ /_/ then
|
53
|
-
name.capitalize.gsub(/_([a-z])/) { $1.upcase }
|
54
|
-
end
|
55
|
-
extensions = Dir.chdir(Inline::directory) {
|
56
|
-
Dir["Inline_{#{name},#{alternate_name}}_*.#{dlext}"]
|
57
|
-
}
|
44
|
+
# Try collecting Inline extensions for +name+
|
45
|
+
directory "lib/inline"
|
58
46
|
|
59
|
-
|
60
|
-
# add the inlined extension to the spec files
|
61
|
-
s.files += ["lib/inline/#{ext}"]
|
47
|
+
dlext = RbConfig::CONFIG["DLEXT"]
|
62
48
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
49
|
+
Inline.registered_inline_classes.each do |cls|
|
50
|
+
name = cls.name.gsub(/::/, "")
|
51
|
+
# name of the extension is CamelCase
|
52
|
+
alternate_name = if name =~ /[A-Z]/ then
|
53
|
+
name.gsub(/([A-Z])/, '_\1').downcase.sub(/^_/, "")
|
54
|
+
elsif name =~ /_/ then
|
55
|
+
name.capitalize.gsub(/_([a-z])/) { $1.upcase }
|
56
|
+
end
|
57
|
+
extensions = Dir.chdir(Inline.directory) {
|
58
|
+
Dir["Inline_{#{name},#{alternate_name}}_*.#{dlext}"]
|
59
|
+
}
|
60
|
+
|
61
|
+
extensions.each do |ext|
|
62
|
+
# add the inlined extension to the spec files
|
63
|
+
s.files += ["lib/inline/#{ext}"]
|
64
|
+
|
65
|
+
# include the file in the tasks
|
66
|
+
file "lib/inline/#{ext}" => ["lib/inline"] do
|
67
|
+
cp File.join(Inline.directory, ext), "lib/inline"
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|
data/lib/hoe/newb.rb
CHANGED
@@ -9,7 +9,7 @@ module Hoe::Newb
|
|
9
9
|
# define tasks for the newb plugin
|
10
10
|
def define_newb_tasks
|
11
11
|
desc "Install deps, generate docs, run tests/specs."
|
12
|
-
task :newb => %w
|
12
|
+
task :newb => %w[check_extra_deps install_plugins docs default] do
|
13
13
|
puts <<-END
|
14
14
|
|
15
15
|
GOOD TO GO! Tests are passing, docs are generated,
|
data/lib/hoe/package.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
begin
|
2
|
-
require
|
2
|
+
require "rubygems/package_task"
|
3
3
|
rescue LoadError
|
4
4
|
# rake/gempackagetask will go away some day
|
5
|
-
require
|
5
|
+
require "rake/gempackagetask"
|
6
6
|
Gem::PackageTask = Rake::GemPackageTask
|
7
7
|
end
|
8
8
|
|
@@ -46,12 +46,12 @@ module Hoe::Package
|
|
46
46
|
pkg.need_zip = @need_zip
|
47
47
|
end
|
48
48
|
|
49
|
-
desc
|
49
|
+
desc "Install the package as a gem. (opt. NOSUDO=1)"
|
50
50
|
task :install_gem => [:clean, :package, :check_extra_deps] do
|
51
|
-
install_gem Dir[
|
51
|
+
install_gem Dir["pkg/*.gem"].first
|
52
52
|
end
|
53
53
|
|
54
|
-
desc
|
54
|
+
desc "Package and upload; Requires VERSION=x.y.z (optional PRE=a.1)"
|
55
55
|
task :release => [:prerelease, :release_to, :postrelease]
|
56
56
|
|
57
57
|
# no doco, invisible hook
|
@@ -69,7 +69,7 @@ module Hoe::Package
|
|
69
69
|
task :release_sanity do
|
70
70
|
v = ENV["VERSION"] or abort "Must supply VERSION=x.y.z"
|
71
71
|
|
72
|
-
pre = ENV[
|
72
|
+
pre = ENV["PRERELEASE"] || ENV["PRE"]
|
73
73
|
v += ".#{pre}" if pre
|
74
74
|
|
75
75
|
abort "Versions don't match #{v} vs #{version}" if v != version
|
@@ -87,13 +87,13 @@ module Hoe::Package
|
|
87
87
|
##
|
88
88
|
# Install the named gem.
|
89
89
|
|
90
|
-
def install_gem name, version = nil, rdoc=true
|
90
|
+
def install_gem name, version = nil, rdoc = true
|
91
91
|
should_not_sudo = Hoe::WINDOZE || ENV["NOSUDO"] || File.writable?(Gem.dir)
|
92
|
-
null_dev = Hoe::WINDOZE ?
|
92
|
+
null_dev = Hoe::WINDOZE ? "> NUL 2>&1" : "> /dev/null 2>&1"
|
93
93
|
|
94
|
-
gem_cmd = Gem.default_exec_format %
|
95
|
-
sudo =
|
96
|
-
local =
|
94
|
+
gem_cmd = Gem.default_exec_format % "gem"
|
95
|
+
sudo = "sudo " unless should_not_sudo
|
96
|
+
local = "--local" unless version
|
97
97
|
version = "--version '#{version}'" if version
|
98
98
|
|
99
99
|
cmd = "#{sudo}#{gem_cmd} install #{local} #{name} #{version}"
|
@@ -105,13 +105,14 @@ module Hoe::Package
|
|
105
105
|
end
|
106
106
|
|
107
107
|
def prerelease_version # :nodoc:
|
108
|
-
pre = ENV[
|
109
|
-
if pre then
|
110
|
-
spec.version.version << "." << pre if pre
|
108
|
+
pre = ENV["PRERELEASE"] || ENV["PRE"]
|
111
109
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
110
|
+
return unless pre
|
111
|
+
|
112
|
+
spec.version.version << "." << pre if pre
|
113
|
+
|
114
|
+
abort "ERROR: You should format PRE like pre or alpha.1 or something" if
|
115
|
+
(Gem::VERSION < "1.4" and pre !~ /^[a-z]+(\.\d+)?$/) or
|
116
|
+
(Gem::VERSION >= "1.4" and pre !~ /^[a-z]+(\.?\d+)?$/)
|
116
117
|
end
|
117
118
|
end
|
data/lib/hoe/publish.rb
CHANGED
@@ -79,9 +79,9 @@ module Hoe::Publish
|
|
79
79
|
"url" => "url",
|
80
80
|
"blog_id" => "blog_id",
|
81
81
|
"extra_headers" => {
|
82
|
-
"mt_convert_breaks" => "markdown"
|
82
|
+
"mt_convert_breaks" => "markdown",
|
83
83
|
},
|
84
|
-
}
|
84
|
+
},
|
85
85
|
]
|
86
86
|
|
87
87
|
##
|
@@ -89,11 +89,11 @@ module Hoe::Publish
|
|
89
89
|
|
90
90
|
def initialize_publish
|
91
91
|
self.blog_categories ||= [self.name]
|
92
|
-
self.local_rdoc_dir ||=
|
92
|
+
self.local_rdoc_dir ||= "doc"
|
93
93
|
self.need_rdoc ||= true
|
94
94
|
self.rdoc_locations ||= []
|
95
95
|
self.remote_rdoc_dir ||= self.name
|
96
|
-
self.rsync_args ||=
|
96
|
+
self.rsync_args ||= "-av -O --delete"
|
97
97
|
end
|
98
98
|
|
99
99
|
##
|
@@ -117,7 +117,7 @@ module Hoe::Publish
|
|
117
117
|
|
118
118
|
desc "Generate rdoc coverage report"
|
119
119
|
task :dcov => :isolate do
|
120
|
-
sh(*make_rdoc_cmd(
|
120
|
+
sh(*make_rdoc_cmd("-C"))
|
121
121
|
end
|
122
122
|
|
123
123
|
desc "Remove RDoc files"
|
@@ -127,9 +127,9 @@ module Hoe::Publish
|
|
127
127
|
|
128
128
|
task :clobber => :clobber_docs
|
129
129
|
|
130
|
-
desc
|
130
|
+
desc "Generate ri locally for testing."
|
131
131
|
task :ridocs => [:clean, :isolate] do
|
132
|
-
ruby(*make_rdoc_cmd(
|
132
|
+
ruby(*make_rdoc_cmd("--ri", "-o", "ri"))
|
133
133
|
end
|
134
134
|
end
|
135
135
|
|
@@ -143,7 +143,7 @@ module Hoe::Publish
|
|
143
143
|
publish_on_announce_task
|
144
144
|
end
|
145
145
|
|
146
|
-
desc
|
146
|
+
desc "Generate email announcement file."
|
147
147
|
task :debug_email do
|
148
148
|
puts generate_email
|
149
149
|
end
|
@@ -153,47 +153,47 @@ module Hoe::Publish
|
|
153
153
|
post_blog_task
|
154
154
|
end
|
155
155
|
|
156
|
-
desc
|
156
|
+
desc "Announce your release."
|
157
157
|
task :announce => [:post_blog, :publish_on_announce ]
|
158
158
|
end
|
159
159
|
|
160
160
|
def publish_docs_task # :nodoc:
|
161
161
|
warn "no rdoc_location values" if rdoc_locations.empty?
|
162
162
|
self.rdoc_locations.each do |dest|
|
163
|
-
sh %
|
163
|
+
sh %(rsync #{rsync_args} #{local_rdoc_dir}/ #{dest})
|
164
164
|
end
|
165
165
|
end
|
166
166
|
|
167
167
|
def publish_on_announce_task # :nodoc:
|
168
168
|
with_config do |config, _|
|
169
|
-
Rake::Task[
|
169
|
+
Rake::Task["publish_docs"].invoke if config["publish_on_announce"]
|
170
170
|
end
|
171
171
|
end
|
172
172
|
|
173
173
|
def post_blog_task # :nodoc:
|
174
|
-
with_config do |config,
|
175
|
-
break unless config[
|
174
|
+
with_config do |config, _path|
|
175
|
+
break unless config["blogs"]
|
176
176
|
|
177
|
-
config[
|
178
|
-
if site[
|
179
|
-
msg = "post_blog_#{site[
|
177
|
+
config["blogs"].each do |site|
|
178
|
+
if site["path"] then
|
179
|
+
msg = "post_blog_#{site["type"]}"
|
180
180
|
send msg, site
|
181
181
|
system site["cmd"] if site["cmd"]
|
182
182
|
else
|
183
|
-
require
|
183
|
+
require "xmlrpc/client"
|
184
184
|
|
185
185
|
_, title, body, urls = announcement
|
186
186
|
body += "\n\n#{urls}"
|
187
187
|
|
188
|
-
server = XMLRPC::Client.new2(site[
|
189
|
-
content = site[
|
188
|
+
server = XMLRPC::Client.new2(site["url"])
|
189
|
+
content = site["extra_headers"].merge(:title => title,
|
190
190
|
:description => body,
|
191
191
|
:categories => blog_categories)
|
192
192
|
|
193
|
-
server.call(
|
194
|
-
site[
|
195
|
-
site[
|
196
|
-
site[
|
193
|
+
server.call("metaWeblog.newPost",
|
194
|
+
site["blog_id"],
|
195
|
+
site["user"],
|
196
|
+
site["password"],
|
197
197
|
content,
|
198
198
|
true)
|
199
199
|
end
|
@@ -225,7 +225,7 @@ module Hoe::Publish
|
|
225
225
|
Dir.chdir File.expand_path dir do
|
226
226
|
time = Time.at Time.now.to_i # nukes fractions
|
227
227
|
path = [time.strftime("%Y-%m-%d-"),
|
228
|
-
title.sub(/\W+$/,
|
228
|
+
title.sub(/\W+$/, "").gsub(/\W+/, "-"),
|
229
229
|
".html.md"].join
|
230
230
|
|
231
231
|
header = {
|
@@ -235,7 +235,7 @@ module Hoe::Publish
|
|
235
235
|
}
|
236
236
|
|
237
237
|
File.open path, "w" do |f|
|
238
|
-
f.puts header.to_yaml.gsub(/\s$/,
|
238
|
+
f.puts header.to_yaml.gsub(/\s$/, "")
|
239
239
|
f.puts "..."
|
240
240
|
f.puts
|
241
241
|
f.puts body
|
@@ -244,7 +244,7 @@ module Hoe::Publish
|
|
244
244
|
end
|
245
245
|
|
246
246
|
def generate_email full = nil # :nodoc:
|
247
|
-
require
|
247
|
+
require "time"
|
248
248
|
|
249
249
|
abort "No email 'to' entry. Run `rake config_hoe` to fix." unless
|
250
250
|
!full || email_to
|
@@ -257,9 +257,12 @@ module Hoe::Publish
|
|
257
257
|
full && "To: #{email_to.join(", ")}",
|
258
258
|
full && "Date: #{Time.now.rfc2822}",
|
259
259
|
"Subject: [ANN] #{subject}",
|
260
|
-
"",
|
261
|
-
|
262
|
-
"",
|
260
|
+
"",
|
261
|
+
title,
|
262
|
+
"",
|
263
|
+
urls,
|
264
|
+
"",
|
265
|
+
body,
|
263
266
|
].compact.join("\n")
|
264
267
|
end
|
265
268
|
|
@@ -272,14 +275,13 @@ module Hoe::Publish
|
|
272
275
|
urls =
|
273
276
|
case self.urls
|
274
277
|
when Hash then
|
275
|
-
self.urls.map { |k,v| "* #{k}: <#{v.strip.rdoc_to_markdown}>" }
|
278
|
+
self.urls.map { |k, v| "* #{k}: <#{v.strip.rdoc_to_markdown}>" }
|
276
279
|
when Array then
|
277
280
|
self.urls.map { |s| "* <#{s.strip.rdoc_to_markdown}>" }
|
278
281
|
else
|
279
282
|
raise "unknown urls format: #{urls.inspect}"
|
280
283
|
end
|
281
284
|
|
282
|
-
|
283
285
|
return subject, title, body, urls.join("\n")
|
284
286
|
end
|
285
287
|
end
|
@@ -293,6 +295,6 @@ class String
|
|
293
295
|
# Very basic munge from rdoc to markdown format.
|
294
296
|
|
295
297
|
def rdoc_to_markdown
|
296
|
-
self.gsub(/^mailto:/,
|
298
|
+
self.gsub(/^mailto:/, "").gsub(/^(=+)/) { "#" * $1.size }
|
297
299
|
end
|
298
300
|
end
|