pvn 0.0.11 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. checksums.yaml +7 -0
  2. data/bin/pvn +1 -1
  3. data/lib/pvn/app/runner.rb +18 -17
  4. data/lib/pvn/command/clargs.rb +3 -1
  5. data/lib/pvn/command/color_option.rb +2 -2
  6. data/lib/pvn/command/command.rb +6 -5
  7. data/lib/pvn/command/doc.rb +43 -23
  8. data/lib/pvn/command/options.rb +4 -4
  9. data/lib/pvn/diff/change.rb +2 -5
  10. data/lib/pvn/diff/changed_paths.rb +7 -6
  11. data/lib/pvn/diff/command.rb +9 -5
  12. data/lib/pvn/diff/diffcmd.rb +52 -0
  13. data/lib/pvn/diff/differ.rb +2 -1
  14. data/lib/pvn/diff/diffset.rb +36 -0
  15. data/lib/pvn/diff/local_path.rb +13 -14
  16. data/lib/pvn/diff/log_path.rb +24 -34
  17. data/lib/pvn/diff/log_paths.rb +5 -3
  18. data/lib/pvn/diff/options.rb +1 -1
  19. data/lib/pvn/diff/path.rb +12 -48
  20. data/lib/pvn/diff/paths.rb +6 -3
  21. data/lib/pvn/diff/repository_differ.rb +4 -1
  22. data/lib/pvn/diff/status_paths.rb +7 -4
  23. data/lib/pvn/doc.rb +2 -4
  24. data/lib/pvn/io/element.rb +27 -85
  25. data/lib/pvn/io/fselement.rb +8 -2
  26. data/lib/pvn/log/command.rb +2 -2
  27. data/lib/pvn/log/entries.rb +13 -27
  28. data/lib/pvn/log/formatter/date_formatter.rb +16 -0
  29. data/lib/pvn/log/formatter/entry_formatter.rb +0 -12
  30. data/lib/pvn/log/formatter/message_formatter.rb +1 -1
  31. data/lib/pvn/log/formatter/summary_formatter.rb +8 -1
  32. data/lib/pvn/log/options.rb +4 -4
  33. data/lib/pvn/log/user_entries.rb +4 -5
  34. data/lib/pvn/pct/command.rb +9 -9
  35. data/lib/pvn/pct/differ.rb +2 -3
  36. data/lib/pvn/pct/local_differ.rb +4 -5
  37. data/lib/pvn/pct/repository_differ.rb +35 -24
  38. data/lib/pvn/revision/argument.rb +2 -1
  39. data/lib/pvn/revision/base_option.rb +5 -10
  40. data/lib/pvn/revision/range.rb +2 -1
  41. data/lib/pvn/seek/command.rb +9 -14
  42. data/lib/pvn/seek/match.rb +65 -0
  43. data/lib/pvn/seek/options.rb +3 -3
  44. data/lib/pvn/seek/path.rb +31 -115
  45. data/lib/pvn/seek/seeker.rb +88 -0
  46. data/lib/pvn/status/command.rb +2 -1
  47. data/lib/pvn/status/formatter/entries_formatter.rb +0 -1
  48. data/lib/pvn/util/color_formatter.rb +9 -3
  49. data/lib/pvn/util/textlines.rb +2 -2
  50. data/lib/pvn.rb +1 -1
  51. data/test/integration/pvn/diff/changed_paths_test.rb +3 -3
  52. data/test/integration/pvn/diff/local_differ_test.rb +0 -2
  53. data/test/integration/pvn/diff/log_paths_test.rb +13 -4
  54. data/test/integration/pvn/diff/repository_differ_test.rb +6 -0
  55. data/test/integration/pvn/diff/status_paths_test.rb +12 -7
  56. data/test/integration/pvn/log/command_test.rb +62 -5
  57. data/test/integration/pvn/pct/local_differ_test.rb +2 -5
  58. data/test/integration/pvn/pct/repository_differ_test.rb +4 -6
  59. data/test/integration/pvn/seek/command_test.rb +106 -0
  60. data/test/integration/pvn/status/command_test.rb +2 -6
  61. data/test/unit/pvn/app_test.rb +1 -1
  62. data/test/unit/pvn/diff/change_test.rb +0 -0
  63. data/test/unit/pvn/diff/path_test.rb +0 -0
  64. data/test/unit/pvn/io/element/log/log_test.rb +0 -0
  65. data/test/unit/pvn/log/formatter/entry_formatter_test.rb +9 -12
  66. data/test/unit/pvn/log/options_test.rb +0 -0
  67. data/test/unit/pvn/revision/argument_test.rb +0 -0
  68. data/test/unit/pvn/revision/multiple_revisions_option_test.rb +1 -1
  69. data/test/unit/pvn/revision/range_test.rb +0 -0
  70. data/test/unit/pvn/revision/revision_option_test.rb +0 -0
  71. data/test/unit/pvn/revision/revision_regexp_option_test.rb +0 -0
  72. metadata +156 -195
  73. data/README.markdown +0 -43
  74. data/bin/quote.rb +0 -218
  75. data/bin/quotes.orig.txt +0 -145
  76. data/bin/quotes.txt +0 -64
  77. data/lib/pvn/app.rb +0 -7
  78. data/lib/pvn/cmddoc.rb +0 -77
  79. data/lib/pvn/diff/name.rb +0 -23
  80. data/lib/svnx/action.rb +0 -47
  81. data/lib/svnx/cat/command.rb +0 -63
  82. data/lib/svnx/command.rb +0 -77
  83. data/lib/svnx/entries.rb +0 -67
  84. data/lib/svnx/entry.rb +0 -58
  85. data/lib/svnx/info/command.rb +0 -42
  86. data/lib/svnx/info/entries.rb +0 -19
  87. data/lib/svnx/info/entry.rb +0 -38
  88. data/lib/svnx/log/command.rb +0 -81
  89. data/lib/svnx/log/entries.rb +0 -18
  90. data/lib/svnx/log/entry.rb +0 -53
  91. data/lib/svnx/status/command.rb +0 -28
  92. data/lib/svnx/status/entries.rb +0 -17
  93. data/lib/svnx/status/entry.rb +0 -53
  94. data/lib/synoption/base_option.rb +0 -132
  95. data/lib/synoption/boolean_option.rb +0 -21
  96. data/lib/synoption/doc.rb +0 -81
  97. data/lib/synoption/exception.rb +0 -12
  98. data/lib/synoption/fixnum_option.rb +0 -13
  99. data/lib/synoption/match.rb +0 -47
  100. data/lib/synoption/matchers.rb +0 -22
  101. data/lib/synoption/option.rb +0 -10
  102. data/lib/synoption/optionable.rb +0 -66
  103. data/lib/synoption/set.rb +0 -145
  104. data/lib/system/command/arg.rb +0 -12
  105. data/lib/system/command/cachefile.rb +0 -53
  106. data/lib/system/command/caching.rb +0 -36
  107. data/lib/system/command/line.rb +0 -47
  108. data/test/integration/pvn/diff/command_test.rb +0 -20
  109. data/test/unit/svnx/action_test.rb +0 -38
  110. data/test/unit/svnx/info/entries_test.rb +0 -22
  111. data/test/unit/svnx/info/entry_test.rb +0 -22
  112. data/test/unit/svnx/log/cmargs_test.rb +0 -22
  113. data/test/unit/svnx/log/entries_test.rb +0 -90
  114. data/test/unit/svnx/log/entry_test.rb +0 -17
  115. data/test/unit/svnx/status/entries_test.rb +0 -21
  116. data/test/unit/svnx/status/entry_test.rb +0 -16
  117. data/test/unit/synoption/base_option_test.rb +0 -182
  118. data/test/unit/synoption/match_test.rb +0 -61
  119. data/test/unit/synoption/option_test.rb +0 -15
  120. data/test/unit/synoption/set_test.rb +0 -53
  121. data/test/unit/system/command/cachefile_test.rb +0 -53
  122. data/test/unit/system/command/caching_test.rb +0 -88
  123. data/test/unit/system/command/line_test.rb +0 -33
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8783d050b1dd5c8455f7207f9a1933b00ac080b3
4
+ data.tar.gz: 74df918bdd23b67089dddad91d5736162e72e49f
5
+ SHA512:
6
+ metadata.gz: a84f65d9a725d0f1d45127836d079f2e6bd7d359664f66f828f6c051ca6ed7092757cdfd5654a48eb96a5a0e90c65fdeae3f23bb488c73b83b0044678301457a
7
+ data.tar.gz: c3520d5756c9d08280cf979ec9fbafcda60ca4f366973a9132c10cff1da5a956d4de78a79a1ef37c56558c02a0a5672cc2d7800250ea53a8a1764534a13f2f5f
data/bin/pvn CHANGED
@@ -11,6 +11,6 @@ unless $:.include?(fdirname) || $:.include?(File.expand_path(fdirname))
11
11
  end
