reap 9.2.0 → 9.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/MANIFEST CHANGED
@@ -54,9 +54,10 @@ lib/reap/manager/scaffold.rb
54
54
  lib/reap/manager/clean.rb
55
55
  lib/reap/manager/publish.rb
56
56
  lib/reap/manager/spec.rb
57
- lib/reap/manager/pack.rb
57
+ lib/reap/manager/stamp.rb
58
58
  lib/reap/manager/svn.rb
59
59
  lib/reap/manager/scm.rb
60
+ lib/reap/manager/package.rb
60
61
  lib/reap/manager/check.rb
61
62
  lib/reap/manager/announce.rb
62
63
  lib/reap/utilities
@@ -113,6 +114,7 @@ bin/reap-stats
113
114
  bin/reap-package
114
115
  bin/reap-scm-tag
115
116
  bin/reap-publish
117
+ bin/reap-rollout
116
118
  bin/reap-spec
117
119
  bin/reap-prepare
118
120
  bin/reap-test-load
data/NOTES CHANGED
@@ -10,3 +10,7 @@ standard conventions, and can no longer be changed. In
10
10
  this case the advantage of convention outway the uses
11
11
  of configuration.
12
12
 
13
+ What remains to be done now is mostly cleanup and fine
14
+ tuning, such as better command line output and additional
15
+ documentation.
16
+
data/bin/reap-rollout ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'reap/application'
4
+
5
+ app = Reap::Application.new
6
+
7
+ app.rollout
@@ -1,77 +1,77 @@
1
- ---
2
- announce:
3
- template: '{ANNOUNCE,README}{,.txt}' # Announcement template file glob.
4
- mail_to: rubytalk@ruby-lange.org # Email address(es) to send announcemnt.
5
- mail_from: #{metadata.email} # Message FROM address.
6
- subject: "ANN: %s %s" # Subject of email message. Sprintf'd against name and version.
7
- account: #{metadata.email} # Email account name [email].
8
- domain: rubyforge.org # Your domain. (Not sure why one needs this for an email.)
9
- server: smtp.goolge.com # Email server to route message.
10
- port: 25 # Email server's port, if not secure.
11
- port_secure: 465 # Email server's port, if secure.
12
- secure: false # Uses TLS security, true or false?
13
- login: plain # Login type: plain, cram_md5 or login.
14
- cutoff: 30 # How many lines of changelog to provide.
15
- check:
16
- loadpath: #{metadata.loadpath}
17
- exclude: []
18
- check-syntax:
19
- loadpath: #{metadata.loadpath}
20
- exclude: [ext]
21
- check-load:
22
- loadpath: #{metadata.loadpath}
23
- exclude: []
24
- clean:
25
- remove: [**/*~, **/*.bak]
26
- log:
27
- policy: [cap, ext] # How to save log files. (cap=capitialize, up=uppercase, low=lowercase, ext=extension)
28
- output: log
29
- log-notes:
30
- loadpath: #{metadata.loadpath} # Files to search for notes.
31
- labels: [TODO, FIXME, OPTIMIZE]
32
- make:
33
- extensions: #{metadata.extensions} # Defaults to ext/**/extconf.rb (NOT USED YET)
34
- package:
35
- formats: [zip, gem]
36
- publish:
37
- source: doc
38
- webdir: ~
39
- username: #{ENV['RUBYFORGE_USERNAME']}
40
- protect: [usage, statcvs, statsvn, robot.txt, wiki] # Used as defaults for creating .rsync-filter (after that edit .rsync-filter)
41
- exclude: [.svn, scrap] # Used as defaults for creating .rsync-filter (after that edit .rsync-filter)
42
- rdoc:
43
- template: html
44
- output: doc/rdoc
45
- main: 'README{,.txt}'
46
- inline: true
47
- merge: true
48
- exclude: []
49
- include: ['lib', '[A-Z]*']
50
- adfile: doc/ads/rdoc.html
51
- targets: ~
52
- ri:
53
- output: ri
54
- exclude: []
55
- include: #{metadata.loadpath}
56
- release:
57
- username: #{ENV['RUBYFORGE_USERNAME']}
58
- changelog: 'CHANGES{,.txt}'
59
- notelog: 'NOTES{,.txt}'
60
- spec:
61
- specs: [spec/**/*_spec.rb, spec/**/spec_*.rb]
62
- loadpath: #{metadata.loadpath}
63
- require: []
64
- warning: false
65
- command: spec
66
- live: false
67
- stats:
68
- loadpath: #{metadata.loadpath}
69
- exclude: ['ext']
70
- test:
71
- tests: test/**/{test,tc}_*.rb
72
- loadpath: #{metadata.loadpath}
73
- require: []
74
- exclude: ext
75
- command: testrb
76
- live: false
1
+
2
+ announce:
3
+ template: '{ANNOUNCE,README}{,.txt}' # Announcement template file glob.
4
+ mail_to: rubytalk@ruby-lange.org # Email address(es) to send announcemnt.
5
+ mail_from: #{metadata.email} # Message FROM address.
6
+ subject: "%s v%s released" # Subject of email message. Sprintf'd against name and version.
7
+ account: #{metadata.email} # Email account name [email].
8
+ domain: rubyforge.org # Your domain. (Not sure why one needs this for an email.)
9
+ server: smtp.goolge.com # Email server to route message.
10
+ port: 25 # Email server's port, if not secure.
11
+ port_secure: 465 # Email server's port, if secure.
12
+ secure: false # Uses TLS security, true or false?
13
+ login: plain # Login type: plain, cram_md5 or login.
14
+ cutoff: 30 # How many lines of changelog to provide.
15
+ check:
16
+ loadpath: #{metadata.loadpath}
17
+ exclude: []
18
+ check-syntax:
19
+ loadpath: #{metadata.loadpath}
20
+ exclude: [ext]
21
+ check-load:
22
+ loadpath: #{metadata.loadpath}
23
+ exclude: []
24
+ clean:
25
+ remove: [**/*~, **/*.bak]
26
+ log:
27
+ policy: [cap, ext] # How to save log files. (cap=capitialize, up=uppercase, low=lowercase, ext=extension)
28
+ output: log
29
+ log-notes:
30
+ loadpath: #{metadata.loadpath} # Files to search for notes.
31
+ labels: [TODO, FIXME, OPTIMIZE]
32
+ make:
33
+ extensions: #{metadata.extensions} # Defaults to ext/**/extconf.rb (NOT USED YET)
34
+ package:
35
+ formats: [zip, gem]
36
+ publish:
37
+ source: doc
38
+ webdir: ~
39
+ username: #{ENV['RUBYFORGE_USERNAME']}
40
+ protect: [usage, statcvs, statsvn, robot.txt, wiki] # Used as defaults for creating .rsync-filter (after that edit .rsync-filter)
41
+ exclude: [.svn, scrap] # Used as defaults for creating .rsync-filter (after that edit .rsync-filter)
42
+ rdoc:
43
+ template: html
44
+ output: doc/rdoc
45
+ main: 'README{,.txt}'
46
+ inline: true
47
+ merge: true
48
+ exclude: []
49
+ include: ['lib', '[A-Z]*']
50
+ adfile: doc/ads/rdoc.html
51
+ targets: ~
52
+ ri:
53
+ output: ri
54
+ exclude: []
55
+ include: #{metadata.loadpath}
56
+ release:
57
+ username: #{ENV['RUBYFORGE_USERNAME']}
58
+ changelog: 'CHANGES{,.txt}'
59
+ notelog: 'NOTES{,.txt}'
60
+ spec:
61
+ specs: [spec/**/*_spec.rb, spec/**/spec_*.rb]
62
+ loadpath: #{metadata.loadpath}
63
+ require: []
64
+ warning: false
65
+ command: spec
66
+ live: false
67
+ stats:
68
+ loadpath: #{metadata.loadpath}
69
+ exclude: ['ext']
70
+ test:
71
+ tests: test/**/{test,tc}_*.rb
72
+ loadpath: #{metadata.loadpath}
73
+ require: []
74
+ exclude: ext
75
+ command: testrb
76
+ live: false
77
77
 
