step-up 0.3.1 → 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/.stepuprc CHANGED
@@ -23,6 +23,15 @@ notes:
23
23
  tag: "deploy_step"
24
24
  versioning:
25
25
  version_mask: "v0.0.0.9"
26
+ auto_increment:
27
+ sections_level:
28
+ minor:
29
+ - features
30
+ - deploy_steps
31
+ patch:
32
+ - bugfixes
33
+ tiny:
34
+ - changes
26
35
  version_levels:
27
36
  - major
28
37
  - minor
data/README.md CHANGED
@@ -1,10 +1,11 @@
1
- # StepUp: a project to 'step up' your projects
2
- StepUp is a tool to manage versioning based on source control management features (i.e. tags and notes of Git). That is, you don't need to keep track of your application version in a file anymore !!!
1
+ # StepUp: a project to step up your projects
2
+ StepUp is a tool to manage versioning based on source control management features (i.e. tags and notes of Git).
3
3
 
4
4
  ## Prerequisite
5
- This is temporary but for now StepUp just works with Git version 1.7.1 and above.
5
+ Git version 1.7.1 and above.
6
6
 
7
7
  ## Installation
8
+
8
9
  gem install step-up
9
10
 
10
11
  ## First of all
@@ -12,44 +13,69 @@ Have in mind that StepUp has only Git support for now (more to come soon!!), so
12
13
  With that said, run
13
14
 
14
15
  stepup init
15
- This will prepare your repository to use one of the coolest feature of StepUp called ***notes***
16
- Besides that it will create a file in your project called **.stepuprc**
16
+
17
+ It will create a file in your project called **.stepuprc**
17
18
  We'll cover more about this in the next sections.
18
19
 
19
20
  ## The Basics
20
- ### Check out the version
21
- stepup version
22
- This will tell you the application version based on Git tag.
23
- Currently the result of this command on StepUp project itself will be
21
+ ### Checking out the current version
22
+
23
+ stepup version
24
+
25
+ or just
26
+
27
+ stepup
28
+
29
+ This will tell you the current application version.
30
+
31
+ One example of output would be
24
32
 
25
33
  v0.2.0+1
34
+
26
35
  The "+1" part means the project has one commit since last version.
27
- The format of the version is totally customizable through **.stepuprc** which we will cover in the next sections.
36
+ The format of the version is totally customizable through **.stepuprc** which we will cover in more detail later.
37
+
38
+ ### Creating new version
28
39
 
29
- ### Create new version
30
40
  stepup version create --level LEVEL_NAME
31
- where **LEVEL_NAME** can be
41
+
42
+ where **LEVEL_NAME**
32
43
 
33
44
  * major
34
45
  * minor
35
- * tiny
36
46
  * patch
37
- * rc
47
+ * tiny
48
+
49
+ This command will ask user to input a message for the version and will increment the version number accordingly.
50
+
51
+ Each level corresponds to a position in the version mask.
52
+ Considering default settings of .stepuprc, this means:
53
+
54
+ v0.0.0.0 => vMAJOR.MINOR.PATCH.TINY
38
55
 
39
- This command will ask user for a message for the version and will increment the version number accordingly
56
+ The versioning increment is based on the last version tag found in the repository, and works as follows:
40
57
 
41
- ### Check out the history
42
- stepup changelog --top N
43
- where **N** is the number of versions that will be displayed from newer to older ones
58
+ v0.5.3.2 => v0.5.3.3 (TINY increment)
59
+ v0.5.3.2 => v0.5.4 (PATCH increment)
60
+ v0.5.3.2 => v0.6.0 (MINOR increment)
61
+ v0.5.3.2 => v1.0.0 (MAJOR increment)
62
+
63
+ ### Checking out the changelog
64
+
65
+ stepup changelog
44
66
 
45
67
  ## StepUp beyond basics
46
68
  ***Comming soon***
47
69
 
48
- ## Report bugs and suggestions
70
+ ## Project
71
+ * https://github.com/kawamanza/step-up
49
72
 
