shipit 0.0.3 → 0.0.4
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/ChangeLog +66 -0
- data/README +21 -3
- data/Rakefile +3 -3
- data/lib/shipit.rb +70 -45
- metadata +11 -2
data/ChangeLog
CHANGED
@@ -1,5 +1,71 @@
|
|
1
|
+
2008-01-06 cho45
|
2
|
+
|
3
|
+
* [r4147] lib/shipit.rb:
|
4
|
+
|
5
|
+
Ask after show all steps.
|
6
|
+
|
7
|
+
* [r4146] Rakefile:
|
8
|
+
|
9
|
+
Remove skip from Rakefile... This was only for debugging...
|
10
|
+
|
11
|
+
* [r4141] README:
|
12
|
+
|
13
|
+
follow removing Step::Ask
|
14
|
+
|
15
|
+
* [r4140] Rakefile, lib/shipit.rb:
|
16
|
+
|
17
|
+
Remove Step::Ask (is now default)
|
18
|
+
Add Step::Skip (is skip preceding steps)
|
19
|
+
|
20
|
+
* [r4139] lib/shipit.rb:
|
21
|
+
|
22
|
+
implement state shared with steps.
|
23
|
+
change spec of arguments of initialize
|
24
|
+
|
25
|
+
* [r4138] README:
|
26
|
+
|
27
|
+
change license to Ruby's
|
28
|
+
fix checkout uri
|
29
|
+
|
30
|
+
* [r4136] README:
|
31
|
+
|
32
|
+
append development notices to README
|
33
|
+
|
34
|
+
* [r4110] lib/shipit.rb:
|
35
|
+
|
36
|
+
better message
|
37
|
+
|
38
|
+
* [r4105] lib/shipit.rb:
|
39
|
+
|
40
|
+
unexpected return がうざいのでちゃんと条件分岐する
|
41
|
+
|
42
|
+
* [r4104] lib/shipit.rb:
|
43
|
+
|
44
|
+
prepare タスクだけを実行できるように
|
45
|
+
(Perl の shipit コマンドから shipit gem のタスクをたたきやすいように)
|
46
|
+
|
47
|
+
* [r4101] lib/shipit.rb:
|
48
|
+
|
49
|
+
デバッグコードが残っていた
|
50
|
+
|
51
|
+
* [r4100] Rakefile, lib/shipit.rb:
|
52
|
+
|
53
|
+
term-ansicolor 使ってみやすくなるように
|
54
|
+
|
55
|
+
* [r4099] Rakefile:
|
56
|
+
|
57
|
+
出力がうざいので判定方法を変更
|
58
|
+
|
1
59
|
2008-01-05 cho45
|
2
60
|
|
61
|
+
* [r4078] README:
|
62
|
+
|
63
|
+
README のサンプルを更新 (ChangeVersion を変更した)
|
64
|
+
|
65
|
+
* [r4076] ChangeLog, Rakefile:
|
66
|
+
|
67
|
+
Release 0.0.3
|
68
|
+
|
3
69
|
* [r4075] lib/shipit.rb:
|
4
70
|
|
5
71
|
タスクの実行を内部でやらないように (version をよみなおすため)
|
data/README
CHANGED
@@ -35,14 +35,13 @@ Example (This is from shipit gem Rakefile):
|
|
35
35
|
s.Step.new {
|
36
36
|
system("svn", "up")
|
37
37
|
}.and {}
|
38
|
-
s.Ask
|
39
38
|
s.Task :rubyforge
|
40
39
|
s.Step.new {
|
41
40
|
raise "svn2cl.sh is not found" unless system("svn2cl.sh", "--version")
|
42
41
|
}.and {
|
43
42
|
system("svn2cl.sh --break-before-msg=2 --group-by-day --include-rev --separate-daylogs")
|
44
43
|
}
|
45
|
-
s.ChangeVersion
|
44
|
+
s.ChangeVersion __FILE__, "VERS"
|
46
45
|
s.Commit
|
47
46
|
s.Task :clean, :package
|
48
47
|
s.RubyForge
|
@@ -50,10 +49,29 @@ Example (This is from shipit gem Rakefile):
|
|
50
49
|
s.Twitter
|
51
50
|
end
|
52
51
|
|
52
|
+
See more example at Rakefile[http://svn.coderepos.org/share/lang/ruby/shipit/trunk/Rakefile] of shipit.rb.
|
53
|
+
|
54
|
+
Some constants are currently hard-coded.
|
55
|
+
|
56
|
+
* NAME -> name of the library
|
57
|
+
* DESCRIPTION -> description of the library
|
58
|
+
* VERS -> version of the library
|
59
|
+
|
60
|
+
If you use different constants, please assign the value to above constants.
|
61
|
+
|
62
|
+
== Development
|
63
|
+
|
64
|
+
This library currently consider different environments.
|
65
|
+
If you use cutagem[http://cutagem.rubyforge.org/], this library works fine :)
|
66
|
+
|
67
|
+
And this library is hosted on CodeRepos[http://coderepos.org/share/wiki],
|
68
|
+
so you have some ideas for this library, please commit to repository:
|
69
|
+
|
70
|
+
$ svn co http://svn.coderepos.org/share/lang/ruby/shipit/trunk shipit
|
53
71
|
|
54
72
|
|
55
73
|
== Copyright
|
56
74
|
|
57
75
|
Author:: cho45 <cho45@lowreal.net>
|
58
76
|
Copyright:: Copyright (c) 2008 cho45
|
59
|
-
License::
|
77
|
+
License:: Ruby's
|
data/Rakefile
CHANGED
@@ -19,7 +19,7 @@ DESCRIPTION = "Automated release tasks."
|
|
19
19
|
RUBYFORGE_PROJECT = "lowreal"
|
20
20
|
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
21
21
|
BIN_FILES = %w( )
|
22
|
-
VERS = "0.0.
|
22
|
+
VERS = "0.0.4"
|
23
23
|
|
24
24
|
REV = File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
|
25
25
|
CLEAN.include ['**/.*.sw?', '*.gem', '.config']
|
@@ -61,6 +61,7 @@ spec = Gem::Specification.new do |s|
|
|
61
61
|
s.test_files = Dir["test/test_*.rb"]
|
62
62
|
|
63
63
|
s.add_dependency('rake')
|
64
|
+
s.add_dependency('term-ansicolor')
|
64
65
|
#s.add_dependency('activesupport', '>=1.3.1')
|
65
66
|
#s.required_ruby_version = '>= 1.8.2'
|
66
67
|
|
@@ -115,10 +116,9 @@ Rake::ShipitTask.new do |s|
|
|
115
116
|
s.Step.new {
|
116
117
|
system("svn", "up")
|
117
118
|
}.and {}
|
118
|
-
s.Ask
|
119
119
|
s.Task :rubyforge
|
120
120
|
s.Step.new {
|
121
|
-
raise "svn2cl.sh is not found" unless
|
121
|
+
raise "svn2cl.sh is not found" unless `svn2cl.sh --version`[/svn2cl.sh/]
|
122
122
|
}.and {
|
123
123
|
system("svn2cl.sh --break-before-msg=2 --group-by-day --include-rev --separate-daylogs")
|
124
124
|
}
|
data/lib/shipit.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "rubygems"
|
2
2
|
require "rake"
|
3
3
|
require "rake/tasklib"
|
4
|
+
require "term/ansicolor"
|
4
5
|
|
5
6
|
class Rake::ShipitTask < Rake::TaskLib
|
6
7
|
attr_reader :name
|
@@ -8,6 +9,8 @@ class Rake::ShipitTask < Rake::TaskLib
|
|
8
9
|
|
9
10
|
module Step; end
|
10
11
|
|
12
|
+
include Term::ANSIColor
|
13
|
+
|
11
14
|
def initialize(name=:shipit, &block)
|
12
15
|
@name = name
|
13
16
|
@block = block
|
@@ -15,35 +18,53 @@ class Rake::ShipitTask < Rake::TaskLib
|
|
15
18
|
end
|
16
19
|
|
17
20
|
def define
|
18
|
-
|
19
|
-
|
20
|
-
puts "Preparing steps... "
|
21
|
+
t = Proc.new do |t|
|
22
|
+
puts green { "Preparing steps... " }
|
21
23
|
steps = []
|
22
24
|
|
25
|
+
def steps.state
|
26
|
+
@state ||= {}
|
27
|
+
end
|
28
|
+
|
23
29
|
eigenclass = class <<steps; self; end
|
24
30
|
plugins = self.class.const_get(:Step)
|
25
31
|
plugins.constants.each do |i|
|
26
32
|
eigenclass.__send__(:define_method, i) do |*args|
|
27
|
-
self << ret = plugins.const_get(i).new(*args)
|
33
|
+
self << ret = plugins.const_get(i).new(self, *args)
|
28
34
|
ret
|
29
35
|
end
|
30
36
|
end
|
31
37
|
@block.call(steps)
|
32
38
|
steps.each do |s|
|
39
|
+
puts cyan { "Running Step (Prepare): #{s.class.name}" }
|
33
40
|
s.prepare if s.respond_to? :prepare
|
34
41
|
end
|
35
|
-
puts "done."
|
36
|
-
|
37
|
-
|
38
|
-
puts "
|
39
|
-
|
42
|
+
puts green { "done." }
|
43
|
+
unless t.name =~ /_prepare$/
|
44
|
+
puts
|
45
|
+
puts green { "Steps: #{steps.map{|i| i.class.name.sub(/.+::/, "")}.join(", ")}" }
|
46
|
+
puts "Really run? Cancel to press Ctrl+C."
|
47
|
+
$stdin.gets
|
48
|
+
steps.each do |s|
|
49
|
+
puts red { "Running Step: #{s.class.name}" }
|
50
|
+
s.run
|
51
|
+
end
|
52
|
+
puts green { "done." }
|
40
53
|
end
|
41
|
-
puts "done."
|
42
54
|
end
|
55
|
+
desc "Shipit: Automated Release"
|
56
|
+
task @name, &t
|
57
|
+
desc "Shipit: Automated Release (Only run prepare phase)"
|
58
|
+
task "#{@name}_prepare", &t
|
59
|
+
#desc "Shipit: Automated Release (dry run)"
|
60
|
+
#task "#{@name}_dryrun", &t
|
43
61
|
end
|
44
62
|
end
|
45
63
|
|
46
64
|
class Rake::ShipitTask::Step::Step
|
65
|
+
def initialize(step)
|
66
|
+
end
|
67
|
+
|
47
68
|
def new(&block)
|
48
69
|
@prepare = block
|
49
70
|
self
|
@@ -63,7 +84,7 @@ class Rake::ShipitTask::Step::Step
|
|
63
84
|
end
|
64
85
|
|
65
86
|
class Rake::ShipitTask::Step::Twitter
|
66
|
-
def initialize(msg=nil)
|
87
|
+
def initialize(step, msg=nil)
|
67
88
|
@msg = msg
|
68
89
|
end
|
69
90
|
|
@@ -94,7 +115,7 @@ class Rake::ShipitTask::Step::Twitter
|
|
94
115
|
end
|
95
116
|
|
96
117
|
class Rake::ShipitTask::Step::ChangeVersion
|
97
|
-
def initialize(file, name="VERSION", vers=VERS)
|
118
|
+
def initialize(step, file, name="VERSION", vers=VERS)
|
98
119
|
@file = file
|
99
120
|
@name = name
|
100
121
|
@vers = vers
|
@@ -122,7 +143,7 @@ class Rake::ShipitTask::Step::ChangeVersion
|
|
122
143
|
end
|
123
144
|
|
124
145
|
class Rake::ShipitTask::Step::Commit
|
125
|
-
def initialize(msg=nil)
|
146
|
+
def initialize(step, msg=nil)
|
126
147
|
@msg = msg
|
127
148
|
end
|
128
149
|
|
@@ -141,8 +162,38 @@ class Rake::ShipitTask::Step::Commit
|
|
141
162
|
end
|
142
163
|
end
|
143
164
|
|
165
|
+
class Rake::ShipitTask::Step::Tag
|
166
|
+
def initialize(step, format="release-%s")
|
167
|
+
@format = format
|
168
|
+
end
|
169
|
+
|
170
|
+
def prepare
|
171
|
+
require "uri"
|
172
|
+
ENV["LANG"] = "C"
|
173
|
+
url = `svn info`[/^URL: (.+)/, 1]
|
174
|
+
if url =~ /trunk$/
|
175
|
+
@url = URI(url) + "."
|
176
|
+
unless `svn info '#{(@url + "tags")}'`[/Node Kind: directory/]
|
177
|
+
raise "tags directory is not found"
|
178
|
+
end
|
179
|
+
else
|
180
|
+
raise "Run at trunk! Here is #{url}"
|
181
|
+
end
|
182
|
+
@vers = VERS
|
183
|
+
end
|
184
|
+
|
185
|
+
def run
|
186
|
+
trunk = @url + "trunk"
|
187
|
+
tag = @url + ("tags/#{@format}" % @vers)
|
188
|
+
msg = "Release %s" % @vers
|
189
|
+
command = ["svn", "cp", "-m", msg, trunk, tag].map {|i| i.to_s }
|
190
|
+
system(*command)
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
|
144
195
|
class Rake::ShipitTask::Step::Task
|
145
|
-
def initialize(*names)
|
196
|
+
def initialize(step, *names)
|
146
197
|
@names = names
|
147
198
|
@tasks = []
|
148
199
|
end
|
@@ -162,7 +213,7 @@ class Rake::ShipitTask::Step::Task
|
|
162
213
|
end
|
163
214
|
|
164
215
|
class Rake::ShipitTask::Step::RubyForge
|
165
|
-
def initialize(group_id=RUBYFORGE_PROJECT)
|
216
|
+
def initialize(step, group_id=RUBYFORGE_PROJECT)
|
166
217
|
@group_id = group_id
|
167
218
|
@description = DESCRIPTION
|
168
219
|
@name = NAME
|
@@ -171,8 +222,6 @@ class Rake::ShipitTask::Step::RubyForge
|
|
171
222
|
|
172
223
|
def prepare
|
173
224
|
require 'rubyforge'
|
174
|
-
p @vers
|
175
|
-
|
176
225
|
@rf = RubyForge.new
|
177
226
|
puts "Logging in"
|
178
227
|
@rf.login
|
@@ -198,39 +247,15 @@ class Rake::ShipitTask::Step::RubyForge
|
|
198
247
|
end
|
199
248
|
end
|
200
249
|
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
end
|
206
|
-
end
|
207
|
-
|
208
|
-
class Rake::ShipitTask::Step::Tag
|
209
|
-
def initialize(format="release-%s")
|
210
|
-
@format = format
|
250
|
+
# Skip preceding steps
|
251
|
+
class Rake::ShipitTask::Step::Skip
|
252
|
+
def initialize(step)
|
253
|
+
step.clear
|
211
254
|
end
|
212
255
|
|
213
256
|
def prepare
|
214
|
-
require "uri"
|
215
|
-
ENV["LANG"] = "C"
|
216
|
-
url = `svn info`[/^URL: (.+)/, 1]
|
217
|
-
if url =~ /trunk$/
|
218
|
-
@url = URI(url) + "."
|
219
|
-
unless `svn info '#{(@url + "tags")}'`[/Node Kind: directory/]
|
220
|
-
raise "tag directory is not found"
|
221
|
-
end
|
222
|
-
else
|
223
|
-
raise "Run at trunk!"
|
224
|
-
end
|
225
|
-
@vers = VERS
|
226
257
|
end
|
227
258
|
|
228
259
|
def run
|
229
|
-
trunk = @url + "trunk"
|
230
|
-
tag = @url + ("tags/#{@format}" % @vers)
|
231
|
-
msg = "Release %s" % @vers
|
232
|
-
command = ["svn", "cp", "-m", msg, trunk, tag].map {|i| i.to_s }
|
233
|
-
system(*command)
|
234
260
|
end
|
235
261
|
end
|
236
|
-
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shipit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cho45
|
@@ -9,7 +9,7 @@ autorequire: shipit
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-01-
|
12
|
+
date: 2008-01-07 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -21,6 +21,15 @@ dependencies:
|
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: "0"
|
23
23
|
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: term-ansicolor
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: "0"
|
32
|
+
version:
|
24
33
|
description: Automated release tasks.
|
25
34
|
email: cho45@lowreal.net
|
26
35
|
executables: []
|