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 +3 -1
- data/NOTES +4 -0
- data/bin/reap-rollout +7 -0
- data/lib/reap/default.yaml +76 -76
- data/lib/reap/manager.rb +2 -1
- data/lib/reap/manager/announce.rb +27 -23
- data/lib/reap/manager/gem.rb +2 -0
- data/lib/reap/manager/make.rb +4 -0
- data/lib/reap/manager/{pack.rb → package.rb} +15 -0
- data/lib/reap/manager/rdoc.rb +6 -11
- data/lib/reap/manager/release.rb +26 -60
- data/lib/reap/manager/rubyforge.rb +37 -16
- data/lib/reap/manager/stamp.rb +64 -0
- data/lib/reap/systems/rubyforge.rb +34 -16
- data/lib/reap/systems/subversion.rb +16 -8
- data/meta/VERSION +1 -1
- metadata +6 -3
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/
|
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
data/lib/reap/default.yaml
CHANGED
@@ -1,77 +1,77 @@
|
|
1
|
-
|
2
|
-
announce:
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
check:
|
16
|
-
|
17
|
-
|
18
|
-
check-syntax:
|
19
|
-
|
20
|
-
|
21
|
-
check-load:
|
22
|
-
|
23
|
-
|
24
|
-
clean:
|
25
|
-
|
26
|
-
log:
|
27
|
-
|
28
|
-
|
29
|
-
log-notes:
|
30
|
-
|
31
|
-
|
32
|
-
make:
|
33
|
-
|
34
|
-
package:
|
35
|
-
|
36
|
-
publish:
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
rdoc:
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
ri:
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
release:
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
spec:
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
stats:
|
68
|
-
|
69
|
-
|
70
|
-
test:
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
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/
|
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
|
57
|
-
version = options.versoin
|
56
|
+
title = options.title || metadata.title
|
57
|
+
version = options.versoin || metadata.version
|
58
58
|
|
59
59
|
# defaults
|
60
|
-
subject ||= "
|
60
|
+
subject ||= "%s, v%s released"
|
61
61
|
account ||= mail_from
|
62
62
|
|
63
63
|
subject = subject % [title, version]
|
64
64
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
email
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
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(
|
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")
|
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
|
data/lib/reap/manager/gem.rb
CHANGED
data/lib/reap/manager/make.rb
CHANGED
@@ -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
|
|
data/lib/reap/manager/rdoc.rb
CHANGED
@@ -2,17 +2,12 @@ module Reap
|
|
2
2
|
|
3
3
|
class Manager
|
4
4
|
|
5
|
-
#
|
6
|
-
#
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
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
|
#
|
data/lib/reap/manager/release.rb
CHANGED
@@ -4,75 +4,41 @@ module Reap
|
|
4
4
|
|
5
5
|
class Manager
|
6
6
|
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
7
|
+
# Release packages (to rubyforge). This generates
|
8
|
+
# the packages, and then distributes them to the
|
9
|
+
# file server.
|
10
10
|
|
11
|
-
def
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
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
|
-
|
32
|
-
|
33
|
-
|
21
|
+
def rollout(options={})
|
22
|
+
if force?
|
23
|
+
doc, pub, ann, tag = true, true, true, true
|
34
24
|
else
|
35
|
-
|
36
|
-
|
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
|
-
|
40
|
-
|
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
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
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
|
-
#
|
8
|
-
# 'changelog' => 'CHANGES',
|
9
|
-
# 'notelog' => 'NOTES'
|
10
|
-
#}
|
7
|
+
# Returns Rubyforge system object.
|
11
8
|
|
12
|
-
|
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
|
-
|
19
|
+
Rubyforge.new(rubyforge_options)
|
20
|
+
end
|
25
21
|
|
26
|
-
|
27
|
-
options['store'] = 'pkg'
|
22
|
+
# Release packages to rubyforge.
|
28
23
|
|
29
|
-
|
30
|
-
|
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
|
-
|
36
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
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
|
-
|
270
|
+
end
|
263
271
|
files.each do |file|
|
264
272
|
fname = File.basename(file)
|
265
273
|
if file_id = file?(fname, package)
|
266
|
-
|
267
|
-
|
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
|
-
|
274
|
-
|
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
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
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
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
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.
|
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.
|
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-
|
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/
|
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
|