50
- * [Issue Tracker](https://github.com/kawamanza/step-up/issues)
73
+ ## Report bugs and suggestions
74
+ * [Issue Tracker](https://github.com/kawamanza/step-up/issues)
51
75
 
52
76
  ## Authors
53
-
54
77
  * [Eric Fer](https://github.com/ericfer)
55
- * [Marcelo Manzan](https://github.com/kawamanza)
78
+ * [Marcelo Manzan](https://github.com/kawamanza)
79
+
80
+ ## Collaborators
81
+ * [Lucas Fais](https://github.com/lucasfais)
data/Rakefile CHANGED
@@ -21,19 +21,21 @@ end
21
21
 
22
22
  desc "Build the gem"
23
23
  task :build do
24
+ gem_name = 'step-up'
24
25
  opers = Dir.glob('*.gem')
25
26
  opers = ["rm #{ opers.join(' ') }"] unless opers.empty?
26
- opers << ["gem build step-up.gemspec"]
27
+ opers << ["gem build #{gem_name}.gemspec"]
27
28
  sh opers.join(" && ")
28
29
  end
29
30
 
30
31
  desc "Build and install the gem, removing old installation"
31
32
  task :install => :build do
32
33
  gem = Dir.glob('*.gem').first
34
+ gem_name = 'step-up'
33
35
  if gem.nil?
34
36
  puts "could not install the gem"
35
37
  else
36
- sh "gem uninstall --ignore-dependencies --executables step-up; gem install #{ gem }"
38
+ sh "gem uninstall --ignore-dependencies --executables #{gem_name}; gem install #{ gem }"
37
39
  end
38
40
  end
39
41
 
data/bin/stepup CHANGED
@@ -4,6 +4,9 @@ require 'step-up/cli'
4
4
 
5
5
  begin
6
6
  StepUp::CLI.start
7
+ rescue SystemExit => e
8
+ raise e
7
9
  rescue Exception => e
8
- puts e.message
10
+ puts "StepUp Exception: #{e.message}"
11
+ exit 1
9
12
  end
data/lib/step-up/cli.rb CHANGED
@@ -3,18 +3,23 @@ require 'step-up'
3
3
 
4
4
  module StepUp
5
5
  class CLI < Thor
6
+ attr_reader :commit_object
6
7
  include Thor::Actions
7
8
  map %w(--version -v) => :gem_version # $ stepup [--version|-v]
8
9
 
9
10
  default_task :version
10
11
 
11
- desc "version ACTION [OPTIONS]", "manage versions of your project"
12
+ desc "version ACTION [base_object] [OPTIONS]", "manage versions of your project"
12
13
  method_options %w(levels -L) => :boolean # $ stepup version [--levels|-L]
13
14
  method_options %w(level -l) => :string, %w(steps -s) => :boolean, %w(message -m) => :string, :'no-editor' => :boolean # $ stepup version create [--level|-l <level-name>] [--steps|-s] [--message|-m <comment-string>] [--no-editor]
14
15
  method_options %w(mask -M) => :string # stepup version show --mask development_hudson_build_0
15
16
  VERSION_ACTIONS = %w[show create help]
16
- def version(action = nil)
17
- action = "show" unless VERSION_ACTIONS.include?(action)
17
+ def version(action = nil, commit_base = nil)
18
+ unless VERSION_ACTIONS.include?(action)
19
+ commit_base ||= action
20
+ action = "show"
21
+ end
22
+ @commit_object = commit_base
18
23
  if self.respond_to?("version_#{action}")
19
24
  send("version_#{action}")
20
25
  else
@@ -144,15 +149,17 @@ module StepUp
144
149
  puts log.join("\n\n")
145
150
  end
146
151
 
147
- desc "notes ACTION [object] [OPTIONS]", "show notes for the next version"
152
+ desc "notes ACTION [base_object] [OPTIONS]", "show notes for the next version"
148
153
  method_options :clean => :boolean, :steps => :boolean, :"-m" => :string, :since => :string
154
+ method_options :fetch => :boolean
149
155
  def notes(action = "show", commit_base = nil)
150
156
  unless %w[show add remove help].include?(action)
151
157
  commit_base ||= action
152
158
  action = "show"
153
159
  end
160
+ @commit_object = commit_base
154
161
  if self.respond_to?("notes_#{action}")
155
- check_notes_config && send("notes_#{action}", commit_base)
162
+ check_notes_config && send("notes_#{action}")
156
163
  else
157
164
  puts "invalid action: #{action}"
158
165
  end
@@ -188,21 +195,24 @@ module StepUp
188
195
  created_at = tag_info[:date].strftime("%b/%d %Y %H:%M %z")
189
196
  log = []
190
197
  log << "== #{tag} (#{created_at} by #{tag_info[:tagger]}) ==\n"
191
- log << tag_info[:message].gsub(/^(\s+)-/, '\1*')
198
+ log << tag_info[:message].gsub(/^(?:\t\t|\s\s\s\s)-\s/, "** ").gsub(/^(?:\t|\s\s)-\s/, "* ")
192
199
  log.join("\n")
193
200
  end
194
201
 
195
- def notes_show(commit_base = nil)
202
+ def notes_show
196
203
  message = []
197
- message << "Showing notes since #{ options[:since] }#{ " (including notes of tags: #{ ranged_notes.scoped_tags.join(", ")})" if ranged_notes.scoped_tags.any? }" unless options[:since].nil?
204
+ unless options[:since].nil?
205
+ message_header = "Showing notes since #{ options[:since] }"
206
+ message_header << " (including notes of tags: #{ ranged_notes.scoped_tags.join(", ")})" if ranged_notes.scoped_tags.any?
207
+ message << message_header
208
+ end
198
209
  message << "---"
199
210
  message << get_notes
200
211
  puts message.join("\n")
201
212
  end
202
213
 
203
- def notes_remove(commit_base)
204
- commit_base = "HEAD" if commit_base.nil?
205
- ranged_notes = StepUp::RangedNotes.new(driver, nil, commit_base)
214
+ def notes_remove
215
+ ranged_notes = StepUp::RangedNotes.new(driver, nil, commit_object || "HEAD")
206
216
  notes = ranged_notes.notes_of(ranged_notes.last_commit).as_hash
207
217
  sections = notes.keys
208
218
  if sections.empty?
@@ -219,14 +229,14 @@ module StepUp
219
229
  end
220
230
  end
221
231
 
222
- def notes_add(commit_base = nil)
232
+ def notes_add
223
233
  message = options[:m]
224
234
  message = nil if options[:m] =~ /^(|m)$/
225
235
  message ||= get_message("Note message:\n>>", " >")
226
236
  unless message.empty?
227
237
  section = choose(CONFIG.notes_sections.names, "Choose a section to add the note:")
228
238
  return if section.nil? || ! CONFIG.notes_sections.names.include?(section)
229
- steps = driver.steps_for_add_notes(section, message, commit_base)
239
+ steps = driver.steps_for_add_notes(section, message, commit_object)
230
240
  print_or_run(steps, options[:steps])
231
241
  end
232
242
  end
@@ -240,25 +250,36 @@ module StepUp
240
250
  else
241
251
  mask = options[:mask]
242
252
  mask = nil if mask !~ /0/
243
- puts driver(mask).last_version_tag("HEAD", true)
253
+ puts driver(mask).last_version_tag(commit_object || "HEAD", true)
244
254
  end
245
255
  end
246
256
 
247
257
  def version_create
248
- level = options[:level] || version_levels.last
258
+ level = options[:level] || "auto"
249
259
  message = get_notes(true, get_custom_message)
250
260
  message = edit_message(driver.class::VERSION_MESSAGE_FILE_PATH, message) unless options[:'no-editor']
251
261
 
252
262
  if message.strip.empty?
253
263
  puts "\ninvalid version message: too short"
254
- return
264
+ exit(1)
265
+ end
266
+
267
+ if level == "auto" && CONFIG.versioning["auto_increment"].is_a?(Hash)
268
+ detached_notes = driver.cached_detached_notes_as_hash(commit_object || "HEAD")
269
+ level = version_levels.last
270
+ version_levels.reverse.each do |name|
271
+ sections = CONFIG.versioning.auto_increment.sections_level[name]
272
+ next if sections.nil?
273
+ level = name if detached_notes.any?{ |section, notes| sections.include?(section) && notes.any? }
274
+ end
255
275
  end
256
276
 
257
277
  if version_levels.include? level
258
- steps = driver.steps_to_increase_version(level, "HEAD", message)
278
+ steps = driver.steps_to_increase_version(level, commit_object || "HEAD", message)
259
279
  print_or_run(steps, options[:steps])
260
280
  else
261
281
  puts "invalid version create option: #{level}"
282
+ exit(1)
262
283
  end
263
284
  end
264
285
 
@@ -284,23 +305,23 @@ module StepUp
284
305
 
285
306
  def ranged_notes
286
307
  unless defined? @ranged_notes
287
- tag = options[:since] || driver.last_version_tag
288
- if tag =~ /[1-9]/
289
- tag = tag.gsub(/\+\d*$/, '')
308
+ initial_tag = options[:since] || driver.cached_last_version_tag(commit_object || "HEAD")
309
+ if initial_tag =~ /[1-9]/
310
+ initial_tag = initial_tag.gsub(/\+\d*$/, '')
290
311
  else
291
- tag = nil
312
+ initial_tag = nil
292
313
  end
293
- @ranged_notes = StepUp::RangedNotes.new(driver, tag, "HEAD")
314
+ @ranged_notes = StepUp::RangedNotes.new(driver, initial_tag, commit_object || "HEAD")
294
315
  end
295
316
  @ranged_notes
296
317
  end
297
318
 
298
319
  def get_notes(clean = options[:clean], custom_message = nil)
299
- changelog_options = {}
300
- changelog_options[:mode] = :with_objects unless clean
301
- changelog_options[:custom_message] = custom_message
302
- notes = (options[:since].nil? ? ranged_notes.notes : ranged_notes.all_notes)
303
- notes.as_hash.to_changelog(changelog_options)
320
+ notes_options = {}
321
+ notes_options[:mode] = :with_objects unless clean
322
+ notes_options[:custom_message] = custom_message
323
+ notes_hash = (options[:since].nil? ? driver.cached_detached_notes_as_hash(commit_object || "HEAD") : ranged_notes.all_notes.as_hash)
324
+ notes_hash.to_changelog(notes_options)
304
325
  end
305
326
 
306
327
  def choose(list, statement)
@@ -337,7 +358,7 @@ module StepUp
337
358
  end
338
359
 
339
360
  def version_levels
340
- CONFIG["versioning"]["version_levels"]
361
+ CONFIG.versioning.version_levels
341
362
  end
342
363
 
343
364
  def print_or_run(steps, print)
@@ -361,8 +382,9 @@ module StepUp
361
382
  def check_notes_config
362
383
  remotes_with_notes = driver.fetched_remotes('notes')
363
384
  unfetched_remotes = driver.fetched_remotes - remotes_with_notes
385
+ cmds = []
364
386
  unless remotes_with_notes.any? || unfetched_remotes.empty?
365
- answer = raw_ask("To perform this operation you need some additional fetch instruction on your git-config file.\nMay stepup add the missing instruction for you? [yes/no]:")
387
+ answer = options[:fetch] ? "yes" : raw_ask("To perform this operation you need some additional fetch instruction on your git-config file.\nMay stepup add the missing instruction for you? [yes/no]:")
366
388
  return false unless answer == "yes"
367
389
  if unfetched_remotes.size > 1
368
390
  remote = choose(unfetched_remotes, "Which remote would you like to fetch notes?")
@@ -370,9 +392,10 @@ module StepUp
370
392
  else
371
393
  remote = unfetched_remotes.first
372
394
  end
373
- cmds = ["git config --add remote.#{remote}.fetch +refs/notes/*:refs/notes/*", "git fetch #{remote}"]
374
- print_or_run(cmds, false)
395
+ cmds << "git config --add remote.#{remote}.fetch +refs/notes/*:refs/notes/*" unless remote.nil?
375
396
  end
397
+ cmds << "git fetch #{remote}" if options[:fetch] || cmds.any?
398
+ print_or_run(cmds, false) unless cmds.empty?
376
399
  true
377
400
  end
378
401
 
@@ -1,7 +1,6 @@
1
1
  notes:
2
2
  after_versioned:
3
- #strategy: "remove"
4
- strategy: "keep"
3
+ strategy: "keep" # Valid options: "keep" or "remove"
5
4
  section: "versioning"
6
5
  changelog_message: "available on {version}"
7
6
  sections:
@@ -23,6 +22,15 @@ notes:
23
22
  tag: "deploy_step"
24
23
  versioning:
25
24
  version_mask: "v0.0.0.9"
25
+ auto_increment:
26
+ sections_level:
27
+ minor:
28
+ - features
29
+ - deploy_steps
30
+ patch:
31
+ - bugfixes
32
+ tiny:
33
+ - changes
26
34
  version_levels:
27
35
  - major
28
36
  - minor
@@ -1,13 +1,9 @@
1
1
  module StepUp
2
2
  module Driver
3
- class Git
3
+ class Git < Base
4
4
  VERSION_MESSAGE_FILE_PATH = ".git/TAG_EDITMSG"
5
5
 
6
6
  include GitExtensions::Notes
7
- attr_reader :mask
8
- def initialize(mask = nil)
9
- @mask = Parser::VersionMask.new(mask || CONFIG.versioning.version_mask)
10
- end
11
7
 
12
8
  def self.last_version
13
9
  new.last_version_tag
@@ -52,20 +48,27 @@ module StepUp
52
48
 
53
49
  def version_tag_info(tag)
54
50
  full_message = `git show #{ tag }`
55
- tag_message = full_message[/\A.*?\n\n(.*)\n\ncommit\s\w{40}\n/m, 1]
51
+ tag_pattern = tag.gsub(/\./, '\\.')
52
+ tag_message = full_message[/^tag\s#{tag_pattern}.*?\n\n(.*?)\n\n(?:tag\s[^\s]+|commit\s\w{40})\n/m, 1] || ""
56
53
  tagger = full_message[/\A.*?\nTagger:\s(.*?)\s</m, 1]
57
54
  date = Time.parse(full_message[/\A.*?\nDate:\s+(.*?)\n/m, 1])
58
55
  {:message => tag_message, :tagger => tagger, :date => date}
59
56
  end
60
57
 
58
+ def detached_notes_as_hash(commit_base = "HEAD")
59
+ tag = cached_last_version_tag(commit_base)
60
+ tag = tag.sub(/\+$/, '')
61
+ RangedNotes.new(self, tag, commit_base).notes.as_hash
62
+ end
63
+
61
64
  def steps_to_increase_version(level, commit_base = "HEAD", message = nil)
62
- tag = last_version_tag(commit_base)
65
+ tag = cached_last_version_tag(commit_base)
63
66
  tag = tag.sub(/\+$/, '')
64
67
  new_tag = mask.increase_version(tag, level)
65
- notes = RangedNotes.new(self, tag, commit_base).notes.as_hash
68
+ notes = cached_detached_notes_as_hash(commit_base)
66
69
  commands = []
67
70
  commands << "git fetch"
68
- commands << "git tag -a -m \"#{ (message || notes.to_changelog).gsub(/([\$\\"])/, '\\\\\1') }\" #{ new_tag }"
71
+ commands << "git tag -a -m \"#{ (message || notes.to_changelog).gsub(/([\$\\"])/, '\\\\\1') }\" #{ new_tag } #{ commit_base }"
69
72
  commands << "git push --tags"