12
12
 
13
13
  require 'pvn'
14
- require "pvn/app"
14
+ require "pvn/app/runner"
15
15
 
16
16
  PVN::App::Runner.new STDOUT, ARGV
@@ -2,7 +2,8 @@
2
2
  # -*- ruby -*-
3
3
 
4
4
  require 'rubygems'
5
- require 'riel'
5
+ require 'logue/loggable'
6
+ require 'logue/log'
6
7
 
7
8
  require 'pvn'
8
9
  require 'pvn/io/element'
@@ -13,20 +14,11 @@ require 'pvn/status/command'
13
14
  require 'pvn/diff/command'
14
15
  require 'pvn/seek/command'
15
16
 
16
- # the old ones:
17
- # require 'pvn/diff/diffcmd'
18
- # require 'pvn/pct/pctcmd'
19
-
20
- # the new ones:
21
- # require 'pvn/describe'
22
- # require 'pvn/upp/uppcmd'
23
- # require 'pvn/wherecmd'
24
-
25
17
  module PVN; module App; end; end
26
18
 
27
19
  module PVN::App
28
20
  class Runner
29
- include Loggable
21
+ include Logue::Loggable
30
22
 
31
23
  SUBCOMMANDS = [ PVN::Log::Command,
32
24
  PVN::Pct::Command,
@@ -39,8 +31,8 @@ module PVN::App
39
31
  ]
