hoe 3.13.0 → 3.13.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|