70
73
  commands + steps_for_archiving_notes(notes, new_tag)
71
74
  end
@@ -73,7 +76,7 @@ module StepUp
73
76
  def last_version_tag(commit_base = "HEAD", count_commits = false)
74
77
  all_versions = all_version_tags
75
78
  unless all_versions.empty?
76
- commits = commit_history(commit_base)
79
+ commits = cached_commit_history(commit_base)
77
80
  all_versions.each do |tag|
78
81
  commit_under_the_tag = commit_history(tag, 1).first
79
82
  index = commits.index(commit_under_the_tag)
@@ -0,0 +1,31 @@
1
+ module StepUp
2
+ module Driver
3
+ autoload :Git, 'step-up/driver/git.rb'
4
+ class Base
5
+ attr_reader :mask
6
+ attr_reader :cache
7
+ def initialize(mask = nil)
8
+ @mask = Parser::VersionMask.new(mask || CONFIG.versioning.version_mask)
9
+ @cache = {}
10
+ end
11
+
12
+ def method_missing(called_method, *args, &block)
13
+ if called_method.to_s =~ /^cached_(.+)$/
14
+ method = $1
15
+ if respond_to?(method)
16
+ if block_given?
17
+ send(method, *args, &block)
18
+ else
19
+ cache[method] ||= {}
20
+ cache[method][args] ||= send(method, *args)
21
+ end
22
+ else
23
+ super
24
+ end
25
+ else
26
+ super
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -18,7 +18,7 @@ module StepUp
18
18
  end
