step-up 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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