Class: Subversion::ExternalsContainer

Inherits:
Object
  • Object
show all
Defined in:
lib/svn-command/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.



496
497
498
499
500
# File 'lib/svn-command/subversion.rb', line 496

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.



493
494
495
# File 'lib/svn-command/subversion.rb', line 493

def container_dir
  @container_dir
end

#entriesObject (readonly)

Returns the value of attribute entries.



494
495
496
# File 'lib/svn-command/subversion.rb', line 494

def entries
  @entries
end

Instance Method Details

#==(other) ⇒ Object



529
530
531
# File 'lib/svn-command/subversion.rb', line 529

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

#entries_structsObject



506
507
508
509
510
511
# File 'lib/svn-command/subversion.rb', line 506

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

#has_entries?Boolean

Returns:

  • (Boolean)


502
503
504
# File 'lib/svn-command/subversion.rb', line 502

def has_entries?
  @entries.size > 0
end

#to_sObject



513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
# File 'lib/svn-command/subversion.rb', line 513

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