release 0.4.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/History.rdoc +133 -0
- data/Manifest +15 -0
- data/README.rdoc +86 -0
- data/Rakefile +16 -0
- data/Todo.rdoc +18 -0
- data/bin/re +243 -0
- data/release.gemspec +35 -0
- data/spec/fixtures/bar/version.rb +6 -0
- data/spec/fixtures/foo.rb +6 -0
- data/spec/release_spec.rb +86 -0
- data/spec/spec_helper.rb +17 -0
- data/tasks/docs.rake +13 -0
- data/tasks/gemspec.rake +3 -0
- data/tasks/spec.rake +22 -0
- data/tasks/update.rake +5 -0
- metadata +88 -0
data/History.rdoc
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
|
2
|
+
=== 0.4.0 / 2009-10-10
|
3
|
+
|
4
|
+
* Updated history style for markdown
|
5
|
+
|
6
|
+
=== 0.3.7 / 2009-04-08
|
7
|
+
|
8
|
+
* Removed --trace since commander handles this now
|
9
|
+
|
10
|
+
=== 0.3.6 / 2009-04-08
|
11
|
+
|
12
|
+
* Added growl notifications of success or failure
|
13
|
+
* visionmedia-commander >=3.2.7 for growl notifications
|
14
|
+
|
15
|
+
=== 0.3.5 / 2009-04-08
|
16
|
+
|
17
|
+
* Added support for multiple version files
|
18
|
+
|
19
|
+
=== 0.3.4 / 2009-03-24
|
20
|
+
|
21
|
+
* Github build me?
|
22
|
+
|
23
|
+
=== 0.3.3 / 2009-03-24
|
24
|
+
|
25
|
+
* Updated compatibility with latest commander
|
26
|
+
* Removed need for .re directory
|
27
|
+
* Fixed config help doc typo
|
28
|
+
|
29
|
+
=== 0.3.2 / 2009-03-14
|
30
|
+
|
31
|
+
* Github, build me!
|
32
|
+
|
33
|
+
=== 0.3.1 / 2009-03-14
|
34
|
+
|
35
|
+
* Added replacement of <Commander::Command::Options in configured releases
|
36
|
+
|
37
|
+
=== 0.3.0 / 2009-03-14
|
38
|
+
|
39
|
+
* Added :bump as the default command
|
40
|
+
* Updated visionmedia-commander >=3.1.1
|
41
|
+
* Removed commits switch since its not used anymore
|
42
|
+
|
43
|
+
=== 0.2.3 / 2009-03-10
|
44
|
+
|
45
|
+
* Added better git logging support. Now stores .re/last_version and compares log changes
|
46
|
+
since then and HEAD.
|
47
|
+
|
48
|
+
=== 0.2.2 / 2009-03-09
|
49
|
+
|
50
|
+
* Added raising of error when version file is not found
|
51
|
+
|
52
|
+
=== 0.2.1 / 2009-03-09
|
53
|
+
|
54
|
+
* Fixed history when using --dry-run, no longer attempts to add git log to the change log
|
55
|
+
|
56
|
+
=== 0.2.0 / 2009-03-06
|
57
|
+
|
58
|
+
* Forgot gemspec (github build away!)
|
59
|
+
|
60
|
+
=== 0.1.9 / 2009-03-06
|
61
|
+
|
62
|
+
* Added auto-generation / saving of history
|
63
|
+
* Refactored locate_version_file
|
64
|
+
* Seperated actions
|
65
|
+
* Removed hyphen from default commit message
|
66
|
+
|
67
|
+
=== 0.1.7 / 2009-03-06
|
68
|
+
|
69
|
+
* Changed #sh (again), /dev/null-ifying stdout
|
70
|
+
|
71
|
+
=== 0.1.5 / 2009-03-06
|
72
|
+
|
73
|
+
* Added update rake task to fetch latest version of relese ( since release uses release ;) )
|
74
|
+
|
75
|
+
=== 0.1.4 / 2009-03-06
|
76
|
+
|
77
|
+
* Added -F, --format switch for chaning the git log --pretty format
|
78
|
+
* Changed back to #system in #sh
|
79
|
+
* Changed log format to "* %s" since most people use the RDoc syntax for history
|
80
|
+
* Fixed issue with --config not merging
|
81
|
+
|
82
|
+
=== 0.1.3 / 2009-03-06
|
83
|
+
|
84
|
+
* Added progress-bar
|
85
|
+
* Added -n, --commits switch
|
86
|
+
* Changed log format
|
87
|
+
* Changed dependency, now requires visionmedia-commander >= 2.5.6
|
88
|
+
* Changed #sh, now using sub-shell now to prevent cluttering stdout
|
89
|
+
|
90
|
+
=== 0.1.2 / 2009-03-06
|
91
|
+
|
92
|
+
* Added #log, using it replacing #say calls
|
93
|
+
* Changed -h to -H for history, -h collides with --help from commander gem
|
94
|
+
* Fixed bump levels.
|
95
|
+
Previously 0.1.2 bumped at the minor level would bump to 0.2.2, this is
|
96
|
+
incorrect. It now bumps to 0.2.0, as expected.
|
97
|
+
|
98
|
+
=== 0.1.1 / 2009-03-06
|
99
|
+
|
100
|
+
* Added --verify-master switch
|
101
|
+
|
102
|
+
=== 0.1.0 / 2009-03-05
|
103
|
+
|
104
|
+
* Added dependency of visionmedia-commander gem
|
105
|
+
* Trapping INT for better abort message
|
106
|
+
|
107
|
+
=== 0.0.8 / 2009-03-05
|
108
|
+
|
109
|
+
* Better formatting for `re config show`
|
110
|
+
|
111
|
+
=== 0.0.7 / 2009-03-05
|
112
|
+
|
113
|
+
* Added config sub-command for storing, removing, and viewing configurations
|
114
|
+
* Added --config NAME switch to bump sub-command
|
115
|
+
* Fixed git log switch preventing --pretty=oneline from working
|
116
|
+
|
117
|
+
=== 0.0.5 / 2009-03-05
|
118
|
+
|
119
|
+
* Added git log pretty=oneline to take a look at commits while editing history
|
120
|
+
* Added --trace switch
|
121
|
+
|
122
|
+
=== 0.0.4 / 2009-03-05
|
123
|
+
|
124
|
+
* Added --history switch, currently tested with textmate only
|
125
|
+
|
126
|
+
=== 0.0.3 / 2009-03-05
|
127
|
+
|
128
|
+
* Added --dry-run
|
129
|
+
* Fixed --no-rake
|
130
|
+
|
131
|
+
=== 0.0.1 / 2009-03-05
|
132
|
+
|
133
|
+
* Initial release
|
data/Manifest
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
History.rdoc
|
2
|
+
Manifest
|
3
|
+
README.rdoc
|
4
|
+
Rakefile
|
5
|
+
Todo.rdoc
|
6
|
+
bin/re
|
7
|
+
release.gemspec
|
8
|
+
spec/fixtures/bar/version.rb
|
9
|
+
spec/fixtures/foo.rb
|
10
|
+
spec/release_spec.rb
|
11
|
+
spec/spec_helper.rb
|
12
|
+
tasks/docs.rake
|
13
|
+
tasks/gemspec.rake
|
14
|
+
tasks/spec.rake
|
15
|
+
tasks/update.rake
|
data/README.rdoc
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
|
2
|
+
= Release
|
3
|
+
|
4
|
+
Github release management system.
|
5
|
+
|
6
|
+
== Description
|
7
|
+
|
8
|
+
Tired of altering versions?, committing, tagging, pushing, and
|
9
|
+
pushing tags to Github manually? Never fear, release is here!
|
10
|
+
|
11
|
+
== Usage
|
12
|
+
|
13
|
+
In order to use the 're' command, you should be in the root
|
14
|
+
directory of your project (ie where .git, lib, etc live) because
|
15
|
+
sub-commands execute in context to this directory.
|
16
|
+
|
17
|
+
== Features
|
18
|
+
|
19
|
+
* Bump version levels [major, minor, (tiny | patch)]
|
20
|
+
* Commit with default release message (or alter)
|
21
|
+
* Tag and push to github
|
22
|
+
* Run rake-tasks before releasing
|
23
|
+
* All in a single command!
|
24
|
+
|
25
|
+
== Examples
|
26
|
+
|
27
|
+
View global help
|
28
|
+
$ re help
|
29
|
+
|
30
|
+
View help for the bump sub-command
|
31
|
+
$ re help bump
|
32
|
+
|
33
|
+
Bump patch (tiny), auto-locates version.rb
|
34
|
+
$ re bump
|
35
|
+
|
36
|
+
It is recommended that you do a dry-run to verify that release will work
|
37
|
+
$ re bump --dry-run
|
38
|
+
|
39
|
+
Bump major with custom commit message (VERSION is replaced with release version)
|
40
|
+
$ re bump major -m 'Release VERSION, check it out!'
|
41
|
+
|
42
|
+
Run rake tasks before releasing (defaults to manifest,gemspec)
|
43
|
+
$ re bump minor -r manifest,gemspec,email
|
44
|
+
|
45
|
+
Bump is also the default sub-command, so instead of the previous command you may simply
|
46
|
+
$ re minor -r manifest,gemspec,email
|
47
|
+
|
48
|
+
Specific version file
|
49
|
+
$ re bump --file bin/re
|
50
|
+
|
51
|
+
Edit changelog or history (auto-locates file within the current directory) before releasing.
|
52
|
+
This switch currently grabs the last -n commits from git log and places them in your history
|
53
|
+
file, which then opens for adjustments. Alter -n, --commits to change the number of commits added.
|
54
|
+
$ re bump major --history
|
55
|
+
|
56
|
+
== Limitations
|
57
|
+
|
58
|
+
* Currently supports 'n.n.n' format only
|
59
|
+
* The --history switch has been tested with textmate only
|
60
|
+
* Auto-locates version.rb using glob lib/**/version.rb (specify a specific file with --file switch)
|
61
|
+
|
62
|
+
== License:
|
63
|
+
|
64
|
+
(The MIT License)
|
65
|
+
|
66
|
+
Copyright (c) 2009 TJ Holowaychuk <tj@vision-media.ca>
|
67
|
+
|
68
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
69
|
+
a copy of this software and associated documentation files (the
|
70
|
+
'Software'), to deal in the Software without restriction, including
|
71
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
72
|
+
distribute, sublicense, an d/or sell copies of the Software, and to
|
73
|
+
permit persons to whom the Software is furnished to do so, subject to
|
74
|
+
the following conditions:
|
75
|
+
|
76
|
+
The above copyright notice and this permission notice shall be
|
77
|
+
included in all copies or substantial portions of the Software.
|
78
|
+
|
79
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
80
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
81
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
82
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
83
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
84
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
85
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
86
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rake'
|
4
|
+
require 'echoe'
|
5
|
+
load './bin/re'
|
6
|
+
|
7
|
+
Echoe.new "release", program(:version) do |p|
|
8
|
+
p.author = "TJ Holowaychuk"
|
9
|
+
p.email = "tj@vision-media.ca"
|
10
|
+
p.summary = "Github release management system"
|
11
|
+
p.url = "http://github.com/visionmedia/release"
|
12
|
+
p.runtime_dependencies = []
|
13
|
+
p.runtime_dependencies << "visionmedia-commander >=3.2.7"
|
14
|
+
end
|
15
|
+
|
16
|
+
Dir['tasks/**/*.rake'].sort.each { |f| load f }
|
data/Todo.rdoc
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
|
2
|
+
== Major:
|
3
|
+
|
4
|
+
* Adjust gh-pages with screencasts / redo samples without bump ... and better samples with config etc
|
5
|
+
* Add ability to do a graceful abort
|
6
|
+
* Add option to prevent -a in commit command
|
7
|
+
* Better specs
|
8
|
+
* When exception is raised revert all alterations made to that point
|
9
|
+
* Support init of first tag
|
10
|
+
* Refactor
|
11
|
+
|
12
|
+
== Minor:
|
13
|
+
|
14
|
+
* Nothing
|
15
|
+
|
16
|
+
== Brainstorming:
|
17
|
+
|
18
|
+
* Nothing
|
data/bin/re
ADDED
@@ -0,0 +1,243 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'commander'
|
5
|
+
require 'yaml'
|
6
|
+
|
7
|
+
program :name, 'release'
|
8
|
+
program :version, '0.4.0'
|
9
|
+
program :description, 'Github release management'
|
10
|
+
|
11
|
+
default_command :bump
|
12
|
+
|
13
|
+
CONFIG_FILE = File.expand_path('~/.re-config')
|
14
|
+
|
15
|
+
trap 'INT' do
|
16
|
+
raise "release interrupted"
|
17
|
+
end
|
18
|
+
|
19
|
+
def sh command, nullify = true
|
20
|
+
nullify ? `#{command} &> /dev/null` : `#{command}`
|
21
|
+
end
|
22
|
+
|
23
|
+
def extract_version_from file
|
24
|
+
raise 'failed to locate version file. Use --file' unless file
|
25
|
+
contents = File.read file
|
26
|
+
version = $~.captures if contents =~ /(\d+)\.(\d+)\.(\d+)/
|
27
|
+
raise "failed to locate version within #{file}. Must be format 'n.n.n'." unless version.length == 3
|
28
|
+
version.map { |v| v.to_i }
|
29
|
+
end
|
30
|
+
|
31
|
+
def bump_version file, level
|
32
|
+
version = extract_version_from file
|
33
|
+
case level.to_sym
|
34
|
+
when :tiny, :patch ; version[2] += 1
|
35
|
+
when :minor ; version[1] += 1 ; version[2] = 0
|
36
|
+
when :major ; version[0] += 1 ; version[1] = 0 ; version[2] = 0
|
37
|
+
else raise "invalid bump level '#{level}'"
|
38
|
+
end
|
39
|
+
version
|
40
|
+
end
|
41
|
+
|
42
|
+
def replace_version file, level
|
43
|
+
version = bump_version(file, level).join '.'
|
44
|
+
contents = File.read file
|
45
|
+
contents.sub! /\d+\.\d+\.\d+/, version
|
46
|
+
File.open(file, 'w+') { |f| f.write contents }
|
47
|
+
version
|
48
|
+
end
|
49
|
+
|
50
|
+
def locate_version_file
|
51
|
+
Dir['lib/**/version.rb'].first
|
52
|
+
end
|
53
|
+
|
54
|
+
def locate_history_file
|
55
|
+
Dir['*'].grep(/history|change/i).first
|
56
|
+
end
|
57
|
+
|
58
|
+
def bump_options c
|
59
|
+
c.option '-f', '--file FILE', Array, 'File(s) containing the version, otherwise searches lib/ for version.rb'
|
60
|
+
c.option '-m', '--message MESSAGE', String, 'Message defaults to \'- Release VERSION\''
|
61
|
+
c.option '-r', '--rake TASKS', Array, 'Defaults to manifest,gemspec to build manifest / gemspec before releasing'
|
62
|
+
c.option '-R', '--no-rake', 'Disable all rake tasks'
|
63
|
+
c.option '-H', '--history', 'Edit history in EDITOR before releasing'
|
64
|
+
c.option '-d', '--dry-run', 'Performs a dry run, without releasing'
|
65
|
+
c.option '-F', '--format FORMAT', 'Valid git log --pretty format. Defaults to "format:\' * %s\'"'
|
66
|
+
c.option '-M', '--verify-master', 'Verify that master is the current branch before releasing'
|
67
|
+
end
|
68
|
+
|
69
|
+
def save_config hash
|
70
|
+
File.open(CONFIG_FILE, 'w+') { |f| YAML.dump hash, f }
|
71
|
+
end
|
72
|
+
|
73
|
+
def remove_config name
|
74
|
+
if hash = load_config
|
75
|
+
hash.delete name
|
76
|
+
save_config hash
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def load_config name = nil
|
81
|
+
hash = YAML.load_file CONFIG_FILE rescue false
|
82
|
+
return hash unless name and hash
|
83
|
+
raise "configuration '#{name}' cannot be found" unless hash.include? name
|
84
|
+
hash[name]
|
85
|
+
end
|
86
|
+
|
87
|
+
def master_branch?
|
88
|
+
`git branch | grep '*' | awk '{print $2}'`.strip == 'master'
|
89
|
+
end
|
90
|
+
|
91
|
+
def log message
|
92
|
+
say "... #{message}"
|
93
|
+
end
|
94
|
+
|
95
|
+
def action title, &block
|
96
|
+
(@__actions ||= []) << [title, block]
|
97
|
+
end
|
98
|
+
|
99
|
+
def actions
|
100
|
+
@__actions
|
101
|
+
end
|
102
|
+
|
103
|
+
def last_version
|
104
|
+
`git tag`.split.last
|
105
|
+
end
|
106
|
+
|
107
|
+
command :bump do |c|
|
108
|
+
bump_options c
|
109
|
+
c.syntax = 're [bump] [level] [options]'
|
110
|
+
c.summary = 'Bump the version <level>, defaults to patch'
|
111
|
+
c.description = 'Bump the version by major, minor, or patch (tiny) levels, defaults to patch.'
|
112
|
+
c.example 'Bump patch level, running several rake tasks first', 're bump --rake manifest,gemspec'
|
113
|
+
c.example 'Custom message, VERSION replaced with actual version', 're bump major --message \'Release of App VERSION\''
|
114
|
+
c.option '-c', '--config NAME', 'Load configuration options'
|
115
|
+
c.when_called do |args, o|
|
116
|
+
begin
|
117
|
+
|
118
|
+
level = args.shift || 'patch'
|
119
|
+
o.message = o.message || 'Release VERSION'
|
120
|
+
o.rake = o.rake || %w( manifest gemspec )
|
121
|
+
o.file = o.file || [locate_version_file]
|
122
|
+
o.format = o.format || "format:' * %s'"
|
123
|
+
o.__hash__.merge! load_config(o.config)
|
124
|
+
|
125
|
+
if o.verify_master
|
126
|
+
action 'verifying master branch' do
|
127
|
+
raise 'master branch verification failed' unless master_branch?
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
if o.dry_run
|
132
|
+
def sh command, nullify = true
|
133
|
+
log "`#{command}`"
|
134
|
+
end
|
135
|
+
log "version file(s) #{o.file.join(', ')}"
|
136
|
+
version = o.file.inject false do |version, file|
|
137
|
+
version = bump_version(file, level).join '.'
|
138
|
+
end
|
139
|
+
else
|
140
|
+
version = o.file.inject false do |version, file|
|
141
|
+
version = replace_version file, level
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
if o.history
|
146
|
+
banner = "\n#{version} / #{ Time.now.strftime('%Y-%m-%d') }\n"
|
147
|
+
banner += "==================\n"
|
148
|
+
changes = sh "git log --pretty=#{o.format} #{last_version}..", false
|
149
|
+
unless o.dry_run
|
150
|
+
previous = File.read locate_history_file
|
151
|
+
File.open(locate_history_file, 'w') do |file|
|
152
|
+
file.write [banner, changes, previous].join("\n")
|
153
|
+
end
|
154
|
+
end
|
155
|
+
sh "$EDITOR #{locate_history_file} --wait"
|
156
|
+
end
|
157
|
+
|
158
|
+
unless o.no_rake == false
|
159
|
+
action 'running rake tasks' do
|
160
|
+
o.rake.each { |task| sh "rake #{task}" }
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
action 'committing' do
|
165
|
+
sh "git commit -a -m '#{ o.message.sub('VERSION', version) }'"
|
166
|
+
end
|
167
|
+
|
168
|
+
action 'tagging' do
|
169
|
+
sh "git tag #{version}"
|
170
|
+
end
|
171
|
+
|
172
|
+
action 'pushing branch' do
|
173
|
+
sh "git push"
|
174
|
+
end
|
175
|
+
|
176
|
+
action 'pushing tags' do
|
177
|
+
sh "git push --tags"
|
178
|
+
end
|
179
|
+
|
180
|
+
unless o.dry_run
|
181
|
+
options = {
|
182
|
+
:complete_message => "Release #{version} complete",
|
183
|
+
:format => "Releasing #{version} (:progress_bar) :title ",
|
184
|
+
:width => actions.length * 4,
|
185
|
+
}
|
186
|
+
progress actions, options do |title, proc|
|
187
|
+
proc.call
|
188
|
+
{ :title => title }
|
189
|
+
end
|
190
|
+
else
|
191
|
+
actions.each do |title, proc|
|
192
|
+
proc.call
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
rescue Exception => e
|
197
|
+
notify_error "Release failed"
|
198
|
+
raise
|
199
|
+
else
|
200
|
+
notify_ok "Release #{version} complete"
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
command :config do |c|
|
206
|
+
bump_options c
|
207
|
+
c.syntax = 're config <op> <name>'
|
208
|
+
c.summary = 'Manage configurations'
|
209
|
+
c.description = "Add, remove, or show release configurations."
|
210
|
+
c.example 'Create config for myproject. All switches in this command will be stored as the new configuration.',
|
211
|
+
're config add myproject --message "Release myproject VERSION" --file bin/myproject'
|
212
|
+
c.example 'Use the config created above', 're bump --config myproject'
|
213
|
+
c.example 'Remove myproject config', 're config remove myproject'
|
214
|
+
c.example 'Show all configurations', 're config show'
|
215
|
+
c.when_called do |args, options|
|
216
|
+
op = args.shift
|
217
|
+
name = args.shift
|
218
|
+
|
219
|
+
case op
|
220
|
+
when 'add'
|
221
|
+
abort 'invalid configuration name' unless name
|
222
|
+
if config = load_config
|
223
|
+
config[name] = options.__hash__
|
224
|
+
else
|
225
|
+
config = { name => options.__hash__ }
|
226
|
+
end
|
227
|
+
save_config config
|
228
|
+
log "configuration '#{name}' saved"
|
229
|
+
when 'remove'
|
230
|
+
abort 'invalid configuration name' unless name
|
231
|
+
remove_config name
|
232
|
+
log "configuration '#{name}' removed"
|
233
|
+
when 'show'
|
234
|
+
abort 'no configurations' unless load_config
|
235
|
+
load_config.each do |name, config|
|
236
|
+
say '%14s: %s' % [name, config.inspect]
|
237
|
+
end
|
238
|
+
else
|
239
|
+
abort 'invalid operation'
|
240
|
+
end
|
241
|
+
|
242
|
+
end
|
243
|
+
end
|
data/release.gemspec
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{release}
|
5
|
+
s.version = "0.4.0"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["TJ Holowaychuk"]
|
9
|
+
s.date = %q{2009-10-10}
|
10
|
+
s.default_executable = %q{re}
|
11
|
+
s.description = %q{Github release management system}
|
12
|
+
s.email = %q{tj@vision-media.ca}
|
13
|
+
s.executables = ["re"]
|
14
|
+
s.extra_rdoc_files = ["README.rdoc", "bin/re", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake", "tasks/update.rake"]
|
15
|
+
s.files = ["History.rdoc", "Manifest", "README.rdoc", "Rakefile", "Todo.rdoc", "bin/re", "release.gemspec", "spec/fixtures/bar/version.rb", "spec/fixtures/foo.rb", "spec/release_spec.rb", "spec/spec_helper.rb", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake", "tasks/update.rake"]
|
16
|
+
s.homepage = %q{http://github.com/visionmedia/release}
|
17
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Release", "--main", "README.rdoc"]
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
s.rubyforge_project = %q{release}
|
20
|
+
s.rubygems_version = %q{1.3.5}
|
21
|
+
s.summary = %q{Github release management system}
|
22
|
+
|
23
|
+
if s.respond_to? :specification_version then
|
24
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
25
|
+
s.specification_version = 3
|
26
|
+
|
27
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
28
|
+
s.add_runtime_dependency(%q<visionmedia-commander>, [">= 3.2.7"])
|
29
|
+
else
|
30
|
+
s.add_dependency(%q<visionmedia-commander>, [">= 3.2.7"])
|
31
|
+
end
|
32
|
+
else
|
33
|
+
s.add_dependency(%q<visionmedia-commander>, [">= 3.2.7"])
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
|
2
|
+
describe "bin/re" do
|
3
|
+
|
4
|
+
before :each do
|
5
|
+
@input = StringIO.new
|
6
|
+
@output = StringIO.new
|
7
|
+
$terminal = HighLine.new @input, @output
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "bump" do
|
11
|
+
before :each do
|
12
|
+
@previous_version = extract_version_from(locate_version_file)
|
13
|
+
@bump = get_command :bump
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should locate version file" do
|
17
|
+
locate_version_file.should include('fixtures/bar/version.rb')
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should use default rake tasks manifest and gemspec" do
|
21
|
+
@bump.call
|
22
|
+
@output.string.should include('rake manifest')
|
23
|
+
@output.string.should include('rake gemspec')
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should add a commit message" do
|
27
|
+
@bump.call
|
28
|
+
@output.string.should include("git commit -a -m")
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should push, tag, and push tags" do
|
32
|
+
@bump.call
|
33
|
+
@output.string.should include("git tag")
|
34
|
+
@output.string.should include("git push")
|
35
|
+
@output.string.should include("git push --tags")
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should bump patch level by default" do
|
39
|
+
@bump.call
|
40
|
+
extract_version_from(locate_version_file)[2].should == @previous_version[2] + 1
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should bump patch level using tiny" do
|
44
|
+
@bump.call ['tiny']
|
45
|
+
extract_version_from(locate_version_file)[2].should == @previous_version[2] + 1
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should bump patch level using patch" do
|
49
|
+
@bump.call ['patch']
|
50
|
+
extract_version_from(locate_version_file)[2].should == @previous_version[2] + 1
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should bump minor level" do
|
54
|
+
@bump.call ['minor']
|
55
|
+
extract_version_from(locate_version_file)[1].should == @previous_version[1] + 1
|
56
|
+
extract_version_from(locate_version_file)[2].should == 0
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should bump major level" do
|
60
|
+
@bump.call ['major']
|
61
|
+
extract_version_from(locate_version_file)[0].should == @previous_version[0] + 1
|
62
|
+
extract_version_from(locate_version_file)[1].should == 0
|
63
|
+
extract_version_from(locate_version_file)[2].should == 0
|
64
|
+
end
|
65
|
+
|
66
|
+
# it "should allow altering of commit message with --message" do
|
67
|
+
# run 'bump', '--message', 'New release of VERSION'
|
68
|
+
# @output.string.should include('New release of')
|
69
|
+
# end
|
70
|
+
|
71
|
+
# it "should allow altering rake tasks with --rake" do
|
72
|
+
# run 'bump', '--rake', 'foo,bar'
|
73
|
+
# @output.string.should include('rake foo')
|
74
|
+
# @output.string.should include('rake bar')
|
75
|
+
# end
|
76
|
+
|
77
|
+
# it "should allow you to specify a version file with --file" do
|
78
|
+
# foo = File.dirname(__FILE__) + '/fixtures/foo.rb'
|
79
|
+
# previous_version = extract_version_from foo
|
80
|
+
# run 'bump', '--file', foo
|
81
|
+
# extract_version_from(foo)[2].should == previous_version[2] + 1
|
82
|
+
# end
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
load File.expand_path(File.dirname(__FILE__) + '/../bin/re')
|
3
|
+
|
4
|
+
def locate_version_file
|
5
|
+
Dir["#{File.dirname(__FILE__)}/*/**/*.rb"].grep(/version/).first
|
6
|
+
end
|
7
|
+
|
8
|
+
def sh command
|
9
|
+
say command
|
10
|
+
end
|
11
|
+
|
12
|
+
def run *args
|
13
|
+
$command_runner = Commander::Runner.new args
|
14
|
+
program :name, 'release'
|
15
|
+
program :version, '0.0.1'
|
16
|
+
program :description, 'Github release management'
|
17
|
+
end
|
data/tasks/docs.rake
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
|
2
|
+
namespace :docs do
|
3
|
+
|
4
|
+
desc 'Remove rdoc products'
|
5
|
+
task :remove => [:clobber_docs]
|
6
|
+
|
7
|
+
desc 'Build docs, and open in browser for viewing (specify BROWSER)'
|
8
|
+
task :open do
|
9
|
+
browser = ENV["BROWSER"] || "safari"
|
10
|
+
sh "open -a #{browser} doc/index.html"
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
data/tasks/gemspec.rake
ADDED
data/tasks/spec.rake
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
require 'spec/rake/spectask'
|
3
|
+
|
4
|
+
desc "Run all specifications"
|
5
|
+
Spec::Rake::SpecTask.new(:spec) do |t|
|
6
|
+
t.spec_opts = ["--color", "--require", "spec/spec_helper.rb"]
|
7
|
+
end
|
8
|
+
|
9
|
+
namespace :spec do
|
10
|
+
|
11
|
+
desc "Run all specifications verbosely"
|
12
|
+
Spec::Rake::SpecTask.new(:verbose) do |t|
|
13
|
+
t.spec_opts = ["--color", "--format", "specdoc", "--require", "spec/spec_helper.rb"]
|
14
|
+
end
|
15
|
+
|
16
|
+
desc "Run specific specification verbosely (specify SPEC)"
|
17
|
+
Spec::Rake::SpecTask.new(:select) do |t|
|
18
|
+
t.spec_files = [ENV["SPEC"]]
|
19
|
+
t.spec_opts = ["--color", "--format", "specdoc", "--require", "spec/spec_helper.rb"]
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
data/tasks/update.rake
ADDED
metadata
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: release
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- TJ Holowaychuk
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-10-10 00:00:00 -07:00
|
13
|
+
default_executable: re
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: visionmedia-commander
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 3.2.7
|
24
|
+
version:
|
25
|
+
description: Github release management system
|
26
|
+
email: tj@vision-media.ca
|
27
|
+
executables:
|
28
|
+
- re
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files:
|
32
|
+
- README.rdoc
|
33
|
+
- bin/re
|
34
|
+
- tasks/docs.rake
|
35
|
+
- tasks/gemspec.rake
|
36
|
+
- tasks/spec.rake
|
37
|
+
- tasks/update.rake
|
38
|
+
files:
|
39
|
+
- History.rdoc
|
40
|
+
- Manifest
|
41
|
+
- README.rdoc
|
42
|
+
- Rakefile
|
43
|
+
- Todo.rdoc
|
44
|
+
- bin/re
|
45
|
+
- release.gemspec
|
46
|
+
- spec/fixtures/bar/version.rb
|
47
|
+
- spec/fixtures/foo.rb
|
48
|
+
- spec/release_spec.rb
|
49
|
+
- spec/spec_helper.rb
|
50
|
+
- tasks/docs.rake
|
51
|
+
- tasks/gemspec.rake
|
52
|
+
- tasks/spec.rake
|
53
|
+
- tasks/update.rake
|
54
|
+
has_rdoc: true
|
55
|
+
homepage: http://github.com/visionmedia/release
|
56
|
+
licenses: []
|
57
|
+
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options:
|
60
|
+
- --line-numbers
|
61
|
+
- --inline-source
|
62
|
+
- --title
|
63
|
+
- Release
|
64
|
+
- --main
|
65
|
+
- README.rdoc
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: "0"
|
73
|
+
version:
|
74
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: "1.2"
|
79
|
+
version:
|
80
|
+
requirements: []
|
81
|
+
|
82
|
+
rubyforge_project: release
|
83
|
+
rubygems_version: 1.3.5
|
84
|
+
signing_key:
|
85
|
+
specification_version: 3
|
86
|
+
summary: Github release management system
|
87
|
+
test_files: []
|
88
|
+
|