data/lib/reap/manager.rb CHANGED
@@ -34,7 +34,7 @@ require "reap/manager/gem.rb"
34
34
  require "reap/manager/html.rb"
35
35
  require "reap/manager/log.rb"
36
36
  require "reap/manager/make.rb"
37
- require "reap/manager/pack.rb"
37
+ require "reap/manager/package.rb"
38
38
  require "reap/manager/publish.rb"
39
39
  require "reap/manager/rdoc.rb"
40
40
  require "reap/manager/release.rb"
@@ -42,6 +42,7 @@ require "reap/manager/scaffold.rb"
42
42
  require "reap/manager/site.rb"
43
43
  require "reap/manager/spec.rb"
44
44
  require "reap/manager/stats.rb"
45
+ require "reap/manager/stamp.rb"
45
46
  require "reap/manager/scm.rb"
46
47
  require "reap/manager/svn.rb"
47
48
  require "reap/manager/test.rb"
@@ -53,33 +53,37 @@ module Reap
53
53
  secure = options.secure # Use TLS/SSL true or false?
54
54
  password = options.password || ENV['EMAIL_PASSWORD']
55
55
 
56
- title = options.title || metadata.title
57
- version = options.versoin || metadata.version
56
+ title = options.title || metadata.title
57
+ version = options.versoin || metadata.version
58
58
 
