reap 9.2.1 → 9.3.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.
- data/CHANGES +4 -0
- data/COPYING +675 -674
- data/MANIFEST +37 -44
- data/NOTES +4 -4
- data/Rakefile +1486 -0
- data/data/reap/base/COPYING +674 -674
- data/data/reap/base/README +23 -2
- data/data/reap/base/Rakefile +1486 -0
- data/data/reap/base/test/template.rb +16 -0
- data/data/reap/init/meta/project.yaml +19 -14
- data/lib/reap/default.yaml +57 -45
- data/lib/reap/extensions/file.rb +8 -0
- data/lib/reap/extensions/net/smtp_tls.rb +108 -0
- data/lib/reap/extensions.rb +2 -0
- data/lib/reap/metadata.rb +3 -2
- data/lib/reap/{manager → project}/announce.rb +3 -3
- data/lib/reap/{manager → project}/check.rb +1 -1
- data/lib/reap/{manager → project}/clean.rb +1 -1
- data/lib/reap/{manager → project}/gem.rb +5 -5
- data/lib/reap/{manager → project}/html.rb +25 -24
- data/lib/reap/{manager → project}/log.rb +19 -9
- data/lib/reap/{manager → project}/make.rb +29 -36
- data/lib/reap/{manager → project}/package.rb +4 -8
- data/lib/reap/{manager → project}/publish.rb +3 -3
- data/lib/reap/{manager → project}/rdoc.rb +13 -30
- data/lib/reap/{manager → project}/release.rb +5 -5
- data/lib/reap/{manager → project}/rubyforge.rb +7 -6
- data/lib/reap/{manager → project}/scaffold.rb +7 -2
- data/lib/reap/{manager → project}/scm.rb +3 -3
- data/lib/reap/{manager → project}/site.rb +1 -1
- data/lib/reap/{manager → project}/spec.rb +1 -1
- data/lib/reap/{manager → project}/stamp.rb +14 -11
- data/lib/reap/{manager → project}/stats.rb +1 -1
- data/lib/reap/{manager → project}/svn.rb +1 -1
- data/lib/reap/{manager → project}/test.rb +2 -20
- data/lib/reap/project.rb +34 -2
- data/lib/reap/systems/rubyforge.rb +5 -12
- data/lib/reap/systems/subversion.rb +4 -6
- data/lib/reap/{utilities/fileutils.rb → utilities.rb} +148 -60
- data/log/Changelog.txt +118 -0
- data/log/Fixme.txt +26 -0
- data/log/Todo.txt +94 -0
- data/meta/VERSION +1 -1
- data/meta/project.yaml +1 -1
- data/meta/unixname +1 -0
- data/test/unit/lib/reap/extensions/test_array.rb +12 -0
- metadata +44 -46
- data/data/reap/build/rake/Rakefile +0 -130
- data/data/reap/build/rake/setup.rb +0 -1616
- data/data/reap/build/rake-lite/install.rb +0 -79
- data/data/reap/build/tasks/task/rdoc +0 -211
- data/data/reap/build/tasks/task/setup +0 -1616
- data/data/reap/build/tasks/task/test +0 -38
- data/lib/reap/manager.rb +0 -75
- data/lib/reap/utilities/netutils.rb +0 -221
- data/lib/reap/utilities/setuputils.rb +0 -124
- data/lib/reap/utilities/shellutils.rb +0 -175
- data/log/FIXME.txt +0 -25
- data/log/TODO.txt +0 -72
- data/task/man +0 -14
- data/task/rdoc +0 -20
- data/task/setup +0 -1616
@@ -1,8 +1,8 @@
|
|
1
|
-
require 'reap/
|
1
|
+
require 'reap/project/gem'
|
2
2
|
|
3
3
|
module Reap
|
4
4
|
|
5
|
-
class
|
5
|
+
class Project
|
6
6
|
|
7
7
|
# Remove packages.
|
8
8
|
|
@@ -38,10 +38,10 @@ module Reap
|
|
38
38
|
formats = packopts['formats'] || ['zip']
|
39
39
|
formats = [formats].flatten
|
40
40
|
|
41
|
-
puts
|
41
|
+
puts unless dryrun?
|
42
42
|
formats.each do |format|
|
43
43
|
send("package_#{format}", options)
|
44
|
-
puts
|
44
|
+
puts unless dryrun?
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
@@ -54,8 +54,6 @@ module Reap
|
|
54
54
|
# Create a Tar'd Gzip package.
|
55
55
|
|
56
56
|
def package_tgz(options=nil)
|
57
|
-
status "Creating .tgz package"
|
58
|
-
|
59
57
|
options = configure_options(options, 'package-tgz', 'package')
|
60
58
|
|
61
59
|
prepare(options)
|
@@ -97,8 +95,6 @@ module Reap
|
|
97
95
|
# Create Zip package.
|
98
96
|
|
99
97
|
def package_zip(options=nil)
|
100
|
-
status "Creating .zip package"
|
101
|
-
|
102
98
|
options = configure_options(options, 'package-zip', 'package')
|
103
99
|
|
104
100
|
prepare(options)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Reap
|
2
2
|
|
3
|
-
class
|
3
|
+
class Project
|
4
4
|
|
5
5
|
# Publish website to rubyforge.
|
6
6
|
#
|
@@ -14,10 +14,10 @@ module Reap
|
|
14
14
|
def publish(options=nil)
|
15
15
|
options = configure_options(options, 'publish', 'rubyforge')
|
16
16
|
|
17
|
-
project = options['project']
|
17
|
+
project = options['project'] || metadata.project
|
18
18
|
webdir = options['webdir']
|
19
19
|
source = options['source']
|
20
|
-
username = options['username']
|
20
|
+
username = options['username'] || ENV['RUBYFORGE_USERNAME']
|
21
21
|
clear = options['clear']
|
22
22
|
protect = options['protect']
|
23
23
|
exclude = options['exclude']
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Reap
|
2
2
|
|
3
|
-
class
|
3
|
+
class Project
|
4
4
|
|
5
5
|
# Generate documentation. At this time it simply
|
6
6
|
# means generating rdocs.
|
@@ -46,19 +46,23 @@ module Reap
|
|
46
46
|
cmdopts['template'] = target['template']
|
47
47
|
cmdopts['merge'] = target['merge']
|
48
48
|
cmdopts['inline-source'] = target['inline']
|
49
|
-
cmdopts['exclude'] = target['exclude']
|
49
|
+
cmdopts['exclude'] = list_option(target['exclude'])
|
50
50
|
|
51
|
-
files
|
52
|
-
|
51
|
+
files = list_option(target['include'])
|
52
|
+
files = files.collect{ |g| Dir[g] }.flatten # Need this little rig to remove unwanted toplevel files.
|
53
|
+
files = files - ['Rakefile', 'Rakefile.rb'] # b/c rdoc's exlcude options doesn't work well.
|
54
|
+
files = files - [manifest_file].compact
|
55
|
+
|
56
|
+
#folder = target['chdir'] || '.'
|
53
57
|
|
54
58
|
#puts "cd #{folder}" if dryrun? # TODO: Shouldn't chdir do this automatically?
|
55
59
|
#chdir(folder) do
|
56
60
|
if target_solo
|
57
|
-
input_files = files.collect{ |i| multiglob_r(i) }.flatten.reject{ |f|
|
61
|
+
input_files = files.collect{ |i| multiglob_r(i) }.flatten.reject{ |f| File.directory?(f) }
|
58
62
|
input_files.each do |input_file|
|
59
63
|
out = File.join(target_output, File.basename(input_file).chomp(File.extname(input_file)))
|
60
64
|
rdoc_target(out, input_file, cmdopts)
|
61
|
-
rdoc_insert_ads(
|
65
|
+
rdoc_insert_ads(out, adfile)
|
62
66
|
end
|
63
67
|
else
|
64
68
|
input_files = files.collect{ |i| dir?(i) ? File.join(i,'**','*') : i }
|
@@ -107,24 +111,17 @@ module Reap
|
|
107
111
|
dirs.each do |dir|
|
108
112
|
files = Dir.glob(File.join(dir, '**/*.html'))
|
109
113
|
files.each do |file|
|
110
|
-
html =
|
114
|
+
html = File.read(file)
|
111
115
|
bodi = html.index('<body>')
|
116
|
+
next unless bodi
|
112
117
|
html[bodi + 7] = "\n" + adtext
|
113
|
-
|
114
|
-
file_write(file, html) unless dryrun?
|
115
|
-
#puts "[done]"
|
118
|
+
File.write(file, html) unless dryrun?
|
116
119
|
end
|
117
120
|
end
|
118
121
|
end
|
119
122
|
|
120
123
|
public
|
121
124
|
|
122
|
-
DEFAULT['ri'] = {
|
123
|
-
'output' => 'ri',
|
124
|
-
'exclude' => [],
|
125
|
-
'include' => ['lib']
|
126
|
-
}
|
127
|
-
|
128
125
|
# generate local ri docs
|
129
126
|
#
|
130
127
|
# Generate RI documentation. This utilizes
|
@@ -169,20 +166,6 @@ module Reap
|
|
169
166
|
end
|
170
167
|
end
|
171
168
|
|
172
|
-
private
|
173
|
-
|
174
|
-
# # Shell out to rdoc to create ri docs.
|
175
|
-
#
|
176
|
-
# def ridoc_shell(files, config)
|
177
|
-
# output = config['op']
|
178
|
-
# input = config.delete('include')
|
179
|
-
#
|
180
|
-
# # Check for 'doc' directory.
|
181
|
-
# # (Helps to ensure we're in the right place.)
|
182
|
-
# #dir!(File.dirname(site))
|
183
|
-
#
|
184
|
-
# end
|
185
|
-
|
186
169
|
end
|
187
170
|
|
188
171
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require 'reap/
|
1
|
+
require 'reap/project/rubyforge'
|
2
2
|
|
3
3
|
module Reap
|
4
4
|
|
5
|
-
class
|
5
|
+
class Project
|
6
6
|
|
7
7
|
# Release packages (to rubyforge). This generates
|
8
8
|
# the packages, and then distributes them to the
|
@@ -23,9 +23,9 @@ module Reap
|
|
23
23
|
doc, pub, ann, tag = true, true, true, true
|
24
24
|
else
|
25
25
|
doc = ask("Generate doumentation?", "Yn").downcase =~ /^(|y|yes)$/i
|
26
|
-
pub = ask("Publish website?", "Yn") =~ /^(|y|yes)$/i
|
27
|
-
tag = ask("Tag current version?", "Yn") =~ /^(|y|yes)$/i
|
28
|
-
ann = ask("Announce release?", "Yn") =~ /^(|y|yes)$/i
|
26
|
+
pub = ask("Publish website? ", "Yn") =~ /^(|y|yes)$/i
|
27
|
+
tag = ask("Tag current version? ", "Yn") =~ /^(|y|yes)$/i
|
28
|
+
ann = ask("Announce release? ", "Yn") =~ /^(|y|yes)$/i
|
29
29
|
puts
|
30
30
|
end
|
31
31
|
|
@@ -2,7 +2,7 @@ require 'reap/systems/rubyforge'
|
|
2
2
|
|
3
3
|
module Reap
|
4
4
|
|
5
|
-
class
|
5
|
+
class Project
|
6
6
|
|
7
7
|
# Returns Rubyforge system object.
|
8
8
|
|
@@ -12,9 +12,9 @@ module Reap
|
|
12
12
|
rubyforge_options = {}
|
13
13
|
rubyforge_options[:dryrun] = dryrun?
|
14
14
|
rubyforge_options[:trace] = trace?
|
15
|
-
rubyforge_options[:project] = options
|
16
|
-
rubyforge_options[:username] = options
|
17
|
-
rubyforge_options[:group_id] = options
|
15
|
+
rubyforge_options[:project] = options['project'] || metadata.project
|
16
|
+
rubyforge_options[:username] = options['username'] || ENV['RUBYFORGE_USERNAME']
|
17
|
+
rubyforge_options[:group_id] = options['group']
|
18
18
|
|
19
19
|
Rubyforge.new(rubyforge_options)
|
20
20
|
end
|
@@ -49,9 +49,10 @@ module Reap
|
|
49
49
|
#files = Dir.glob(File.join(store,"#{name}-#{version}*"))
|
50
50
|
end
|
51
51
|
|
52
|
-
|
52
|
+
# Not going to do dryrun in Rubyforge class b/c it still requires logging in.
|
53
|
+
if dryrun?
|
53
54
|
files.each do |file|
|
54
|
-
puts "
|
55
|
+
puts "release #{file}"
|
55
56
|
end
|
56
57
|
else
|
57
58
|
host = rubyforge(options)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Reap
|
2
2
|
|
3
|
-
class
|
3
|
+
class Project
|
4
4
|
|
5
5
|
def scaffold(options)
|
6
6
|
requests = options['arguments']
|
@@ -72,7 +72,7 @@ module Reap
|
|
72
72
|
def scaffold_skeleton(options=nil)
|
73
73
|
options = (options || {}).rekey(:to_s)
|
74
74
|
|
75
|
-
files = glob('**/*') - glob('meta/**/*') - ['.reap']
|
75
|
+
files = glob('**/*') - glob('meta/**/*') - ['.reap', 'meta']
|
76
76
|
|
77
77
|
unless files.empty?
|
78
78
|
ans = ask("Directory isn't empty. Are you sure you want to add scaffolding?", 'yN')
|
@@ -115,6 +115,11 @@ module Reap
|
|
115
115
|
file = File.join(dir, fname)
|
116
116
|
cp(file, fname) unless File.exist?(fname)
|
117
117
|
end
|
118
|
+
|
119
|
+
# A little extra love.
|
120
|
+
|
121
|
+
dir = File.join('lib',metadata.name)
|
122
|
+
mkdir_p(dir) unless File.exist?(dir)
|
118
123
|
end
|
119
124
|
|
120
125
|
private
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require 'reap/
|
1
|
+
require 'reap/project/svn'
|
2
2
|
|
3
3
|
module Reap
|
4
4
|
|
5
|
-
class
|
5
|
+
class Project
|
6
6
|
|
7
7
|
# Generate ChangeLog. This method routes to the
|
8
8
|
# appropriate method for the project's source
|
@@ -14,7 +14,7 @@ module Reap
|
|
14
14
|
create_txtlog = (options['txtlog'] != false)
|
15
15
|
create_xmllog = (options['xmllog'] != false)
|
16
16
|
|
17
|
-
xmlout = options['xmloutput'] || '
|
17
|
+
xmlout = options['xmloutput'] || 'site/log' # TODO: How to set site/?
|
18
18
|
|
19
19
|
if create_txtlog
|
20
20
|
txtlog = apply_naming_policy('changelog', 'txt')
|
@@ -1,8 +1,6 @@
|
|
1
|
-
require 'reap/manager/rubyforge'
|
2
|
-
|
3
1
|
module Reap
|
4
2
|
|
5
|
-
class
|
3
|
+
class Project
|
6
4
|
|
7
5
|
# Update VERSION stamp file.
|
8
6
|
#
|
@@ -11,14 +9,15 @@ module Reap
|
|
11
9
|
# Will have to use VersionNumnber class for this.
|
12
10
|
|
13
11
|
def stamp(options={})
|
14
|
-
|
12
|
+
version = options['version']
|
13
|
+
status = options['status']
|
15
14
|
|
16
|
-
|
15
|
+
options = configure_options(options, 'stamp')
|
17
16
|
|
18
|
-
version =
|
19
|
-
status =
|
17
|
+
version = version || metadata.version || '0.0.0'
|
18
|
+
status = status || metadata.status || '0.0.0'
|
20
19
|
|
21
|
-
abort "Invalid version -- #{version}" unless /^[0-9]/ =~ version
|
20
|
+
abort "Invalid version -- #{version}" unless String===version && /^[0-9]/ =~ version
|
22
21
|
|
23
22
|
meta = File.directory?('meta')
|
24
23
|
|
@@ -29,13 +28,17 @@ module Reap
|
|
29
28
|
|
30
29
|
if File.exist?(file)
|
31
30
|
old_text = File.read(file).strip
|
32
|
-
|
31
|
+
old_version, old_status, old_date = *old_text.split(/\s/)
|
32
|
+
if old_version == "#{version}" && old_status == status
|
33
|
+
puts old_text
|
34
|
+
return
|
35
|
+
end
|
33
36
|
end
|
34
37
|
|
35
38
|
if dryrun?
|
36
|
-
puts "
|
39
|
+
puts "echo '#{text}' > #{file}"
|
37
40
|
else
|
38
|
-
|
41
|
+
write(file, text)
|
39
42
|
puts text
|
40
43
|
puts "#{file} updated."
|
41
44
|
|
@@ -2,10 +2,6 @@
|
|
2
2
|
#
|
3
3
|
# Test
|
4
4
|
#
|
5
|
-
# TODO:
|
6
|
-
# - Needs to be made DRY.
|
7
|
-
# - Perhaps simplifiy this, making it more like the load test.
|
8
|
-
# And simply collect that parse the output of each test.
|
9
5
|
|
10
6
|
require 'facets/hash/rekey'
|
11
7
|
require 'facets/string/tabs'
|
@@ -13,15 +9,7 @@ require 'facets/progressbar'
|
|
13
9
|
|
14
10
|
module Reap
|
15
11
|
|
16
|
-
class
|
17
|
-
|
18
|
-
# DEFAULT['test'] = {
|
19
|
-
# 'tests' => 'test/**/{test,tc}_*.rb',
|
20
|
-
# 'loadpath' => ['lib'],
|
21
|
-
# 'require' => [],
|
22
|
-
# 'exclude' => ['ext'],
|
23
|
-
# 'live' => false
|
24
|
-
# }
|
12
|
+
class Project
|
25
13
|
|
26
14
|
private
|
27
15
|
|
@@ -32,13 +20,7 @@ module Reap
|
|
32
20
|
|
33
21
|
options['loadpath'] ||= metadata.loadpath
|
34
22
|
|
35
|
-
#options['tests']
|
36
|
-
#options['loadpath'] ||= DEFAULT['test']['loadpath']
|
37
|
-
#options['exclude'] ||= DEFAULT['test']['exclude']
|
38
|
-
#options['require'] ||= DEFAULT['test']['require']
|
39
|
-
#options['live'] ||= DEFAULT['test']['live']
|
40
|
-
|
41
|
-
options['tests'] = list_option(options['tests'])
|
23
|
+
#options['tests'] = list_option(options['tests'])
|
42
24
|
options['loadpath'] = list_option(options['loadpath'])
|
43
25
|
options['exclude'] = list_option(options['exclude'])
|
44
26
|
options['require'] = list_option(options['require'])
|
data/lib/reap/project.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
module Reap
|
2
|
-
require '
|
2
|
+
require 'yaml'
|
3
|
+
require 'rbconfig'
|
4
|
+
require 'reap/utilities'
|
3
5
|
|
4
6
|
# = Project
|
5
7
|
#
|
@@ -7,10 +9,33 @@ module Reap
|
|
7
9
|
# working with a project. The CLI Application class delegates to this class,
|
8
10
|
# for instance.
|
9
11
|
|
10
|
-
class Project
|
12
|
+
class Project
|
11
13
|
require 'reap/metadata'
|
12
14
|
require 'reap/settings'
|
13
15
|
|
16
|
+
# Load up the tools
|
17
|
+
require "reap/project/announce.rb"
|
18
|
+
require "reap/project/check.rb"
|
19
|
+
require "reap/project/clean.rb"
|
20
|
+
require "reap/project/gem.rb"
|
21
|
+
require "reap/project/html.rb"
|
22
|
+
require "reap/project/log.rb"
|
23
|
+
require "reap/project/make.rb"
|
24
|
+
require "reap/project/package.rb"
|
25
|
+
require "reap/project/publish.rb"
|
26
|
+
require "reap/project/rdoc.rb"
|
27
|
+
require "reap/project/release.rb"
|
28
|
+
require "reap/project/scaffold.rb"
|
29
|
+
require "reap/project/site.rb"
|
30
|
+
require "reap/project/spec.rb"
|
31
|
+
require "reap/project/stats.rb"
|
32
|
+
require "reap/project/stamp.rb"
|
33
|
+
require "reap/project/scm.rb"
|
34
|
+
require "reap/project/svn.rb"
|
35
|
+
require "reap/project/test.rb"
|
36
|
+
|
37
|
+
include Utilities
|
38
|
+
|
14
39
|
# New Project.
|
15
40
|
|
16
41
|
def initialize(options=nil)
|
@@ -45,6 +70,7 @@ module Reap
|
|
45
70
|
# Common options.
|
46
71
|
|
47
72
|
def options ; @options ; end
|
73
|
+
#alias_method :init_options, :options # TODO: Improve me! (see stamp.rb)
|
48
74
|
|
49
75
|
def dryrun? ; options['dryrun'] ; end
|
50
76
|
def trace? ; options['trace'] ; end
|
@@ -118,6 +144,12 @@ module Reap
|
|
118
144
|
end
|
119
145
|
end
|
120
146
|
|
147
|
+
# Project manifest file.
|
148
|
+
|
149
|
+
def manifest_file
|
150
|
+
Dir.glob('Manifest{,.txt}', File::FNM_CASEFOLD).first
|
151
|
+
end
|
152
|
+
|
121
153
|
private
|
122
154
|
|
123
155
|
# Locate the project root directory. This is determined
|
@@ -9,13 +9,6 @@ require 'tmpdir'
|
|
9
9
|
require 'facets/hash/rekey'
|
10
10
|
require 'facets/kernel/ask'
|
11
11
|
|
12
|
-
#require 'reap/utilities/uploadutils'
|
13
|
-
|
14
|
-
# def self.factory(name)
|
15
|
-
# ["proutils/icli/#{name.downcase}.rb"].each{ |x| require x } # only did it this way to shut rdoc up!
|
16
|
-
# ICli::const_get(name.capitalize)
|
17
|
-
# end
|
18
|
-
|
19
12
|
module Reap
|
20
13
|
|
21
14
|
# Interface with the RubyForge hosting service.
|
@@ -241,8 +234,8 @@ module Reap
|
|
241
234
|
|
242
235
|
unless package_id = package?(package)
|
243
236
|
if dryrun?
|
244
|
-
puts "
|
245
|
-
puts "
|
237
|
+
puts "Package '#{package}' does not exist."
|
238
|
+
puts "Create package #{package}."
|
246
239
|
abort "Cannot continue in dryrun mode."
|
247
240
|
else
|
248
241
|
#unless options['force']
|
@@ -272,14 +265,14 @@ module Reap
|
|
272
265
|
fname = File.basename(file)
|
273
266
|
if file_id = file?(fname, package)
|
274
267
|
if dryrun?
|
275
|
-
puts "
|
268
|
+
puts "Remove file #{fname}."
|
276
269
|
else
|
277
270
|
puts "Removing file #{fname}..."
|
278
271
|
remove_file(file_id, release_id, package_id)
|
279
272
|
end
|
280
273
|
end
|
281
274
|
if dryrun?
|
282
|
-
puts "
|
275
|
+
puts "Add file #{fname}."
|
283
276
|
else
|
284
277
|
puts "Adding file #{fname}..."
|
285
278
|
add_file(file, release_id, package_id, processor)
|
@@ -287,7 +280,7 @@ module Reap
|
|
287
280
|
end
|
288
281
|
else
|
289
282
|
if dryrun?
|
290
|
-
puts "
|
283
|
+
puts "Add release #{release}."
|
291
284
|
else
|
292
285
|
puts "Adding release #{release}..."
|
293
286
|
add_release(release, package_id, files,
|
@@ -1,11 +1,9 @@
|
|
1
|
-
require 'reap/utilities
|
2
|
-
require 'reap/utilities/fileutils'
|
1
|
+
require 'reap/utilities'
|
3
2
|
|
4
3
|
module Reap
|
5
4
|
|
6
5
|
class Subversion
|
7
|
-
include Utilities
|
8
|
-
include Utilities::FileUtils
|
6
|
+
include Utilities
|
9
7
|
|
10
8
|
# Project name (for repository).
|
11
9
|
|
@@ -93,7 +91,7 @@ module Reap
|
|
93
91
|
end
|
94
92
|
|
95
93
|
if dryrun?
|
96
|
-
puts "
|
94
|
+
puts "svn copy . #{url}"
|
97
95
|
else
|
98
96
|
case ask("Branch: #{url} ? [yN]").strip.downcase
|
99
97
|
when 'y', 'yes'
|
@@ -120,7 +118,7 @@ module Reap
|
|
120
118
|
end
|
121
119
|
|
122
120
|
if dryrun?
|
123
|
-
puts "
|
121
|
+
puts "svn copy . #{url}"
|
124
122
|
else
|
125
123
|
case ask("Tag: #{url} ? [yN]").strip.downcase
|
126
124
|
when 'y', 'yes'
|