19
19
 
20
20
  def all_notes
21
- (visible_detached_notes + scoped_attached_notes + scoped_commit_notes).sort.reverse.extend NotesArray
21
+ (visible_detached_notes + scoped_commit_notes + scoped_attached_notes).sort.reverse.extend NotesArray
22
22
  end
23
23
 
24
24
  def notes_of(commit)
@@ -37,9 +37,16 @@ module StepUp
37
37
  unless defined? @scoped_tags
38
38
  tags = []
39
39
  commits = scoped_commits.collect(&:first)
40
- driver.all_version_tags.each do |version_tag|
41
- object = driver.commit_history(version_tag, 1).first
42
- tags << version_tag if commits.include?(object)
40
+ all_version_tags = driver.all_version_tags
41
+ unless all_version_tags.empty?
42
+ all_version_tags.each do |version_tag|
43
+ object = driver.commit_history(version_tag, 1).first
44
+ tags << version_tag if commits.include?(object)
45
+ end
46
+ unless tags.empty?
47
+ last_tag_version = all_version_tags[(all_version_tags.index(tags.last).next)]
48
+ tags << last_tag_version if last_tag_version
49
+ end
43
50
  end
44
51
  @scoped_tags = tags
45
52
  end
@@ -1,6 +1,6 @@
1
1
  module StepUp