59
59
  # defaults
60
- subject ||= "ANN: #{title}, v#{version}"
60
+ subject ||= "%s, v%s released"
61
61
  account ||= mail_from
62
62
 
63
63
  subject = subject % [title, version]
64
64
 
65
- puts "\n#{message}\n\n"
66
-
67
- if mail_to and !dryrun?
68
- ans = ask("Would you like to email this announcement?", "yN")
69
- case ans.downcase
70
- when 'y', 'yes'
71
- email(message,
72
- :to => mail_to,
73
- :from => mail_from,
74
- :subject => subject,
75
- :server => server,
76
- :port => port,
77
- :domain => domain,
78
- :account => account,
79
- :login => login,
80
- :secure => secure,
81
- :password => password
82
- )
65
+ if dryrun?
66
+ puts "[DRYRUN] Email '#{subject}'"
67
+ puts "\n#{message}\n\n" if verbose?
68
+ else
69
+ puts "\n#{message}\n\n"
70
+ if mail_to
71
+ ans = ask("Would you like to email this announcement?", "yN")
72
+ case ans.downcase
73
+ when 'y', 'yes'
74
+ email(message,
75
+ :to => mail_to,
76
+ :from => mail_from,
77
+ :subject => subject,
78
+ :server => server,
79
+ :port => port,
80
+ :domain => domain,
81
+ :account => account,
82
+ :login => login,
83
+ :secure => secure,
84
+ :password => password
85
+ )
86
+ end
83
87
  end
84
88
  end
85
89
  end
@@ -140,7 +144,7 @@ module Reap
140
144
 
141
145
  template = message.dup
142
146
 
143
- template.scan(/[$](.*?)[$]/m) do |key|
147
+ template.scan(/\$(\w+?)\$/m) do |key|
144
148
  #key = key.strip
145
149
  name = $1.strip #key[1..-1]
146
150
  if metadata.respond_to?(name.downcase)
@@ -152,7 +156,7 @@ module Reap
152
156
  end
153
157
 
154
158
  message.gsub!(/(^|[ ])[$].*?(?=[ ]|$)/,'') # remove unused vars
155
- message.gsub!(/\n\s*\n\s*\n/m,"\n\n") # remove any triple blank lines
159
+ message.gsub!(/\n\s*\n\s*\n/m,"\n\n") # remove any triple blank lines
156
160
  message.rstrip!
157
161
 
158
162
  return message
@@ -30,6 +30,8 @@ module Reap
30
30
 
31
31
  options = configure_options(options, 'package-gem', 'package')
32
32
 
33
+ prepare(options)
34
+
33
35
  package = metadata.clone
34
36
  package.update(options)
35
37
 
@@ -61,6 +61,10 @@ module Reap
61
61
  make_target 'distclean'
62
62
  end
63
63
 
64
+ # TODO: Clobber should get rid of Makefiles too.
65
+
66
+ #alias_method :clobber_make, :make_distclean
67
+
64
68
  # Create Makefile(s).
65
69
 
66
70
  def make_extconf
@@ -19,6 +19,17 @@ module Reap
19
19
  end
20
20
  end
21
21
 
