Class: YARD::CLI::Diff
Overview
CLI command to return the objects that were added/removed from 2 versions of a project (library, gem, working copy).
Instance Method Summary collapse
- #description ⇒ Object
-
#initialize ⇒ Diff
constructor
A new instance of Diff.
- #run(*args) ⇒ Object
Methods inherited from Command
#common_options, #load_script, #parse_options, run
Constructor Details
#initialize ⇒ Diff
Returns a new instance of Diff.
11 12 13 14 15 16 17 18 |
# File 'lib/yard/cli/diff.rb', line 11 def initialize super @list_all = false @use_git = false @old_git_commit = nil @old_path = Dir.pwd log.show_backtraces = true end |
Instance Method Details
#description ⇒ Object
20 21 22 |
# File 'lib/yard/cli/diff.rb', line 20 def description 'Returns the object diff of two gems or .yardoc files' end |
#run(*args) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/yard/cli/diff.rb', line 24 def run(*args) registry = optparse(*args).map do |gemfile| if @use_git load_git_commit(gemfile) Registry.all.map {|o| o.path } else if load_gem_data(gemfile) log.info "Found #{gemfile}" Registry.all.map {|o| o.path } else log.error "Cannot find gem #{gemfile}" nil end end end.compact return if registry.size != 2 [ ["Added objects", registry[1] - registry[0]], ["Removed objects", registry[0] - registry[1]]].each do |name, objects| next if objects.empty? last_object = nil all_objects_notice = false puts name + ":" objects.sort.each do |object| if !@list_all && last_object && object =~ /#{Regexp.quote last_object}(::|\.|#)/ print " (...)" unless all_objects_notice all_objects_notice = true next else puts end all_objects_notice = false print " " + object last_object = object end puts puts end end |