2
2
  version = nil
3
- version = $1 if ::File.expand_path('../..', __FILE__) =~ /\/step-up-([\w\.\-]+)/
3
+ version = $1 if ::File.expand_path('../..', __FILE__) =~ /\/step-up-(\d[\w\.]+)/
4
4
  version = Driver::Git.new.last_version_tag if version.nil? && ::File.exists?(::File.expand_path('../../../.git', __FILE__))
5
5
  VERSION = version.gsub(/^v?([^\+]+)\+?\d*$/, '\1')
6
6
  end
data/lib/step-up.rb CHANGED
@@ -1,9 +1,7 @@
1
1
  module StepUp
2
2
  autoload :CONFIG, 'step-up/config.rb'
3
3
  autoload :VERSION, 'step-up/version.rb'
4
- module Driver
5
- autoload :Git, 'step-up/driver/git.rb'
6
- end
4
+ autoload :Driver, 'step-up/driver.rb'
7
5
  autoload :GitExtensions, 'step-up/git_extensions.rb'
8
6
  autoload :RangedNotes, 'step-up/ranged_notes.rb'
9
7
  module Parser
@@ -3,7 +3,7 @@ require 'time'
3
3
 
4
4
  describe StepUp::Driver::Git do
5
5
  before do
6
- @driver = StepUp::Driver::Git.new
6
+ @driver = StepUp::Driver::Git.new("v0.0.0.9.rc9")
7
7
  end
