pvn 0.0.4 → 0.0.5

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 (36) hide show
  1. data/README.markdown +5 -1
  2. data/lib/pvn/app.rb +3 -0
  3. data/lib/pvn/{log/formatter → base}/color_formatter.rb +0 -0
  4. data/lib/pvn/io/element.rb +36 -29
  5. data/lib/pvn/log/formatter/log_formatter.rb +1 -10
  6. data/lib/pvn/log/formatter/summary_formatter.rb +0 -2
  7. data/lib/pvn/log/logcmd.rb +0 -1
  8. data/lib/pvn/revision/entry.rb +7 -2
  9. data/lib/pvn/status/formatter/entries_formatter.rb +27 -0
  10. data/lib/pvn/status/formatter/entry_formatter.rb +27 -0
  11. data/lib/pvn/status/formatter/status_formatter.rb +31 -0
  12. data/lib/pvn/subcommands/base/color_option.rb +12 -0
  13. data/lib/pvn/subcommands/base/command.rb +21 -2
  14. data/lib/pvn/subcommands/base/options.rb +1 -0
  15. data/lib/pvn/subcommands/log/command.rb +26 -30
  16. data/lib/pvn/subcommands/log/options.rb +2 -7
  17. data/lib/pvn/subcommands/pct/command.rb +71 -91
  18. data/lib/pvn/subcommands/pct/diffcount.rb +26 -0
  19. data/lib/pvn/subcommands/revision/revision_option.rb +7 -5
  20. data/lib/pvn/subcommands/status/command.rb +42 -0
  21. data/lib/pvn/subcommands/status/options.rb +16 -0
  22. data/lib/svnx/info/command.rb +14 -0
  23. data/lib/svnx/log/entry.rb +4 -0
  24. data/lib/synoption/fixnum_option.rb +1 -1
  25. data/test/{unit → integration}/pvn/subcommands/log/command_test.rb +0 -0
  26. data/test/unit/pvn/io/element/log/log_test.rb +3 -2
  27. data/test/unit/pvn/log/formatter/entry_formatter_test.rb +1 -1
  28. data/test/unit/pvn/revision/entry_test.rb +10 -10
  29. data/test/unit/pvn/subcommands/log/options_test.rb +12 -31
  30. data/test/unit/pvn/subcommands/revision/multiple_revisions_option_test.rb +14 -21
  31. data/test/unit/pvn/subcommands/revision/revision_option_test.rb +20 -13
  32. data/test/unit/pvn/subcommands/revision/revision_regexp_option_test.rb +17 -15
  33. metadata +15 -11
  34. data/lib/pvn/pct/linecount.rb +0 -33
  35. data/lib/pvn/pct/pctcmd.rb +0 -204
  36. data/lib/pvn/pct/statcmd.rb +0 -13
@@ -3,9 +3,23 @@
3
3
 
4
4
  require 'tc'
5
5
  require 'pvn/subcommands/revision/revision_regexp_option'
6
+ require 'pvn/subcommands/revision/tc'
7
+ require 'resources'
6
8
 
7
9
  module PVN
8
- class RevisionRegexpOptionTest < PVN::TestCase
10
+ class MockRevisionRegexpOption < RevisionRegexpOption
11
+ include MockBaseRevisionOption
12
+ end
13
+
14
+ class RevisionRegexpOptionTest < BaseRevisionOptionTestCase
15
+ def create_option
16
+ PVN::MockRevisionRegexpOption.new
17
+ end
18
+
19
+ def set_value opt, val
20
+ opt.set_value val
21
+ end
22
+
9
23
  def assert_tag_match str
10
24
  assert_match RevisionRegexpOption::TAG_RE, str
11
25
  end
@@ -25,21 +39,9 @@ module PVN
25
39
  assert_tag_no_match '123'
26
40
  assert_tag_no_match '-x'
27
41
  end
28
-
42
+
29
43
  def test_out_of_range
30
- assert_raises(RuntimeError) do
31
- ropt = PVN::RevisionRegexpOption.new
32
- ropt.process [ '-164' ]
33
- ropt.post_process nil, [ '/Programs/wiquery/trunk' ]
34
- end
35
- end
36
-
37
- def assert_post_process exp, val, path = '/Programs/wiquery/trunk'
38
- ropt = PVN::RevisionRegexpOption.new
39
- ropt.set_value val
40
- ropt.post_process nil, [ path ]
41
- act = ropt.value
42
- assert_equal exp, act, "val: #{val}; path: #{path}"
44
+ assert_revision_option_raises '-164'
43
45
  end