40
32
 
41
33
  def initialize io, args
42
- RIEL::Log.level = RIEL::Log::WARN
43
- RIEL::Log.set_widths(-25, 5, -35)
34
+ Logue::Log.level = Logue::Log::WARN
35
+ Logue::Log.set_widths(-25, 5, -35)
44
36
 
45
37
  if args.empty?
46
38
  run_help args
@@ -51,8 +43,10 @@ module PVN::App
51
43
  info "arg: #{arg}"
52
44
 
53
45
  case arg
46
+ when "-v", "--version"
47
+ show_version
54
48
  when "--verbose"
55
- RIEL::Log.level = RIEL::Log::DEBUG
49
+ Logue::Log.level = Logue::Log::DEBUG
56
50
  when "help", "--help", "-h"
57
51
  run_help args
58
52
  else
@@ -70,10 +64,17 @@ module PVN::App
70
64
  run_help args
71
65
  end
72
66
 
67
+ def show_version
68
+ puts "pvn, version #{PVN::VERSION}"
69
+ puts "Written by Jeff Pace (jeugenepace@gmail.com)."
70
+ puts "Released under the I Haven't Decided Yet License."
71
+ exit 0
72
+ end
73
+
73
74
  def run_command cmdcls, args
74
75
  begin
75
76
  cmdcls.new args
76
- exit(0)
77
+ exit 0
77
78
  rescue => e
78
79
  puts e.backtrace
79
80
  $stderr.puts e
@@ -84,8 +85,8 @@ module PVN::App
84
85
  def run_help args
85
86
  forwhat = args[0]
86
87
 
87
- SUBCOMMANDS.each do |sc|
88
- puts sc
88
+ SUBCOMMANDS.each do |sc|
89
+ info "sc: #{sc}"
89
90
  if sc.matches_subcommand? forwhat
90
91
  sc.new(%w{ --help })
91
92
  exit 0
@@ -1,11 +1,13 @@
1
1
  #!/usr/bin/ruby -w
2
2
  # -*- ruby -*-
3
3
 