22
+ # Prepare for packaging (clean, distclean, stamp).
23
+ #
24
+ # TODO: When we add support for binary packages distclean
25
+ # should not be done for them.
26
+
27
+ def prepare(options)
28
+ clean
29
+ make_distclean if compiles?
30
+ stamp(options)
31
+ end
32
+
22
33
  # General pack command.
23
34
 
24
35
  def package(options=nil)
@@ -47,6 +58,8 @@ module Reap
47
58
 
48
59
  options = configure_options(options, 'package-tgz', 'package')
49
60
 
61
+ prepare(options)
62
+
50
63
  package = metadata.clone
51
64
  package.update(options)
52
65
 
@@ -88,6 +101,8 @@ module Reap
88
101
 
89
102
  options = configure_options(options, 'package-zip', 'package')
90
103
 
104
+ prepare(options)
105
+
91
106
  package = metadata.clone
92
107
  package.update(options)
93
108
 
@@ -2,17 +2,12 @@ module Reap
2
2
 
3
3
  class Manager
4
4
 
5
- # DEFAULT['rdoc'] = {
6
- # 'template' => 'html',
7
- # 'output' => 'doc/rdoc',
8
- # 'main' => 'README',
9
- # 'inline' => true,
10
- # 'merge' => true,
11
- # 'exclude' => [],
12
- # 'include' => ['lib', '[A-Z]*'],
13
- # 'adfile' => 'doc/ads/rdoc.html',
14
- # 'targets' => nil
15
- # }
5
+ # Generate documentation. At this time it simply
6
+ # means generating rdocs.
7
+
8
+ def document(options)
9
+ rdoc(options)
10
+ end
16
11
 
17
12
  # Generate rdocs.
18
13
  #
@@ -4,75 +4,41 @@ module Reap
4
4
 
5
5
  class Manager
6
6
 
7
- # Update VERSION stamp file.
8
- #
9
- # TODO: Should we also update a lib/version.rb file?
7
+ # Release packages (to rubyforge). This generates
8
+ # the packages, and then distributes them to the
9
+ # file server.
10
10
 
11
- def stamp(options={})
12
- options = configure_options(options, 'stamp')
13
-
14
- meta = File.directory?('meta')
15
-
16
- version = options['version'] || metadata.version || '0.0.0'
17
- status = options['status'] || metadata.status || 'alpha'
18
-
19
- abort "Invalid version -- #{version}" unless /^[0-9]/ =~ version
20
-
21
- file = glob('{,meta/}version{,.txt}', File::FNM_CASEFOLD).first
22
- file = (meta ? 'meta/VERSION' : 'VERSION') unless file
23
-
24
- text = "#{version} #{status} (#{Time.now.strftime('%Y-%m-%d')})"
11
+ def release(options={})
12
+ package(options)
13
+ rubyforge_release(options)
14
+ end
25
15
 
26
- if File.exist?(file)
27
- old_text = File.read(file).strip
28
- return if text == old_text
29
- end
16
+ # A complete rollout. This will prepare (clean, stamp and package),
17
+ # then document, publish and release, tag and announce. It will
18
+ # do under direction. You can use the --force option to bypass this
19
+ # and have evey action taken automatically.
30
20
 
31
- if dryrun?
32
- puts file + ":"
33
- puts text
21
+ def rollout(options={})
22
+ if force?
23
+ doc, pub, ann, tag = true, true, true, true
34
24
  else
35
- File.open(file, 'w'){|f| f << text}
36
- puts "#{file} updated."
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
29
+ puts
37
30
  end
38
31
 
39
- # TODO: Stamp .roll if roll file exists.
40
- # should we read current .roll file and use as defaults?
41
- if File.exist?('.roll')
42
- str = []
43
- str << "name = #{metadata.name}"
44
- str << "version = #{metadata.version}"
45
- str << "status = #{metadata.status}"
46
- str << "date = #{metadata.date}"
47
- str << "default = #{metadata.default}"
48
- str << "libpath = #{metadata.libpath}"
49
- # File.open('.roll','w'){ |f| f << str.join("\n") }
50
- end
51
- end
52
-
53
- # Clean, stamp if need be and package.
54
-
55
- def prepare(options={})
56
- clean
57
- make_distclean if compiles?
58
- stamp(options)
59
- package(options)
60
- end
32
+ document(options) if doc
33
+ publish(options) if pub
61
34
 
