Class: Subversion::ExternalsContainer

Inherits:
Object
  • Object
show all
Defined in:
lib/subwrap/subversion.rb

Overview

Represents an “externals container”, which is a directory that has the svn:externals property set to something useful. Each ExternalsContainer contains a set of “entries”, which are the actual directories listed in the svn:externals property and are “pulled into” the directory.

Defined Under Namespace

Classes: ExternalItem

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(external_dir) ⇒ ExternalsContainer

Returns a new instance of ExternalsContainer.



547
548
549
550
551
# File 'lib/subwrap/subversion.rb', line 547

def initialize(external_dir)
  @container_dir = File.expand_path(external_dir)
  @entries = Subversion.get_property("externals", @container_dir)
  #p @entries
end

Instance Attribute Details

#container_dirObject (readonly)

Returns the value of attribute container_dir.



544
545
546
# File 'lib/subwrap/subversion.rb', line 544

def container_dir
  @container_dir
end

#entriesObject (readonly)

Returns the value of attribute entries.



545
546
547
# File 'lib/subwrap/subversion.rb', line 545

def entries
  @entries
end

Instance Method Details

#==(other) ⇒ Object



580
581
582
# File 'lib/subwrap/subversion.rb', line 580

def ==(other)
  self.container_dir == other.container_dir
end

#entries_structsObject



557
558
559
560
561
562
# File 'lib/subwrap/subversion.rb', line 557

def entries_structs
  entries.chomp.to_enum(:each_line).map { |line|
    line =~ /^(\S+)\s*(\S+)/
    ExternalItem.new($1, $2)
  }
end

#has_entries?Boolean

Returns:

  • (Boolean)


553
554
555
# File 'lib/subwrap/subversion.rb', line 553

def has_entries?
  @entries.size > 0
end

#to_sObject



564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
# File 'lib/subwrap/subversion.rb', line 564

def to_s
  entries_structs = entries_structs()
  longest_item_name = 
    [
      entries_structs.map { |entry|
        entry.name.size
      }.max.to_i,
      25
    ].max
  
  container_dir.bold + "\n" +
    entries_structs.map { |entry|
      "  * " + entry.name.ljust(longest_item_name + 1) + entry.repository_path + "\n"
    }.join
end