44
46
 
45
47
  def test_post_process_middling
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pvn
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 4
10
- version: 0.0.4
9
+ - 5
10
+ version: 0.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jeff Pace
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-09-04 00:00:00 -04:00
18
+ date: 2012-09-09 00:00:00 -04:00
19
19
  default_executable: pvn
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -34,7 +34,7 @@ dependencies:
34
34
  version: 1.1.6
35
35
  type: :runtime
36
36
  version_requirements: *id001
37
- description: A set of extensions to the Subversion command line.
37
+ description: A set of extensions to the Subversion command line, inspired by Git and Perforce.
38
38
  email: jeugenepace@gmail.com
39
39
  executables:
40
40
  - pvn
@@ -74,12 +74,16 @@ files:
74
74
  - lib/svnx/log/command.rb
75
75
  - lib/svnx/log/entries.rb
76
76
  - lib/svnx/log/entry.rb
77
+ - lib/pvn/subcommands/status/options.rb
78
+ - lib/pvn/subcommands/status/command.rb
77
79
  - lib/pvn/subcommands/base/options.rb
80
+ - lib/pvn/subcommands/base/color_option.rb
78
81
  - lib/pvn/subcommands/base/clargs.rb
79
82
  - lib/pvn/subcommands/base/command.rb
80
83
  - lib/pvn/subcommands/base/doc.rb
81
84
  - lib/pvn/subcommands/pct/options.rb
82
85
  - lib/pvn/subcommands/pct/clargs.rb
86
+ - lib/pvn/subcommands/pct/diffcount.rb
83
87
  - lib/pvn/subcommands/pct/command.rb
84
88
  - lib/pvn/subcommands/log/options.rb
85
89
  - lib/pvn/subcommands/log/command.rb
@@ -90,7 +94,11 @@ files:
90
94
  - lib/pvn/config.rb
91
95
  - lib/pvn/cmddoc.rb
92
96
  - lib/pvn/revision.rb
97
+ - lib/pvn/status/formatter/entry_formatter.rb
98
+ - lib/pvn/status/formatter/status_formatter.rb
99
+ - lib/pvn/status/formatter/entries_formatter.rb
93
100
  - lib/pvn/base/textlines.rb
101
+ - lib/pvn/base/color_formatter.rb
94
102
  - lib/pvn/base/util.rb
95
103
  - lib/pvn/diff/diffcmd.rb
96
104
  - lib/pvn/diff/diffopts.rb
@@ -99,9 +107,6 @@ files:
99
107
  - lib/pvn/io/fselement.rb
100
108
  - lib/pvn/wherecmd.rb
101
109
  - lib/pvn/app.rb
102
- - lib/pvn/pct/statcmd.rb
103
- - lib/pvn/pct/linecount.rb
104
- - lib/pvn/pct/pctcmd.rb
105
110
  - lib/pvn/doc.rb
106
111
  - lib/pvn/log/logentry.rb
107
112
  - lib/pvn/log/logcmd.rb
@@ -109,7 +114,6 @@ files:
109
114
  - lib/pvn/log/logoptions.rb
110
115
  - lib/pvn/log/formatter/entry_formatter.rb
111
116
  - lib/pvn/log/formatter/summary_formatter.rb
112
- - lib/pvn/log/formatter/color_formatter.rb
113
117
  - lib/pvn/log/formatter/entries_formatter.rb
114
118
  - lib/pvn/log/formatter/message_formatter.rb
115
119
  - lib/pvn/log/formatter/log_formatter.rb
@@ -136,7 +140,6 @@ files:
136
140
  - test/unit/svnx/log/entry_test.rb
137
141
  - test/unit/svnx/log/cmargs_test.rb
138
142
  - test/unit/pvn/subcommands/log/options_test.rb
139
- - test/unit/pvn/subcommands/log/command_test.rb
140
143
  - test/unit/pvn/subcommands/revision/multiple_revisions_option_test.rb
141
144
  - test/unit/pvn/subcommands/revision/revision_regexp_option_test.rb
142
145
  - test/unit/pvn/subcommands/revision/revision_option_test.rb