62
- # Prepare and release to rubyforge.
63
-
64
- def release(options={})
65
- prepare(options)
66
- rubyforge_release(options)
67
- #announce(options)
68
- puts "\nBe sure to tag and announce this release if need be."
35
+ #package(options)
36
+ release(options)
37
+ scm_tag(options) if tag
38
+ announce(options) if ann
69
39
  end
70
40
 
71
- #def release(options)
72
- #name, version = release.name, release.version
73
- #sh "icli rubyforge release --version=#{version}"
74
- #end
75
-
76
41
  end
77
42
 
78
43
  end
44
+
@@ -4,15 +4,10 @@ module Reap
4
4
 
5
5
  class Manager
6
6
 
7
- #DEFAULT['rubyforge'] = {
8
- # 'changelog' => 'CHANGES',
9
- # 'notelog' => 'NOTES'
10
- #}
7
+ # Returns Rubyforge system object.
11
8
 
12
- # Release packages to rubyforge.
13
-
14
- def rubyforge_release(options)
15
- options = configure_options(options, 'release', 'rubyforge')
9
+ def rubyforge(options = nil)
10
+ options = configure_options(options, 'rubyforge')
16
11
 
17
12
  rubyforge_options = {}
18
13
  rubyforge_options[:dryrun] = dryrun?
@@ -21,21 +16,47 @@ module Reap
21
16
  rubyforge_options[:username] = options.delete('username') || ENV['RUBYFORGE_USERNAME']
22
17
  rubyforge_options[:group_id] = options.delete('group')
23
18
 
24
- host = Rubyforge.new(rubyforge_options)
19
+ Rubyforge.new(rubyforge_options)
20
+ end
25
21
 
26
- options['version'] = metadata.version
27
- options['store'] = 'pkg'
22
+ # Release packages to rubyforge.
28
23
 
29
- changelog = options['changelog'] #|| DEFAULT['release']['changelog'] || DEFAULT['rubyforge']['changelog']
30
- notelog = options['notelog'] #|| DEFAULT['release']['notelog'] || DEFAULT['rubyforge']['notelog']
24
+ def rubyforge_release(options)
25
+ release_options = configure_options(options, 'release')
26
+
27
+ store = 'pkg'
28
+ version = metadata.version
29
+
30
+ release_options['version'] = version
31
+ release_options['store'] = store
32
+
33
+ changelog = release_options['changelog'] #|| DEFAULT['release']['changelog'] || DEFAULT['rubyforge']['changelog']
34
+ notelog = release_options['notelog'] #|| DEFAULT['release']['notelog'] || DEFAULT['rubyforge']['notelog']
31
35
 
32
36
  changelog = Dir.glob(changelog.to_s, File::FNM_CASEFOLD).first
33
37
  notelog = Dir.glob(notelog.to_s, File::FNM_CASEFOLD).first
34
38
 
35
- options['changelog'] = changelog if File.exist?(changelog)
36
- options['notelog'] = notelog if File.exist?(notelog)
39
+ release_options['changelog'] = changelog if File.exist?(changelog)
40
+ release_options['notelog'] = notelog if File.exist?(notelog)
41
+
42
+ files = release_options['files'] || []
43
+
44
+ if files.empty?
45
+ files = Dir[File.join(store, '*')].select do |file|
46
+ /#{version}[.]/ =~ file
47
+ end
48
+ release_options['files'] = files
49
+ #files = Dir.glob(File.join(store,"#{name}-#{version}*"))
50
+ end
37
51
 
38
- host.release(options)
52
+ if dryrun? # Not going to do dryrun in Rubyforge class b/c it still requires logging in.
53
+ files.each do |file|
54
+ puts "[DRYRUN] Release #{file}"
55
+ end
56
+ else
57
+ host = rubyforge(options)
58
+ host.release(release_options)
59
+ end
39
60
  end
40
61
 
41
62
  end
