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.



530
531
532
533
534
# File 'lib/subwrap/subversion.rb', line 530

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.



527
528
529
# File 'lib/subwrap/subversion.rb', line 527

def container_dir
  @container_dir
end

#entriesObject (readonly)

Returns the value of attribute entries.



528
529
530
# File 'lib/subwrap/subversion.rb', line 528

def entries
  @entries
end

Instance Method Details

#==(other) ⇒ Object



563
564
565
# File 'lib/subwrap/subversion.rb', line 563

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

#entries_structsObject



540
541
542
543
544
545
# File 'lib/subwrap/subversion.rb', line 540

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

#has_entries?Boolean

Returns:

  • (Boolean)


536
537
538
# File 'lib/subwrap/subversion.rb', line 536

def has_entries?
  @entries.size > 0
end

#to_sObject



547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
# File 'lib/subwrap/subversion.rb', line 547

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