4
+ require 'logue/loggable'
5
+
4
6
  module PVN; module App; end; end
5
7
 
6
8
  module PVN::App::Base
7
9
  class CmdLineArgs
8
- include Loggable
10
+ include Logue::Loggable
9
11
 
10
12
  class << self
11
13
  def has_option name
@@ -4,9 +4,9 @@
4
4
  require 'synoption/boolean_option'
5
5
 
6
6
  module PVN::Command
7
- class ColorOption < PVN::BooleanOption
7
+ class ColorOption < Synoption::BooleanOption
8
8
  def initialize optargs = Hash.new
9
- super :color, '-f', "show colorized output", true, :negate => [ '-C', %r{^--no-?color} ], :as_cmdline_option => nil
9
+ super :color, nil, "show colorized output", true, :negate => [ '-C', %r{^--no-?color} ], :as_cmdline_option => nil
10
10
  end
11
11
  end
12
12
  end
@@ -2,12 +2,13 @@
2
2
  # -*- ruby -*-
3
3
 
4
4
  require 'pvn/command/doc'
5
+ require 'logue/loggable'
5
6
 
6
7
  module PVN; module Command; end; end
7
8
 
8
9
  module PVN::Command
9
10
  class Command
10
- include Loggable
11
+ include Logue::Loggable
11
12
 
12
13
  @@doc_for_class = Hash.new { |h, k| h[k] = PVN::Command::Documentation.new }
13
14
 
@@ -39,7 +40,7 @@ module PVN::Command
39
40
  def optset
40
41
  optmodule = to_s.sub %r{::\w+$}, ''
41
42
  optcls = optmodule + '::OptionSet'
42
- optset = instance_eval optcls + '.new'
43
+ instance_eval optcls + '.new'
43
44
  end
44
45
 
45
46
  def example *ex
@@ -51,13 +52,13 @@ module PVN::Command
51
52
  end
52
53
  end
53
54
 
54
- def to_doc io
55
+ def to_doc
55
56
  doc = self.class.getdoc
56
- doc.write io
57
+ doc.write
57
58
  end
58
59
 
59
60
  def show_help
60
- to_doc $stdout
61
+ to_doc
61
62
  end
62
63
 
63
64
  def initialize args
@@ -2,14 +2,16 @@
2
2
  # -*- ruby -*-
3
3
 
4
4
  require 'rubygems'
5
- require 'riel'
5
+ require 'rubygems/text'
6
6
 
7
7
  module PVN; module Command; end; end
8
8
 
9
- # this is the same as in pvn/cmddoc.rb
10
-
11
9
  module PVN::Command
12
10
  class Documentation
11
+ include Gem::Text
12
+
13
+ SUMMARY_RE = Regexp.new '^(?:(.*)(?:NOWRAP(.*)/NOWRAP)|(.*))(.*)$', Regexp::MULTILINE
14
+
13
15
  attr_accessor :description
14
16
  attr_accessor :usage
15
17
  attr_accessor :summary
@@ -40,9 +42,27 @@ module PVN::Command
40
42
  @subcommands = args
41
43
  end
42
44
 
43
- def write io = $stdout
44
- doc = Array.new
45
+ def wrap out, str
46
+ # I could use tput cols; ENV['COLUMNS'] works in irb, not in Ruby scripts.
47
+ out.puts format_text str.gsub("\n", ''), 78, 2
48
+ end
49
+
50
+ def write_summary out
51
+ summary.join("\n").scan(SUMMARY_RE) do |md|
52
+ if md[2]
53
+ wrap out, md[2]
54
+ next
55
+ end
45
56
 
57
+ wrap out, md[0]
58
+ out.puts md[1].collect { |x| " " + x }
59
+
60
+ out.puts
61
+ wrap out, md[3]
62
+ end
63
+ end
64
+
65
+ def write out = $io
46
66
  subcmds = @subcommands
47
67
 
48
68
  subcmdstr = subcmds[0].dup
@@ -50,45 +70,45 @@ module PVN::Command
50
70
  subcmdstr << " (" << subcmds[1 .. -1].join(" ") << ")"
51
71
  end
52
72
 
