visionmedia-release 0.0.5 → 0.1.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 +15 -0
- data/Rakefile +1 -0
- data/Todo.rdoc +3 -1
- data/bin/re +94 -14
- data/release.gemspec +1 -1
- metadata +1 -1
data/History.rdoc
CHANGED
@@ -1,4 +1,19 @@
|
|
1
1
|
|
2
|
+
=== 0.1.0 / 2009-03-05
|
3
|
+
|
4
|
+
* Added dependency of visionmedia-commander gem
|
5
|
+
* Trapping INT for better abort message
|
6
|
+
|
7
|
+
=== 0.0.8 / 2009-03-05
|
8
|
+
|
9
|
+
* Better formatting for `re config show`
|
10
|
+
|
11
|
+
=== 0.0.7 / 2009-03-05
|
12
|
+
|
13
|
+
* Added config sub-command for storing, removing, and viewing configurations
|
14
|
+
* Added --config NAME switch to bump sub-command
|
15
|
+
* Fixed git log switch preventing --pretty=oneline from working
|
16
|
+
|
2
17
|
=== 0.0.5 / 2009-03-05
|
3
18
|
|
4
19
|
* Added git log pretty=oneline to take a look at commits while editing history
|
data/Rakefile
CHANGED
@@ -10,6 +10,7 @@ Echoe.new("release", program(:version)) do |p|
|
|
10
10
|
p.summary = "Github release management system"
|
11
11
|
p.url = "http://github.com/visionmedia/release"
|
12
12
|
p.runtime_dependencies = []
|
13
|
+
p.runtime_dependencies << "visionmedia-commander >=2.4.6"
|
13
14
|
end
|
14
15
|
|
15
16
|
Dir['tasks/**/*.rake'].sort.each { |f| load f }
|
data/Todo.rdoc
CHANGED
data/bin/re
CHANGED
@@ -2,11 +2,18 @@
|
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'commander'
|
5
|
+
require 'yaml'
|
5
6
|
|
6
7
|
program :name, 'release'
|
7
|
-
program :version, '0.0
|
8
|
+
program :version, '0.1.0'
|
8
9
|
program :description, 'Github release management'
|
9
10
|
|
11
|
+
CONFIG_FILE = File.expand_path('~/.re-config')
|
12
|
+
|
13
|
+
trap 'INT' do
|
14
|
+
raise "release interrupted"
|
15
|
+
end
|
16
|
+
|
10
17
|
def sh command
|
11
18
|
system command
|
12
19
|
end
|
@@ -30,9 +37,7 @@ def replace_version file, level
|
|
30
37
|
version = bump_version(file, level).join '.'
|
31
38
|
contents = File.read file
|
32
39
|
contents.sub! /\d+\.\d+\.\d+/, version
|
33
|
-
File.open(file, 'w+')
|
34
|
-
file.write contents
|
35
|
-
end
|
40
|
+
File.open(file, 'w+') { |f| f.write contents }
|
36
41
|
version
|
37
42
|
end
|
38
43
|
|
@@ -44,12 +49,7 @@ def locate_history_file
|
|
44
49
|
Dir['*'].grep(/history|change/i).first
|
45
50
|
end
|
46
51
|
|
47
|
-
|
48
|
-
c.syntax = 're bump [level] [options]'
|
49
|
-
c.summary = 'Bump the version <level>, defaults to patch.'
|
50
|
-
c.description = 'Bump the version by major, minor, or patch (tiny) levels, defaults to patch.'
|
51
|
-
c.example 'Bump patch level, running several rake tasks first', 're bump --rake manifest,gemspec'
|
52
|
-
c.example 'Custom message, VERSION replaced with actual version', 're bump major --message \'Release of App VERSION\''
|
52
|
+
def bump_options c
|
53
53
|
c.option '-f', '--file FILE', 'File containing the version, otherwise searches lib/ for version.rb'
|
54
54
|
c.option '-m', '--message MESSAGE', String, 'Message defaults to \'- Release VERSION\''
|
55
55
|
c.option '-r', '--rake TASKS', Array, 'Defaults to manifest,gemspec to build manifest / gemspec before releasing'
|
@@ -57,6 +57,40 @@ command :bump do |c|
|
|
57
57
|
c.option '-h', '--history', 'Edit history in EDITOR before releasing'
|
58
58
|
c.option '-d', '--dry-run', 'Performs a dry run, without releasing'
|
59
59
|
c.option '-t', '--trace', 'Output callstack when an exception is raised'
|
60
|
+
end
|
61
|
+
|
62
|
+
def save_config config
|
63
|
+
File.open(CONFIG_FILE, 'w+') { |f| YAML.dump config, f }
|
64
|
+
end
|
65
|
+
|
66
|
+
def remove_config name
|
67
|
+
config = load_config
|
68
|
+
config.delete name
|
69
|
+
save_config config
|
70
|
+
end
|
71
|
+
|
72
|
+
def load_config name = nil
|
73
|
+
raise "configuration file cannot be found, run `re help config` for usage" unless File.exists? CONFIG_FILE
|
74
|
+
config = YAML.load_file CONFIG_FILE
|
75
|
+
return config unless name
|
76
|
+
raise "configuration '#{name}' cannot be found" unless config.include? name
|
77
|
+
config[name]
|
78
|
+
end
|
79
|
+
|
80
|
+
def merge_options options, other_options
|
81
|
+
a = options.instance_variable_get :"@table"
|
82
|
+
b = other_options.instance_variable_get :"@table"
|
83
|
+
a.merge! b
|
84
|
+
end
|
85
|
+
|
86
|
+
command :bump do |c|
|
87
|
+
bump_options c
|
88
|
+
c.syntax = 're bump [level] [options]'
|
89
|
+
c.summary = 'Bump the version <level>, defaults to patch'
|
90
|
+
c.description = 'Bump the version by major, minor, or patch (tiny) levels, defaults to patch.'
|
91
|
+
c.example 'Bump patch level, running several rake tasks first', 're bump --rake manifest,gemspec'
|
92
|
+
c.example 'Custom message, VERSION replaced with actual version', 're bump major --message \'Release of App VERSION\''
|
93
|
+
c.option '-c', '--config NAME', 'Load configuration options'
|
60
94
|
c.when_called do |args, o|
|
61
95
|
begin
|
62
96
|
# Defaults
|
@@ -64,7 +98,13 @@ command :bump do |c|
|
|
64
98
|
o.rake = o.rake || %w( manifest gemspec )
|
65
99
|
o.file = o.file || locate_version_file
|
66
100
|
o.message = o.message || '- Release VERSION'
|
67
|
-
|
101
|
+
|
102
|
+
# Configurations
|
103
|
+
if o.config
|
104
|
+
say "... using '#{o.config}' configuration"
|
105
|
+
merge_options o, load_config(o.config)
|
106
|
+
end
|
107
|
+
|
68
108
|
# Dry-run
|
69
109
|
if o.dry_run
|
70
110
|
puts "... performing dry-run"
|
@@ -78,7 +118,7 @@ command :bump do |c|
|
|
78
118
|
|
79
119
|
# History
|
80
120
|
if o.history
|
81
|
-
sh "git log pretty=
|
121
|
+
sh "git log --pretty=oneline"
|
82
122
|
sh "$EDITOR #{locate_history_file} --wait"
|
83
123
|
end
|
84
124
|
|
@@ -89,7 +129,47 @@ command :bump do |c|
|
|
89
129
|
sh "git tag #{version} && git push && git push --tags"
|
90
130
|
say "... release #{version} complete"
|
91
131
|
rescue Exception => e
|
92
|
-
o.trace ? raise : say("... release failed: #{e}")
|
132
|
+
o.trace ? raise : say("... release failed: #{e}\n")
|
93
133
|
end
|
94
134
|
end
|
95
|
-
end
|
135
|
+
end
|
136
|
+
|
137
|
+
command :config do |c|
|
138
|
+
bump_options c
|
139
|
+
c.syntax = 're config <op> <name>'
|
140
|
+
c.summary = 'Manage configurations'
|
141
|
+
c.description = "Add, remove, or show release configurations."
|
142
|
+
c.example 'Create config for myproject. All switches in this command will be stored as the new configuration.',
|
143
|
+
're config add myproject --message "Release myproject VERSION" --file bin/myproject'
|
144
|
+
c.example 'Use the config created above', 're bump --config myproject'
|
145
|
+
c.example 'Remove myproject config', 're config remove myproject'
|
146
|
+
c.example 'Show all configurations', 're show'
|
147
|
+
c.when_called do |args, options|
|
148
|
+
op = args.shift
|
149
|
+
name = args.shift
|
150
|
+
|
151
|
+
case op
|
152
|
+
when 'add'
|
153
|
+
raise 'invalid configuration name' unless name
|
154
|
+
if File.exists? CONFIG_FILE
|
155
|
+
config = load_config
|
156
|
+
config[name] = options
|
157
|
+
else
|
158
|
+
config = { name => options }
|
159
|
+
end
|
160
|
+
save_config config
|
161
|
+
say "... configuration '#{name}' saved"
|
162
|
+
when 'remove'
|
163
|
+
raise 'invalid configuration name' unless name
|
164
|
+
remove_config name
|
165
|
+
say "... configuration '#{name}' removed"
|
166
|
+
when 'show'
|
167
|
+
load_config.each do |name, config|
|
168
|
+
say '%14s: %s' % [name, config.inspect.sub('#<OpenStruct ', '').sub('>', '')]
|
169
|
+
end
|
170
|
+
else
|
171
|
+
raise 'invalid operation'
|
172
|
+
end
|
173
|
+
|
174
|
+
end
|
175
|
+
end
|
data/release.gemspec
CHANGED