@@ -145,6 +148,7 @@ files:
145
148
  - test/unit/pvn/app_test.rb
146
149
  - test/unit/pvn/revision/entry_test.rb
147
150
  - test/integration/svnx/log/test.rb
151
+ - test/integration/pvn/subcommands/log/command_test.rb
148
152
  - README.markdown
149
153
  has_rdoc: true
150
154
  homepage: http://www.incava.org/projects/pvn
@@ -195,7 +199,6 @@ test_files:
195
199
  - test/unit/svnx/log/entry_test.rb
196
200
  - test/unit/svnx/log/cmargs_test.rb
197
201
  - test/unit/pvn/subcommands/log/options_test.rb
198
- - test/unit/pvn/subcommands/log/command_test.rb
199
202
  - test/unit/pvn/subcommands/revision/multiple_revisions_option_test.rb
200
203
  - test/unit/pvn/subcommands/revision/revision_regexp_option_test.rb
201
204
  - test/unit/pvn/subcommands/revision/revision_option_test.rb
@@ -204,3 +207,4 @@ test_files:
204
207
  - test/unit/pvn/app_test.rb
205
208
  - test/unit/pvn/revision/entry_test.rb
206
209
  - test/integration/svnx/log/test.rb
210
+ - test/integration/pvn/subcommands/log/command_test.rb
@@ -1,33 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- module PVN
5
- class LineCount
6
- attr_accessor :to
7
- attr_accessor :from
8
- attr_accessor :name
9
-
10
- def initialize args = Hash.new
11
- @name = args[:name] || ""
12
- @to = args[:to] || 0
13
- @from = args[:from] || 0
14
- end
15
-
16
- def +(other)
17
- # the new wc has the name of the lhs of the add:
18
- self.class.new :to => @to + other.to, :from => @from + other.from, :name => @name
19
- end
20
-
21
- def diff
22
- @to - @from
23
- end
24
-
25
- def diffpct
26
- @from.zero? ? "0" : 100.0 * diff / @from
27
- end
28
-
29
- def write
30
- printf "%8d %8d %8d %8.1f%% %s\n", @from, @to, diff, diffpct, @name
31
- end
32
- end
33
- end
@@ -1,204 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'system/command'
5
- require 'pvn/pct/linecount'
6
- require 'pvn/io/fselement'
7
- require 'pvn/svn/svnelement'
8
- require 'pvn/svn/svnroot'
9
- require 'pvn/io/element'
10
-
11
- module PVN
12
- class PctOptionSet < OptionSet
13
- attr_accessor :revision
14
-
15
- def initialize
16
- super
17
- @revision = add RevisionRegexpOption.new
18
- end
19
- end
20
-
21
- class PctCommand < Command
22
- DEFAULT_LIMIT = 5
23
- COMMAND = "pct"
24
-
25
- self.doc do |doc|
26
- doc.subcommands = [ COMMAND ]
27
- doc.description = "Print the comparison of size of locally-changed files."
28
- doc.usage = "[OPTIONS] FILE..."
29
- doc.summary = [ "Prints the changes in the size (length) of files that have ",
30
- "been changed locally, to show the extent to which they have",
31
- "increased or decreased. The columns are:",
32
- " - length in svn repository",
33
- " - length in local version",
34
- " - difference",
35
- " - percentage change",
36
- " - file name",
37
- "When more than one file is specified, the total is displayed",
38
- "as the last line." ]
39
- doc.examples << [ "pvn pct main.c", "Prints the number of lines and percentage by which main.c has changed." ]
40
- end
41
-
42
- def initialize args
43
- # not calling super, since all of our stuff goes on in this ctor.
44
-
45
- info "args: #{args}"
46
-
47
- @options = PctOptionSet.new
48
-
49
- @options.process self, args, args[:command_args]
50
- info "args: #{args}"
51
-
52
- files = get_files @options.arguments
53
- info "files: #{files.inspect}"
54
-
55
- rev = @options.revision.value
56
- info "rev: #{rev}"
57
-
58
- @output = Array.new
59
-
60
- totallc = LineCount.new :name => "total"
61
-
62
- files.sort.each do |file|
63
- info "file: #{file}"
64
-
65
- fromlc, tolc = if rev
66
- [ file.svn.line_count(rev - 1), file.svn.line_count(rev) ]
67
- else
68
- [ file.svn.line_count(rev), file.local.line_count ]
69
- end
70
-
71
- info "fromlc: #{fromlc}"
72
- info "tolc: #{tolc}"
73
-
74
- filelc = LineCount.new :from => fromlc, :to => tolc, :name => file.local.name
75
- filelc.write
76
-
77
- totallc += filelc
78
- info "totallc: #{totallc.inspect}"
79
- end
80
-
81
- if files.size > 1
82
- totallc.write
83
- end
84
- end
85
-
86
- def to_command subcmd, *args
87
- cmd = "svn #{subcmd}"
88
- info "cmd: #{cmd}"
89
- info "args: #{args}"
90
- args = args.flatten
91
-
92
- revcl = @options.revision.to_command_line
93
- if revcl
94
- cmd << " " << revcl.join(" ")
95
- end
96
- cmd << " " << Util::quote_list(args)
97
- info "cmd: #{cmd}".on_blue
98
- cmd
99
- end
100
-
101
- def get_changed_files filespec
102
- rev = @options.revision.value
103
- info "rev: #{rev}"
104
-
105
- if rev
106
- get_changed_files_revision filespec
107
- else
108
- get_changed_files_wc filespec
109
- end
110
- end
111
-
112
- def svn_fullname_to_local_file svnname
113
- svnelement = SVNElement.new :name => '.'
114
- info "svnelement.info: #{svnelement.info}"
115
-
116
- fullurl = svnelement.info[:repository_root] + svnname
117
- info "fullurl : #{fullurl}".yellow
118
-
119
- svnroot = SVNRootElement.new
120
- info "svnroot : #{svnroot}".yellow
121
-
122
- info "svnroot.info : #{svnroot.info}".yellow
123
-
124
- here = SVNElement.new :name => '.'
125
-
126
- hereinfo = here.info
127
- info "hereinfo[:url] : #{hereinfo[:url]}".yellow
128
- reporoot = hereinfo[:repository_root]
129
-
130
- info "reporoot : #{reporoot}".yellow
131
-
132
- info "svnroot[:url] : #{svnroot.info[:url]}".yellow
133
-
134
- rootpath = svnroot.name
135
- rooturl = svnroot.info[:url]
136
-
137
- info "rootpath : #{rootpath}".yellow
138
- info "rooturl : #{rooturl}".yellow
139
-
140
- if fullurl.index(rooturl) == 0
141
- localname = fullurl[rooturl.length .. -1]
142
- info "localname : #{localname}".yellow
143
- localname
144
- else
145
- info "fullurl : #{fullurl}".on_red
146
- nil
147
- end
148
-
149
- end
150
-
151
- def get_changed_files_revision filespec
152
- lc = LogCommand.new :revision => @options.revision.value, :verbose => true
153
- info "lc: #{lc}"
154
- entry = lc.entries[0]
155
- return Array.new if entry.nil?
156
-
157
- # entry.write true
158
-
159
- files = entry.files.collect do |svnfile|
160
- localfile = svn_fullname_to_local_file svnfile
161
- Element.new :file => localfile
162
- end
163
- info "files: #{files}".yellow
164
- files
165
- end
166
-
167
- def get_changed_files_wc filespec
168
- files = Array.new
169
- cmd = to_command "st", filespec
170
- IO.popen cmd do |io|
171
- io.each do |line|
172
- info "line: #{line}".yellow
173
- next if line.index %r{^\?}
174
- pn = Element.new :file => line.chomp[8 .. -1]
175
- files << pn if pn.local.file?
176
- end
177
- end
178
- info "files: #{files}".red
179
- files
180
- end
181
-
182
- def get_files fileargs
183
- info "fileargs: #{fileargs}".yellow
184
-
185
- files = Array.new
186
- if fileargs.empty?
187
- files = get_changed_files fileargs
188
- else
189
- fileargs.collect do |fn|
190
- elmt = Element.new :file => fn
191
- if elmt.local.directory?
192
- files.concat get_changed_files(fn)
193
- else
194
- files << elmt
195
- end
196
- end
197
- end
198
-
199
- info "files: #{files}".yellow
200
-
201
- files
202
- end
203
- end
204
- end
@@ -1,13 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- module PVN
5
- class StatOptionSet < OptionSet
6
- attr_accessor :revision
7
-
8
- def initialize
9
- super
10
- @revision = add RevisionRegexpOption.new
11
- end
12
- end
13
- end