53
- io.puts subcmdstr + ": " + @description
54
- io.puts "usage: " + subcmds[0] + " " + @usage
55
- io.puts ""
56
- io.puts @summary.collect { |line| " " + line }
57
-
58
- write_section "options", @options, io do |opt, io|
73
+ out.puts subcmdstr + ": " + @description
74
+ out.puts "usage: " + subcmds[0] + " " + @usage
75
+ out.puts ""
76
+ write_summary out
77
+
78
+ write_section "options", @options, out do |opt, io|
59
79
  option_to_doc opt, io
60
80
  end
61
81
 
62
- write_section "examples", @examples, io do |ex, io|
82
+ write_section "examples", @examples, out do |ex, io|
63
83
  example_to_doc ex, io
64
84
  end
65
85
  end
66
86
 
67
- def write_section name, section, io
87
+ def write_section name, section, out
68
88
  if section.length > 0
69
- io.puts ""
70
- io.puts "#{name.capitalize}:"
71
- io.puts ""
89
+ out.puts ""
90
+ out.puts "#{name.capitalize}:"
91
+ out.puts ""
72
92
 
73
93
  section.each do |opt|
74
- yield opt, io
94
+ yield opt, out
75
95
  end
76
96
  end
77
97
  end
78
98
 
79
- def example_to_doc ex, io
99
+ def example_to_doc ex, out
80
100
  ex.each_with_index do |line, idx|
81
101
  if idx == 0
82
- io.puts " % #{line}"
102
+ out.puts " % #{line}"
83
103
  else
84
- io.puts " #{line}"
104
+ out.puts " #{line}"
85
105
  end
86
106
  end
87
- io.puts
107
+ out.puts
88
108
  end
89
109
 
90
- def option_to_doc opt, io
91
- opt.to_doc io
110
+ def option_to_doc opt, out
111
+ opt.to_doc out
92
112
  end
93
113
  end
94
114
  end
@@ -9,23 +9,23 @@ require 'synoption/fixnum_option'
9
9
  module PVN; module Command; end; end
10
10
 
11
11
  module PVN::Command
12
- class HelpOption < PVN::BooleanOption
12
+ class HelpOption < Synoption::BooleanOption
13
13
  def initialize args = Hash.new
14
14
  super :help, '-h', "display help", nil
15
15
  end
16
16
  end
17
17
 
18
- class VerboseOption < PVN::BooleanOption
18
+ class VerboseOption < Synoption::BooleanOption
19
19
  def initialize optargs = Hash.new
20
20
  super :verbose, '-v', [ "display verbose output" ], false
21
21
  end
22
22
 
23
23
  def set_value val
24
- RIEL::Log.level = RIEL::Log::DEBUG
24
+ Logue::Log.level = Logue::Log::DEBUG
25
25
  end
26
26
  end
27
27
 
28
- class OptionSet < PVN::OptionSet
28
+ class OptionSet < Synoption::OptionSet
29
29
  has_option :help, HelpOption
30
30
  has_option :verbose, VerboseOption
31
31
 
@@ -2,13 +2,14 @@
2
2
  # -*- ruby -*-
3
3
 
4
4
  require 'svnx/action'
5
+ require 'logue/loggable'
5
6
 
6
7
  module PVN; module Diff; end; end
7
8
 
8
9
  # A Path Revision is the change to a path within a changelist.
9
10
  module PVN::Diff
10
11
  class Change
11
- include Loggable
12
+ include Logue::Loggable
12
13
 
13
14
  attr_reader :revision
14
15
  attr_reader :action
@@ -23,9 +24,5 @@ module PVN::Diff
23
24
  # Revision::Range?
24
25
  rev.kind_of?(Fixnum) ? rev.to_s : rev
25
26
  end
26
-
27
- def to_s
28
- inspect
29
- end
30
27
  end
31
28
  end
@@ -5,22 +5,23 @@ require 'pvn/diff/log_paths'
5
5
  require 'pvn/diff/status_paths'
6
6
  require 'pvn/diff/local_path'
7
7
  require 'pvn/revision/range'
8
+ require 'logue/loggable'
8
9
 
9
10
  module PVN::Diff
10
11
  # represents both LogPaths and StatusPaths
11
12
  class ChangedPaths