@@ -0,0 +1,64 @@
1
+ require 'reap/manager/rubyforge'
2
+
3
+ module Reap
4
+
5
+ class Manager
6
+
7
+ # Update VERSION stamp file.
8
+ #
9
+ # TODO: Should we also update a lib/version.rb file?
10
+ # TODO: Make sure the new version isn't less then the old verison.
11
+ # Will have to use VersionNumnber class for this.
12
+
13
+ def stamp(options={})
14
+ options ||= {}
15
+
16
+ default = configuration['stamp']
17
+
18
+ version = options['version'] || metadata.version || default['version'] || '0.0.0'
19
+ status = options['status'] || metadata.status || default['status'] || 'alpha'
20
+
21
+ abort "Invalid version -- #{version}" unless /^[0-9]/ =~ version
22
+
23
+ meta = File.directory?('meta')
24
+
25
+ file = glob('{,meta/}version{,.txt}', File::FNM_CASEFOLD).first
26
+ file = (meta ? 'meta/VERSION' : 'VERSION') unless file
27
+
28
+ text = "#{version} #{status} (#{Time.now.strftime('%Y-%m-%d')})"
29
+
30
+ if File.exist?(file)
31
+ old_text = File.read(file).strip
32
+ return if text == old_text
33
+ end
34
+
35
+ if dryrun?
36
+ puts "[DRYRUN] echo #{text} > #{file}"
37
+ else
38
+ File.open(file, 'w'){|f| f << text}
39
+ puts text
40
+ puts "#{file} updated."
41
+
42
+ metadata.version = version
43
+ metadata.status = status
44
+ metadata.released = Time.now
45
+ end
46
+
47
+ # TODO: Stamp .roll if roll file exists.
48
+ # should we read current .roll file and use as defaults?
49
+ if File.exist?('.roll')
50
+ str = []
51
+ str << "name = #{metadata.name}"
52
+ str << "version = #{metadata.version}"
53
+ str << "status = #{metadata.status}"
54
+ str << "date = #{metadata.date}"
55
+ str << "default = #{metadata.default}"
56
+ str << "libpath = #{metadata.libpath}"
57
+ # File.open('.roll','w'){ |f| f << str.join("\n") }
58
+ end
59
+ end
60
+
61
+ end
62
+
63
+ end
64
+
@@ -193,7 +193,7 @@ module Reap
193
193
  def release(options)
194
194
  options = options.rekey
195
195
 
196
- version = options[:version]
196
+ version = options[:version] || metadata.version
197
197
  changelog = options[:changelog]
198
198
  notelog = options[:notelog]
199
199
 
@@ -240,38 +240,56 @@ module Reap
240
240
  login do
241
241
 
242
242
  unless package_id = package?(package)
243
- #unless options['force']
243
+ if dryrun?
244
+ puts "[DRYRUN] Package '#{package}' does not exist."
245
+ puts "[DRYRUN] Create package #{package}."
246
+ abort "Cannot continue in dryrun mode."
247
+ else
248
+ #unless options['force']
244
249
  q = "Package '#{package}' does not exist. Create?"
245
250
  a = ask(q, 'yN')
246
251
  abort "Task canceled." unless ['y', 'yes', 'okay'].include?(a.downcase)
247
- #end
248
- puts "Creating package #{package}..."
249
- abort "Cannot continue in dry-run mode." if dryrun?
250
- create_package(package, is_public)
251
- unless package_id = package?(package)
252
- raise "Package creation failed."
252
+ #end
253
+ puts "Creating package #{package}..."
254
+ create_package(package, is_public)
255
+ unless package_id = package?(package)
256
+ raise "Package creation failed."
257
+ end
253
258
  end
254
259
  end
255
260
  if release_id = release?(release, package_id)
256
261
  #unless options[:force]
262
+ if dryrun?
263
+ puts "Release #{release} already exists."
264
+ else
257
265
  q = "Release #{release} already exists. Re-release?"
258
266
  a = ask(q, 'yN')
259
267
  abort "Task canceled." unless ['y', 'yes', 'okay'].include?(a.downcase)
260
268
  #puts "Use -f option to force re-release."
261
269
  #return
262
- #end
270
+ end
263
271
  files.each do |file|
264
272
  fname = File.basename(file)
265
273
  if file_id = file?(fname, package)