8
8
 
9
9
 
@@ -115,7 +115,7 @@ describe StepUp::Driver::Git do
115
115
 
116
116
  Test bugfixes:
117
117
 
118
- - sorting tags according to the mask parser" v0.1.0
118
+ - sorting tags according to the mask parser" v0.1.0 f4cfcc2
119
119
 
120
120
  git push --tags
121
121
 
@@ -154,7 +154,7 @@ describe StepUp::Driver::Git do
154
154
 
155
155
  Test bugfixes:
156
156
 
157
- - sorting tags according to the mask parser" v0.1.0
157
+ - sorting tags according to the mask parser" v0.1.0 f4cfcc2
158
158
 
159
159
  git push --tags
160
160
 
metadata CHANGED
@@ -1,22 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: step-up
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 15
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 3
9
- - 1
10
- version: 0.3.1
8
+ - 4
9
+ - 0
10
+ version: 0.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Marcelo Manzan
14
- - Eric Adrien Fer
14
+ - Eric Fer
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-02-10 00:00:00 -02:00
19
+ date: 2011-03-23 00:00:00 -03:00
20
20
  default_executable: stepup
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -82,6 +82,7 @@ files:
82
82
  - lib/step-up/cli.rb
83
83
  - lib/step-up/config.rb
84
84
  - lib/step-up/config/step-up.yml
85
+ - lib/step-up/driver.rb
85
86
  - lib/step-up/driver/git.rb
86
87
  - lib/step-up/git_extensions.rb
87
88
  - lib/step-up/parser/version_mask.rb