12
- include Loggable
13
+ include Logue::Loggable
13
14
 
14
15
  def initialize paths
15
16
  @paths = paths
16
17
  end
17
18
 
18
19
  def diff_revision_to_working_copy revision, whitespace
19
- fromrev = revision.from.value
20
+ # fromrev = revision.from.value
20
21
 
21
- info "revision: #{revision}".cyan
22
+ info "revision: #{revision}".color(:cyan)
22
23
  rev = PVN::Revision::Range.new revision.to_s, 'HEAD'
23
- info "rev: #{rev}".cyan
24
+ info "rev: #{rev}".color(:cyan)
24
25
 
25
26
  logpaths = LogPaths.new rev, @paths
26
27
  name_to_logpath = logpaths.to_map
@@ -49,10 +50,10 @@ module PVN::Diff
49
50
  stpath = name_to_statuspath[name]
50
51
  info "stpath: #{stpath}"
51
52
 
52
- frrev = nil
53
+ # frrev = nil
53
54
 
54
55
  if logpath
55
- chgrevs = logpath.revisions_later_than fromrev
56
+ # chgrevs = logpath.revisions_later_than fromrev
56
57
  logpath.diff_revision_to_working_copy revision, whitespace
57
58
  else
58
59
  # it's a local file only
@@ -15,17 +15,21 @@ module PVN::Diff
15
15
  subcommands [ "diff" ]
16
16
  description "Shows the changes to files."
17
17
  usage "[OPTIONS] FILE..."