266
- puts "Removing file #{fname}..."
267
- remove_file(file_id, release_id, package_id) unless dryrun?
274
+ if dryrun?
275
+ puts "[DRYRUN] Remove file #{fname}."
276
+ else
277
+ puts "Removing file #{fname}..."
278
+ remove_file(file_id, release_id, package_id)
279
+ end
280
+ end
281
+ if dryrun?
282
+ puts "[DRYRUN] Add file #{fname}."
283
+ else
284
+ puts "Adding file #{fname}..."
285
+ add_file(file, release_id, package_id, processor)
268
286
  end
269
- puts "Adding file #{fname}..."
270
- add_file(file, release_id, package_id, processor) unless dryrun?
271
287
  end
272
288
  else
273
- puts "Adding release #{release}..."
274
- unless dryrun?
289
+ if dryrun?
290
+ puts "[DRYRUN] Adding release #{release}..."
291
+ else
292
+ puts "Adding release #{release}..."
275
293
  add_release(release, package_id, files,
276
294
  :processor => processor,
277
295
  :release_date => date,
@@ -288,7 +306,7 @@ module Reap
288
306
  #end
289
307
  end
290
308
  end
291
- puts "Release complete!"
309
+ puts "Release complete!" unless dryrun?
292
310
  end
293
311
 
294
312
  # #
@@ -92,10 +92,14 @@ module Reap
92
92
  url = "#{protocol}://" + File.join(developer_domain, path, name)
93
93
  end
94
94
 
95
- case ask("Branch: #{url} ? [yN]").strip.downcase
96
- when 'y', 'yes'
97
- #sh "svn copy #{protocol}://#{username}@#{repository}/trunk #{url}"
98
- sh "svn copy . #{url}"
95
+ if dryrun?
96
+ puts "[DRYRUN] svn copy . #{url}"
97
+ else
98
+ case ask("Branch: #{url} ? [yN]").strip.downcase
99
+ when 'y', 'yes'
100
+ #sh "svn copy #{protocol}://#{username}@#{repository}/trunk #{url}"
101
+ sh "svn copy . #{url}"
102
+ end
99
103
  end
100
104
  end
101
105
 
@@ -115,10 +119,14 @@ module Reap
115
119
  url = "#{protocol}://" + File.join(developer_domain, path, name)
116
120
  end
117
121
 
118
- case ask("Tag: #{url} ? [yN]").strip.downcase
119
- when 'y', 'yes'
120
- #sh "svn copy #{protocol}://#{username}@#{repository}/trunk #{url}"
121
- sh "svn copy . #{url}"
122
+ if dryrun?
123
+ puts "[DRYRUN] svn copy . #{url}"
124
+ else
125
+ case ask("Tag: #{url} ? [yN]").strip.downcase
126
+ when 'y', 'yes'
127
+ #sh "svn copy #{protocol}://#{username}@#{repository}/trunk #{url}"
128
+ sh "svn copy . #{url}"
129
+ end
122
130
  end
123
131
  end
124
132
 
data/meta/VERSION CHANGED
@@ -1 +1 @@
1
- 9.2.0 alpha (2008-02-07)
1
+ 9.2.1 alpha (2008-02-08)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reap
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.2.0
4
+ version: 9.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Sawyer <transfire@gmail.com>
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-02-07 00:00:00 -05:00
12
+ date: 2008-02-08 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -41,6 +41,7 @@ executables:
41
41
  - reap-package
42
42
  - reap-scm-tag
43
43
  - reap-publish
44
+ - reap-rollout
44
45
  - reap-spec
45
46
  - reap-prepare
46
47
  - reap-test-load
@@ -125,9 +126,10 @@ files:
125
126
  - lib/reap/manager/clean.rb
126
127
  - lib/reap/manager/publish.rb
127
128
  - lib/reap/manager/spec.rb
128
- - lib/reap/manager/pack.rb
129
+ - lib/reap/manager/stamp.rb
129
130
  - lib/reap/manager/svn.rb
130
131
  - lib/reap/manager/scm.rb
132
+ - lib/reap/manager/package.rb
131
133
  - lib/reap/manager/check.rb
132
134
  - lib/reap/manager/announce.rb
133
135
  - lib/reap/utilities
@@ -184,6 +186,7 @@ files:
184
186
  - bin/reap-package
185
187
  - bin/reap-scm-tag
186
188
  - bin/reap-publish
189
+ - bin/reap-rollout
187
190
  - bin/reap-spec
188
191
  - bin/reap-prepare
189
192
  - bin/reap-test-load