Module: Subversion::Extensions

Included in:
Subversion
Defined in:
lib/svn-command/subversion_extensions.rb

Constant Summary collapse

Interesting_status_flags =
["M", "A", "D", "?"]
Uninteresting_status_flags =
["X", "W"]
Status_flags =
Interesting_status_flags | Uninteresting_status_flags

Class Method Summary collapse

Class Method Details

.diff(*args) ⇒ Object

This is just a wrapper for Subversion::diff that adds some color



130
131
132
# File 'lib/svn-command/subversion_extensions.rb', line 130

def self.diff(*args)
  Subversion::diff(*args).colorize_svn_diff.add_exit_code_error
end

.each_unadded(input) ⇒ Object



123
124
125
126
127
# File 'lib/svn-command/subversion_extensions.rb', line 123

def self.each_unadded(input)
  unadded_filter(input).each { |line|
    yield line
  }
end

.printable_revision_properties(rev) ⇒ Object

A wrapper for Subversion::revision_properties that formats it for display on srceen



135
136
137
138
139
# File 'lib/svn-command/subversion_extensions.rb', line 135

def self.printable_revision_properties(rev)
  Subversion::revision_properties(rev).map do |property|
    "#{property.name.ljust(20)} = '#{property.value}'"
  end.join("\n")
end

.status_lines_filter(input) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/svn-command/subversion_extensions.rb', line 73

def self.status_lines_filter(input)
  input = (input || "").reject { |line|
    line =~ /^$/    # Blank lines
  }.reject { |line|
    line =~ /^#{Uninteresting_status_flags.to_regexp_char_class}/
  }.join

  before_externals, *externals = input.split(/^Performing status on external item at.*$/)

  before_externals ||= ''
  before_externals = before_externals.strip.colorize_svn_status_lines + "\n" if before_externals != ""

  externals = externals.join.strip
  externals = 
    '_'*40 + ' externals '.underline + '_'*40 + "\n" +
    externals.reject { |line|
      line =~ /^Performing status on external item at/
    }.reject { |line|
      line =~ /^$/    # Blank lines
    }.join.strip.colorize_svn_status_lines + "\n" if externals != ""
    
  before_externals +
         externals
end

.unadded_filter(input) ⇒ Object



115
116
117
118
119
120
121
# File 'lib/svn-command/subversion_extensions.rb', line 115

def self.unadded_filter(input)
  unadded_lines_filter(input).map { |line|
    # Just keep the filename part
    line =~ /^\?\s+(.+)/
    $1
  }
end

.unadded_lines_filter(input) ⇒ Object



110
111
112
113
114
# File 'lib/svn-command/subversion_extensions.rb', line 110

def self.unadded_lines_filter(input)
  input.select { |line|
    line =~ /^\?/
  }.join
end

.update_lines_filter(input) ⇒ Object



98
99
100
101
102
103
104
105
106
107
108
# File 'lib/svn-command/subversion_extensions.rb', line 98

def self.update_lines_filter(input)
  input.reject { |line|
    line =~ /^$/    # Blank lines
  }.reject { |line|
    line =~ /^Fetching external item into/
    # Eventually we may want it to include this whole block, but only iff there is something updated for this external.
  }.reject { |line|
    line =~ /^External at revision/
  }.join.colorize_svn_update_lines
  # Also get rid of all but one "At revision _."?
end