18
- summary [ "Compare two revisions, filtering through external programs.",
19
- "For each file compared, the file extension is used to find",
20
- "a diff program.",
21
- "As with other pvn subcommands, 'pvn log' accepts relative ",
18
+ # summary [ "Compare two revisions, filtering through external programs. ",
19
+ # "For each file compared, the file extension is used to find ",
20
+ # "a diff program. ",
21
+ # "As with other pvn subcommands, 'pvn diff' accepts relative ",
22
+ # "revisions."
23
+ # ]
24
+ summary [ "Compare two revisions. ",
25
+ "As with other pvn subcommands, 'pvn diff' accepts relative ",
22
26
  "revisions."
23
27
  ]
24
28
 
25
29
  optscls
26
30
 
27
31
  example "pvn diff foo.rb", "Compares foo.rb against the last updated version."
28
- example "pvn diff -3 StringExt.java", "Compares StringExt.java at change (HEAD - 3), using a Java-specific program such as DiffJ."
32
+ # example "pvn diff -3 StringExt.java", "Compares StringExt.java at change (HEAD - 3), using a Java-specific program such as DiffJ."
29
33
  example "pvn diff -r +4 -w", "Compares the 4th revision against the working copy, ignoring whitespace."
30
34
  example "pvn diff -c 1948", "Compares revision 1948 against 1947."
31
35
  example "pvn diff -c -8", "Compares revision (HEAD - 8) against (HEAD - 9)."
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- ruby -*-
3
+
4
+ require 'logue/loggable'
5
+
6
+ # the command-line diff program.
7
+ module PVN::Diff
8
+ class Cmd
9
+ include Logue::Loggable
10
+
11
+ def initialize displaypath, fromrev, torev, fromlines, tolines, whitespace
12
+ open_temp_file(fromlines) do |from|
13
+ open_temp_file(tolines) do |to|
14
+ cmd = "diff -u"
15
+ if whitespace
16
+ cmd << " -w"
17
+ end
18
+
19
+ [ fromrev, torev ].each do |rev|
20
+ revstr = to_revision_string rev
21
+ cmd << " -L '#{displaypath}\t(#{revstr})'"
22
+ end
23
+ cmd << " #{from.path}"
24
+ cmd << " #{to.path}"
25
+
26
+ info "cmd: #{cmd}"
27
+
28
+ $io.puts "Index: #{displaypath}"
29
+ $io.puts "==================================================================="
30
+ IO.popen(cmd) do |io|
31
+ $io.puts io.readlines
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ def open_temp_file lines, &blk
38
+ Tempfile.open('pvn') do |tmpfile|
39
+ if lines
40
+ tmpfile.puts lines
41
+ end
42
+ tmpfile.close
43
+
44
+ blk.call tmpfile
45
+ end
46
+ end
47
+
48
+ def to_revision_string rev
49
+ rev ? "revision #{rev}" : "working copy"
50
+ end
51
+ end
52
+ end
@@ -4,13 +4,14 @@
4
4
  require 'pvn/io/element'
5
5
  require 'pvn/diff/options'
6
6
  require 'pvn/command/command'
7
+ require 'logue/loggable'
7
8
  require 'tempfile'
8
9
 
9
10
  $io = $stdout
10
11
 
11
12
  module PVN::Diff
12
13
  class Differ
13
- include Loggable
14
+ include Logue::Loggable
14
15
 
15
16
  attr_reader :whitespace
16
17
  attr_reader :revision
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- ruby -*-
3
+
4
+ require 'logue/loggable'
5
+ require 'riel/pathname'
6
+ require 'pvn/diff/diffcmd'
7
+
8
+ module PVN::Diff
9
+ class DiffSet
10
+ include Logue::Loggable
11
+
12
+ attr_reader :display_path
13
+ attr_reader :from_lines
14
+ attr_reader :from_revision
15
+ attr_reader :to_lines
16
+ attr_reader :to_revision
17
+ attr_reader :whitespace
18
+
19
+ def initialize display_path, from_lines, from_revision, to_lines, to_revision, whitespace
20
+ @display_path = display_path
21
+ @from_lines = from_lines
22
+ @from_revision = from_revision
23
+ @to_lines = to_lines
24
+ @to_revision = to_revision
25
+ @whitespace = whitespace
26
+ end
27
+
28
+ def run_diff
29
+ info "display_path: #{@display_path}".color("fafa33")
30
+ ext = Pathname.new(@display_path).extname
31
+ info "ext: #{ext}".color("fafa11")
32
+
33
+ Cmd.new @display_path, @from_revision, @to_revision, @from_lines, @to_lines, @whitespace
34
+ end
35
+ end
36
+ end
@@ -9,7 +9,7 @@ module PVN::Diff
9
9
  # that's a Status::Entry
10
10
  def initialize entry
11
11
  @entry = entry
12
- @elmt = create_element
12
+ @elmt = PVN::IO::Element.new :local => @entry.path
13
13
  name = entry.path
14
14
  action = SVNx::Action.new @entry.status
15
15
  revision = action.added? ? 0 : @elmt.get_info.revision
@@ -37,33 +37,32 @@ module PVN::Diff
37
37
  pn.readlines
38
38
  end
39
39
 
40
- def create_element
41
- PVN::IO::Element.new :local => @entry.path
42
- end
43
-
44
40
  def get_latest_revision
45
41
  svninfo = @elmt.get_info
46
42
  svninfo.revision
47
43
  end
48
44
 
45
+ def get_remote_lines
46
+ # revision = nil; use_cache = false
47
+ @elmt.cat nil, false
48
+ end
49
+
50
+ def run_diff from_lines, from_rev, to_lines, to_rev, whitespace
51
+ super @entry.path, from_lines, from_rev, to_lines, to_rev, whitespace
52
+ end
53
+
49
54
  def show_as_added
50
- fromlines = nil
51
- tolines = read_working_copy
52
- run_diff @entry.path, fromlines, 0, tolines, 0, nil
55
+ run_diff nil, 0, read_working_copy, 0, nil
53
56
  end
54
57
 
55
58
  def show_as_deleted
56
59
  fromrev = changes[0].revision
57
- # revision = nil; use_cache = false
58
- lines = @elmt.cat nil, false
59
- run_diff @entry.path, lines, fromrev, nil, nil, nil
60
+ run_diff get_remote_lines, fromrev, nil, nil, nil
60
61
  end
61
62
 
62
63
  def show_as_modified whitespace
63
- remotelines = @elmt.cat nil, false
64
64
  fromrev = changes[0].revision
65
- wclines = read_working_copy
66
- run_diff @entry.path, remotelines, fromrev, wclines, nil, whitespace
65
+ run_diff get_remote_lines, fromrev, read_working_copy, nil, whitespace
67
66
  end
68
67
  end
69
68
  end