tb 0.6 → 0.7

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.
data/README CHANGED
@@ -4,7 +4,7 @@ tb provides a command and a library for manipulating tables:
4
4
  Unix filter like operations (grep, sort, cat, cut, ls, etc.),
5
5
  SQL like operations (join, group, etc.),
6
6
  other table operations (gsub, rename, cross, melt, unmelt, etc.),
7
- information extractions (git-log, svn-log, tar-tvf),
7
+ information extractions (git, svn, tar),
8
8
  and more.
9
9
 
10
10
  == Example
@@ -156,9 +156,9 @@ There are more subcommands.
156
156
  tb mheader [OPTS] [TABLE]
157
157
  tb crop [OPTS] [TABLE ...]
158
158
  tb ls [OPTS] [FILE ...]
159
- tb tar-tvf [OPTS] [TAR-FILE ...]
160
- tb svn-log [OPTS] -- [SVN-LOG-ARGS]
161
- tb git-log [OPTS] [GIT-DIR ...]
159
+ tb tar [OPTS] [TAR-FILE ...]
160
+ tb svn [OPTS] -- [SVN-LOG-ARGS]
161
+ tb git [OPTS] [GIT-DIR ...]
162
162
 
163
163
  tb help -s shows one line summary of the subcommands.
164
164
 
@@ -189,9 +189,9 @@ tb help -s shows one line summary of the subcommands.
189
189
  mheader : Collapse multi rows header.
190
190
  crop : Extract rectangle in a table.
191
191
  ls : List directory entries as a table.
192
- tar-tvf : Show the file listing of tar file.
193
- svn-log : Show the SVN log as a table.
194
- git-log : Show the GIT log as a table.
192
+ tar : Show the file listing of tar file.
193
+ svn : Show the SVN log as a table.
194
+ git : Show the GIT log as a table.
195
195
 
196
196
  == Install
197
197
 
@@ -26,20 +26,20 @@
26
26
  # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
27
27
  # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
 
29
- Tb::Cmd.subcommands << 'git-log'
29
+ Tb::Cmd.subcommands << 'git'
30
30
 
31
- Tb::Cmd.default_option[:opt_git_log_git_command] = nil
32
- Tb::Cmd.default_option[:opt_git_log_debug_input] = nil
33
- Tb::Cmd.default_option[:opt_git_log_debug_output] = nil
31
+ Tb::Cmd.default_option[:opt_git_command] = nil
32
+ Tb::Cmd.default_option[:opt_git_debug_input] = nil
33
+ Tb::Cmd.default_option[:opt_git_debug_output] = nil
34
34
 
35
- def (Tb::Cmd).op_git_log
35
+ def (Tb::Cmd).op_git
36
36
  op = OptionParser.new
37
- op.banner = "Usage: tb git-log [OPTS] [GIT-DIR ...]\n" +
37
+ op.banner = "Usage: tb git [OPTS] [GIT-DIR ...]\n" +
38
38
  "Show the GIT log as a table."
39
39
  define_common_option(op, "hNod", "--no-pager", '--debug')
40
- op.def_option('--git-command COMMAND', 'specify the git command (default: git)') {|command| Tb::Cmd.opt_git_log_git_command = command }
41
- op.def_option('--debug-git-log-output FILE', 'store the raw output of git-log (for debug)') {|filename| Tb::Cmd.opt_git_log_debug_output = filename }
42
- op.def_option('--debug-git-log-input FILE', 'use the file as output of git-log (for debug)') {|filename| Tb::Cmd.opt_git_log_debug_input = filename }
40
+ op.def_option('--git-command COMMAND', 'specify the git command (default: git)') {|command| Tb::Cmd.opt_git_command = command }
41
+ op.def_option('--debug-git-output FILE', 'store the raw output of git (for debug)') {|filename| Tb::Cmd.opt_git_debug_output = filename }
42
+ op.def_option('--debug-git-input FILE', 'use the file as output of git (for debug)') {|filename| Tb::Cmd.opt_git_debug_input = filename }
43
43
  op
44
44
  end
45
45
 
@@ -69,13 +69,13 @@ Tb::Cmd::GIT_LOG_PRETTY_FORMAT = 'format:%x01commit-separator%x01%n' +
69
69
 
70
70
  Tb::Cmd::GIT_LOG_HEADER = Tb::Cmd::GIT_LOG_FORMAT_SPEC.map {|k, v| k } + ['files']
71
71
 
72
- def (Tb::Cmd).git_log_with_git_log(dir)
73
- if Tb::Cmd.opt_git_log_debug_input
74
- File.open(Tb::Cmd.opt_git_log_debug_input) {|f|
72
+ def (Tb::Cmd).git_with_git_log(dir)
73
+ if Tb::Cmd.opt_git_debug_input
74
+ File.open(Tb::Cmd.opt_git_debug_input) {|f|
75
75
  yield f
76
76
  }
77
77
  else
78
- git = Tb::Cmd.opt_git_log_git_command || 'git'
78
+ git = Tb::Cmd.opt_git_command || 'git'
79
79
  # depends Ruby 1.9.
80
80
  command = [
81
81
  git,
@@ -89,11 +89,11 @@ def (Tb::Cmd).git_log_with_git_log(dir)
89
89
  {:chdir=>dir}
90
90
  ]
91
91
  $stderr.puts "git command line: #{command.inspect}" if 1 <= Tb::Cmd.opt_debug
92
- if Tb::Cmd.opt_git_log_debug_output
92
+ if Tb::Cmd.opt_git_debug_output
93
93
  # File.realdirpath is required before Ruby 2.0.
94
- command.last[:out] = File.realdirpath(Tb::Cmd.opt_git_log_debug_output)
94
+ command.last[:out] = File.realdirpath(Tb::Cmd.opt_git_debug_output)
95
95
  system(*command)
96
- File.open(Tb::Cmd.opt_git_log_debug_output) {|f|
96
+ File.open(Tb::Cmd.opt_git_debug_output) {|f|
97
97
  yield f
98
98
  }
99
99
  else
@@ -104,7 +104,7 @@ def (Tb::Cmd).git_log_with_git_log(dir)
104
104
  end
105
105
  end
106
106
 
107
- def (Tb::Cmd).git_log_unescape_filename(filename)
107
+ def (Tb::Cmd).git_unescape_filename(filename)
108
108
  if /\A"/ =~ filename
109
109
  $'.chomp('"').gsub(/\\((\d\d\d)|[abtnvfr"\\])/) {
110
110
  str = $1
@@ -131,23 +131,23 @@ def (Tb::Cmd).git_log_unescape_filename(filename)
131
131
  end
132
132
  end
133
133
 
134
- def (Tb::Cmd).git_log_parse_commit(commit_info, files)
134
+ def (Tb::Cmd).git_parse_commit(commit_info, files)
135
135
  commit_info = commit_info.split(/\n(?=[a-z])/)
136
136
  files_raw = {}
137
137
  files_numstat = {}
138
138
  files.split(/\n/).each {|file_line|
139
139
  if /\A:(\d+) (\d+) ([0-9a-f]+) ([0-9a-f]+) (\S+)\t(.+)\z/ =~ file_line
140
140
  mode1, mode2, hash1, hash2, status, filename = $1, $2, $3, $4, $5, $6
141
- filename = git_log_unescape_filename(filename)
141
+ filename = git_unescape_filename(filename)
142
142
  files_raw[filename] = [mode1, mode2, hash1, hash2, status]
143
143
  elsif /\A(\d+|-)\t(\d+|-)\t(.+)\z/ =~ file_line
144
144
  add, del, filename = $1, $2, $3
145
145
  add = add == '-' ? nil : add.to_i
146
146
  del = del == '-' ? nil : del.to_i
147
- filename = git_log_unescape_filename(filename)
147
+ filename = git_unescape_filename(filename)
148
148
  files_numstat[filename] = [add, del]
149
149
  else
150
- warn "unexpected git-log output (raw/numstat): #{file_line.inspect}"
150
+ warn "unexpected git output (raw/numstat): #{file_line.inspect}"
151
151
  end
152
152
  }
153
153
  Tb.csv_stream_output(files_csv="") {|gen|
@@ -160,7 +160,7 @@ def (Tb::Cmd).git_log_parse_commit(commit_info, files)
160
160
  h = {}
161
161
  commit_info.each {|s|
162
162
  if /:/ !~ s
163
- warn "unexpected git-log output (header:value): #{s.inspect}"
163
+ warn "unexpected git output (header:value): #{s.inspect}"
164
164
  next
165
165
  end
166
166
  k = $`
@@ -180,32 +180,32 @@ def (Tb::Cmd).git_log_parse_commit(commit_info, files)
180
180
  h
181
181
  end
182
182
 
183
- def (Tb::Cmd).git_log_each_commit(f)
183
+ def (Tb::Cmd).git_each_commit(f)
184
184
  while chunk = f.gets("\x01commit-separator\x01\n")
185
185
  chunk.chomp!("\x01commit-separator\x01\n")
186
186
  next if chunk.empty? # beginning of the output
187
187
  if /\nend-commit\n/ !~ chunk
188
- warn "unexpected git-log output (end-commit): #{chunk.inspect}"
188
+ warn "unexpected git output (end-commit): #{chunk.inspect}"
189
189
  next
190
190
  end
191
191
  commit_info, files = $`, $'
192
192
  files.sub!(/\A\n/, '')
193
- h = git_log_parse_commit(commit_info, files)
193
+ h = git_parse_commit(commit_info, files)
194
194
  yield h
195
195
  end
196
196
 
197
197
  end
198
198
 
199
- def (Tb::Cmd).main_git_log(argv)
200
- op_git_log.parse!(argv)
201
- exit_if_help('git-log')
199
+ def (Tb::Cmd).main_git(argv)
200
+ op_git.parse!(argv)
201
+ exit_if_help('git')
202
202
  argv = ['.'] if argv.empty?
203
203
  er = Tb::Enumerator.new {|y|
204
204
  y.set_header Tb::Cmd::GIT_LOG_HEADER
205
205
  argv.each {|dir|
206
- git_log_with_git_log(dir) {|f|
206
+ git_with_git_log(dir) {|f|
207
207
  f.set_encoding("ASCII-8BIT") if f.respond_to? :set_encoding
208
- git_log_each_commit(f) {|h|
208
+ git_each_commit(f) {|h|
209
209
  y.yield h
210
210
  }
211
211
  }
@@ -28,27 +28,27 @@
28
28
 
29
29
  require 'rexml/document'
30
30
 
31
- Tb::Cmd.subcommands << 'svn-log'
31
+ Tb::Cmd.subcommands << 'svn'
32
32
 
33
- Tb::Cmd.default_option[:opt_svn_log_svn_command] = nil
33
+ Tb::Cmd.default_option[:opt_svn_command] = nil
34
34
  Tb::Cmd.default_option[:opt_svn_log_xml] = nil
35
35
 
36
- def (Tb::Cmd).op_svn_log
36
+ def (Tb::Cmd).op_svn
37
37
  op = OptionParser.new
38
- op.banner = "Usage: tb svn-log [OPTS] -- [SVN-LOG-ARGS]\n" +
38
+ op.banner = "Usage: tb svn [OPTS] -- [SVN-LOG-ARGS]\n" +
39
39
  "Show the SVN log as a table."
40
40
  define_common_option(op, "hNo", "--no-pager")
41
- op.def_option('--svn-command COMMAND', 'specify the svn command (default: svn)') {|command| Tb::Cmd.opt_svn_log_svn_command = command }
41
+ op.def_option('--svn-command COMMAND', 'specify the svn command (default: svn)') {|command| Tb::Cmd.opt_svn_command = command }
42
42
  op.def_option('--svn-log-xml FILE', 'specify the result svn log --xml') {|filename| Tb::Cmd.opt_svn_log_xml = filename }
43
43
  op
44
44
  end
45
45
 
46
- Tb::Cmd.def_vhelp('svn-log', <<'End')
46
+ Tb::Cmd.def_vhelp('svn', <<'End')
47
47
  Example:
48
48
 
49
- % tb svn-log
50
- % tb svn-log -- -v
51
- % tb svn-log -- -v http://svn.ruby-lang.org/repos/ruby/trunk
49
+ % tb svn
50
+ % tb svn -- -v
51
+ % tb svn -- -v http://svn.ruby-lang.org/repos/ruby/trunk
52
52
  End
53
53
 
54
54
  class Tb::Cmd::SVNLOGListener
@@ -157,24 +157,24 @@ class Tb::Cmd::SVNLOGListener
157
157
  end
158
158
  end
159
159
 
160
- def (Tb::Cmd).svn_log_with_svn_log(argv)
160
+ def (Tb::Cmd).svn_with_svn_log(argv)
161
161
  if Tb::Cmd.opt_svn_log_xml
162
162
  File.open(Tb::Cmd.opt_svn_log_xml) {|f|
163
163
  yield f
164
164
  }
165
165
  else
166
- svn = Tb::Cmd.opt_svn_log_svn_command || 'svn'
166
+ svn = Tb::Cmd.opt_svn_command || 'svn'
167
167
  IO.popen([svn, 'log', '--xml', *argv]) {|f|
168
168
  yield f
169
169
  }
170
170
  end
171
171
  end
172
172
 
173
- def (Tb::Cmd).main_svn_log(argv)
174
- op_svn_log.parse!(argv)
175
- exit_if_help('svn-log')
173
+ def (Tb::Cmd).main_svn(argv)
174
+ op_svn.parse!(argv)
175
+ exit_if_help('svn')
176
176
  er = Tb::Enumerator.new {|y|
177
- svn_log_with_svn_log(argv) {|f|
177
+ svn_with_svn_log(argv) {|f|
178
178
  listener = Tb::Cmd::SVNLOGListener.new(y)
179
179
  REXML::Parsers::StreamParser.new(f, listener).parse
180
180
  }
@@ -26,20 +26,20 @@
26
26
  # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
27
27
  # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
 
29
- Tb::Cmd.subcommands << 'tar-tvf'
29
+ Tb::Cmd.subcommands << 'tar'
30
30
 
31
- Tb::Cmd.default_option[:opt_tar_tvf_l] = 0
32
- Tb::Cmd.default_option[:opt_tar_tvf_ustar] = nil
33
- Tb::Cmd.default_option[:opt_tar_tvf_hash] = []
31
+ Tb::Cmd.default_option[:opt_tar_l] = 0
32
+ Tb::Cmd.default_option[:opt_tar_ustar] = nil
33
+ Tb::Cmd.default_option[:opt_tar_hash] = []
34
34
 
35
- def (Tb::Cmd).op_tar_tvf
35
+ def (Tb::Cmd).op_tar
36
36
  op = OptionParser.new
37
- op.banner = "Usage: tb tar-tvf [OPTS] [TAR-FILE ...]\n" +
37
+ op.banner = "Usage: tb tar [OPTS] [TAR-FILE ...]\n" +
38
38
  "Show the file listing of tar file."
39
39
  define_common_option(op, "hNo", "--no-pager")
40
- op.def_option('-l', 'show more attributes.') {|fs| Tb::Cmd.opt_tar_tvf_l += 1 }
41
- op.def_option('--ustar', 'ustar format (POSIX.1-1988). No GNU and POSIX.1-2001 extension.') {|fs| Tb::Cmd.opt_tar_tvf_ustar = true }
42
- op.def_option('--hash=ALGORITHMS', 'hash algorithms such as md5,sha256,sha384,sha512 (default: none)') {|hs| Tb::Cmd.opt_tar_tvf_hash.concat split_field_list_argument(hs) }
40
+ op.def_option('-l', 'show more attributes.') {|fs| Tb::Cmd.opt_tar_l += 1 }
41
+ op.def_option('--ustar', 'ustar format (POSIX.1-1988). No GNU and POSIX.1-2001 extension.') {|fs| Tb::Cmd.opt_tar_ustar = true }
42
+ op.def_option('--hash=ALGORITHMS', 'hash algorithms such as md5,sha256,sha384,sha512 (default: none)') {|hs| Tb::Cmd.opt_tar_hash.concat split_field_list_argument(hs) }
43
43
  op
44
44
  end
45
45
 
@@ -84,7 +84,7 @@ Tb::Cmd::TAR_HASH_ALGORITHMS = {
84
84
  'sha512' => 'SHA512',
85
85
  }
86
86
 
87
- def (Tb::Cmd).tar_tvf_parse_seconds_from_epoch(val)
87
+ def (Tb::Cmd).tar_parse_seconds_from_epoch(val)
88
88
  if /\./ =~ val
89
89
  num = ($` + $').to_i
90
90
  den = 10 ** $'.length
@@ -101,9 +101,9 @@ def (Tb::Cmd).tar_tvf_parse_seconds_from_epoch(val)
101
101
  end
102
102
 
103
103
  Tb::Cmd::TAR_PAX_KEYWORD_RECOGNIZERS = {
104
- 'atime' => [:atime, lambda {|val| Tb::Cmd.tar_tvf_parse_seconds_from_epoch(val) }],
105
- 'mtime' => [:mtime, lambda {|val| Tb::Cmd.tar_tvf_parse_seconds_from_epoch(val) }],
106
- 'ctime' => [:ctime, lambda {|val| Tb::Cmd.tar_tvf_parse_seconds_from_epoch(val) }],
104
+ 'atime' => [:atime, lambda {|val| Tb::Cmd.tar_parse_seconds_from_epoch(val) }],
105
+ 'mtime' => [:mtime, lambda {|val| Tb::Cmd.tar_parse_seconds_from_epoch(val) }],
106
+ 'ctime' => [:ctime, lambda {|val| Tb::Cmd.tar_parse_seconds_from_epoch(val) }],
107
107
  'gid' => [:gid, lambda {|val| val.to_i }],
108
108
  'gname' => [:gname, lambda {|val| val }],
109
109
  'uid' => [:uid, lambda {|val| val.to_i }],
@@ -116,7 +116,7 @@ Tb::Cmd::TAR_PAX_KEYWORD_RECOGNIZERS = {
116
116
  Tb::Cmd::TAR_CSV_HEADER = %w[mode filemode uid user gid group devmajor devminor size mtime path linkname]
117
117
  Tb::Cmd::TAR_CSV_LONG_HEADER = %w[mode filemode uid user gid group devmajor devminor size mtime atime ctime path linkname size_in_tar tar_typeflag tar_magic tar_version tar_chksum]
118
118
 
119
- def (Tb::Cmd).tar_tvf_parse_header(header_record)
119
+ def (Tb::Cmd).tar_parse_header(header_record)
120
120
  ary = header_record.unpack(Tb::Cmd::TAR_HEADER_TEPMLATE)
121
121
  h = {}
122
122
  Tb::Cmd::TAR_HEADER_STRUCTURE.each_with_index {|(k, _), i|
@@ -243,7 +243,7 @@ class Tb::Cmd::TarReader
243
243
  end
244
244
  end
245
245
 
246
- def (Tb::Cmd).tar_tvf_read_end_of_archive_indicator(reader)
246
+ def (Tb::Cmd).tar_read_end_of_archive_indicator(reader)
247
247
  # The end of archive indicator is two consecutive records of NULs.
248
248
  # The first record is already read.
249
249
  second_end_of_archive_indicator_record = reader.get_single_record("second record of the end of archive indicator")
@@ -259,7 +259,7 @@ def (Tb::Cmd).tar_tvf_read_end_of_archive_indicator(reader)
259
259
  # archive indicator. ("ustar Interchange Format" in POSIX)
260
260
  end
261
261
 
262
- def (Tb::Cmd).tar_tvf_check_extension_record(reader, h, content_blocklength)
262
+ def (Tb::Cmd).tar_check_extension_record(reader, h, content_blocklength)
263
263
  prefix_parameters = {}
264
264
  case h[:typeflag]
265
265
  when 'L' # GNU
@@ -302,7 +302,7 @@ def (Tb::Cmd).tar_tvf_check_extension_record(reader, h, content_blocklength)
302
302
  nil
303
303
  end
304
304
 
305
- def (Tb::Cmd).tar_tvf_each(f)
305
+ def (Tb::Cmd).tar_each(f)
306
306
  offset = 0
307
307
  reader = Tb::Cmd::TarReader.new(f)
308
308
  prefix_parameters = {}
@@ -312,14 +312,14 @@ def (Tb::Cmd).tar_tvf_each(f)
312
312
  break
313
313
  end
314
314
  if /\A\0*\z/ =~ header_record
315
- tar_tvf_read_end_of_archive_indicator(reader)
315
+ tar_read_end_of_archive_indicator(reader)
316
316
  break
317
317
  end
318
- h = tar_tvf_parse_header(header_record)
318
+ h = tar_parse_header(header_record)
319
319
  content_numrecords = (h[:size] + Tb::Cmd::TAR_RECORD_LENGTH - 1) / Tb::Cmd::TAR_RECORD_LENGTH
320
320
  content_blocklength = content_numrecords * Tb::Cmd::TAR_RECORD_LENGTH
321
- if !Tb::Cmd.opt_tar_tvf_ustar
322
- extension_params = tar_tvf_check_extension_record(reader, h, content_blocklength)
321
+ if !Tb::Cmd.opt_tar_ustar
322
+ extension_params = tar_check_extension_record(reader, h, content_blocklength)
323
323
  if extension_params
324
324
  prefix_parameters.update extension_params
325
325
  next
@@ -336,10 +336,10 @@ def (Tb::Cmd).tar_tvf_each(f)
336
336
  when :link, :symlink, :directory, :character_special, :block_special, :fifo
337
337
  # xxx: hardlink may have contents for posix archive.
338
338
  else
339
- if Tb::Cmd.opt_tar_tvf_hash.empty?
339
+ if Tb::Cmd.opt_tar_hash.empty?
340
340
  reader.skip(content_blocklength, 'file content')
341
341
  else
342
- reader.calculate_hash(content_blocklength, h[:size], Tb::Cmd.opt_tar_tvf_hash).each {|alg, result|
342
+ reader.calculate_hash(content_blocklength, h[:size], Tb::Cmd.opt_tar_hash).each {|alg, result|
343
343
  h[alg] = result
344
344
  }
345
345
  end
@@ -351,7 +351,7 @@ def (Tb::Cmd).tar_tvf_each(f)
351
351
  end
352
352
  end
353
353
 
354
- def (Tb::Cmd).tar_tvf_open_with0(arg)
354
+ def (Tb::Cmd).tar_open_with0(arg)
355
355
  if arg == '-'
356
356
  yield $stdin
357
357
  else
@@ -361,8 +361,8 @@ def (Tb::Cmd).tar_tvf_open_with0(arg)
361
361
  end
362
362
  end
363
363
 
364
- def (Tb::Cmd).tar_tvf_open_with(arg)
365
- tar_tvf_open_with0(arg) {|f|
364
+ def (Tb::Cmd).tar_open_with(arg)
365
+ tar_open_with0(arg) {|f|
366
366
  magic = f.read(8)
367
367
  case magic
368
368
  when /\A\x1f\x8b/, /\A\037\235/ # \x1f\x8b is gzip format. \037\235 is "compress" format of old Unix.
@@ -423,7 +423,7 @@ def (Tb::Cmd).tar_tvf_open_with(arg)
423
423
  }
424
424
  end
425
425
 
426
- def (Tb::Cmd).tar_tvf_format_filemode(typeflag, mode)
426
+ def (Tb::Cmd).tar_format_filemode(typeflag, mode)
427
427
  entry_type =
428
428
  case Tb::Cmd::TAR_TYPEFLAG[typeflag]
429
429
  when :regular then '-'
@@ -453,34 +453,34 @@ def (Tb::Cmd).tar_tvf_format_filemode(typeflag, mode)
453
453
  (m & 01000 == 0 ? ?x : ?t)))
454
454
  end
455
455
 
456
- def (Tb::Cmd).main_tar_tvf(argv)
457
- op_tar_tvf.parse!(argv)
458
- exit_if_help('tar-tvf')
459
- if Tb::Cmd.opt_tar_tvf_hash.any? {|alg| !Tb::Cmd::TAR_HASH_ALGORITHMS[alg] }
460
- STDERR.puts "Unexpected hash algorithm: #{Tb::Cmd.opt_tar_tvf_hash.reject {|alg| Tb::Cmd::TAR_HASH_ALGORITHMS[alg] }.join(",")}"
456
+ def (Tb::Cmd).main_tar(argv)
457
+ op_tar.parse!(argv)
458
+ exit_if_help('tar')
459
+ if Tb::Cmd.opt_tar_hash.any? {|alg| !Tb::Cmd::TAR_HASH_ALGORITHMS[alg] }
460
+ STDERR.puts "Unexpected hash algorithm: #{Tb::Cmd.opt_tar_hash.reject {|alg| Tb::Cmd::TAR_HASH_ALGORITHMS[alg] }.join(",")}"
461
461
  exit false
462
462
  end
463
463
  argv = ['-'] if argv.empty?
464
464
  er = Tb::Enumerator.new {|y|
465
- if Tb::Cmd.opt_tar_tvf_l == 0
465
+ if Tb::Cmd.opt_tar_l == 0
466
466
  header = Tb::Cmd::TAR_CSV_HEADER
467
467
  else
468
468
  header = Tb::Cmd::TAR_CSV_LONG_HEADER
469
469
  end
470
- header += Tb::Cmd.opt_tar_tvf_hash
470
+ header += Tb::Cmd.opt_tar_hash
471
471
  y.set_header header
472
472
  argv.each {|filename|
473
- tar_tvf_open_with(filename) {|f|
474
- tar_tvf_each(f) {|h|
473
+ tar_open_with(filename) {|f|
474
+ tar_each(f) {|h|
475
475
  formatted = {}
476
476
  formatted["mode"] = sprintf("0%o", h[:mode])
477
- formatted["filemode"] = tar_tvf_format_filemode(h[:typeflag], h[:mode])
477
+ formatted["filemode"] = tar_format_filemode(h[:typeflag], h[:mode])
478
478
  formatted["uid"] = h[:uid].to_s
479
479
  formatted["gid"] = h[:gid].to_s
480
480
  formatted["size"] = h[:size].to_s
481
- formatted["mtime"] = h[:mtime].iso8601(0 < Tb::Cmd.opt_tar_tvf_l ? 9 : 0)
482
- formatted["atime"] = h[:atime].iso8601(0 < Tb::Cmd.opt_tar_tvf_l ? 9 : 0) if h[:atime]
483
- formatted["ctime"] = h[:ctime].iso8601(0 < Tb::Cmd.opt_tar_tvf_l ? 9 : 0) if h[:ctime]
481
+ formatted["mtime"] = h[:mtime].iso8601(0 < Tb::Cmd.opt_tar_l ? 9 : 0)
482
+ formatted["atime"] = h[:atime].iso8601(0 < Tb::Cmd.opt_tar_l ? 9 : 0) if h[:atime]
483
+ formatted["ctime"] = h[:ctime].iso8601(0 < Tb::Cmd.opt_tar_l ? 9 : 0) if h[:ctime]
484
484
  formatted["user"] = h[:uname]
485
485
  formatted["group"] = h[:gname]
486
486
  formatted["devmajor"] = h[:devmajor].to_s
@@ -492,7 +492,7 @@ def (Tb::Cmd).main_tar_tvf(argv)
492
492
  formatted["tar_typeflag"] = h[:typeflag]
493
493
  formatted["tar_magic"] = h[:magic]
494
494
  formatted["tar_version"] = h[:version]
495
- Tb::Cmd.opt_tar_tvf_hash.each {|alg| formatted[alg] = h[alg] }
495
+ Tb::Cmd.opt_tar_hash.each {|alg| formatted[alg] = h[alg] }
496
496
  y.yield Hash[header.map {|f2| [f2, formatted[f2]] }]
497
497
  }
498
498
  }
@@ -61,9 +61,9 @@ require 'tb/cmd_shape'
61
61
  require 'tb/cmd_mheader'
62
62
  require 'tb/cmd_crop'
63
63
  require 'tb/cmd_ls'
64
- require 'tb/cmd_tar_tvf'
65
- require 'tb/cmd_svn_log'
66
- require 'tb/cmd_git_log'
64
+ require 'tb/cmd_tar'
65
+ require 'tb/cmd_svn'
66
+ require 'tb/cmd_git'
67
67
  require 'tb/cmdmain'
68
68
 
69
69
  Tb::Cmd.init_option
@@ -30,7 +30,7 @@ class TestTbCmdGitLog < Test::Unit::TestCase
30
30
  File.open("foo", "w") {|f| f.puts "bar" }
31
31
  system("git add foo")
32
32
  system("git commit -q -m msg foo")
33
- Tb::Cmd.main_git_log(['-o', o="o.csv"])
33
+ Tb::Cmd.main_git(['-o', o="o.csv"])
34
34
  result = File.read(o)
35
35
  tb = Tb.parse_csv(result)
36
36
  assert_equal(1, tb.size)
@@ -43,7 +43,7 @@ class TestTbCmdGitLog < Test::Unit::TestCase
43
43
  File.open(filename, "w") {|f| f.puts "bar" }
44
44
  system("git", "add", filename)
45
45
  system("git", "commit", "-q", "-m", "msg", filename)
46
- Tb::Cmd.main_git_log(['-o', o="o.csv"])
46
+ Tb::Cmd.main_git(['-o', o="o.csv"])
47
47
  result = File.read(o)
48
48
  tb = Tb.parse_csv(result)
49
49
  assert_equal(1, tb.size)
@@ -53,12 +53,12 @@ class TestTbCmdGitLog < Test::Unit::TestCase
53
53
  assert_equal(filename, ftb.get_record(0)["filename"])
54
54
  end
55
55
 
56
- def test_debug_git_log_output_input
56
+ def test_debug_git_output_input
57
57
  system("git init -q")
58
58
  File.open("foo", "w") {|f| f.puts "bar" }
59
59
  system("git add foo")
60
60
  system("git commit -q -m msg foo")
61
- Tb::Cmd.main_git_log(['-o', o="o.csv", '--debug-git-log-output', g='gitlog'])
61
+ Tb::Cmd.main_git(['-o', o="o.csv", '--debug-git-output', g='gitlog'])
62
62
  result = File.read(o)
63
63
  tb = Tb.parse_csv(result)
64
64
  assert_equal(1, tb.size)
@@ -66,7 +66,7 @@ class TestTbCmdGitLog < Test::Unit::TestCase
66
66
  gresult = File.read(g)
67
67
  assert(!gresult.empty?)
68
68
  FileUtils.rmtree('.git')
69
- Tb::Cmd.main_git_log(['-o', o="o.csv", '--debug-git-log-input', g])
69
+ Tb::Cmd.main_git(['-o', o="o.csv", '--debug-git-input', g])
70
70
  result = File.read(o)
71
71
  tb = Tb.parse_csv(result)
72
72
  assert_equal(1, tb.size)
@@ -78,7 +78,7 @@ class TestTbCmdGitLog < Test::Unit::TestCase
78
78
  File.open("foo", "w") {|f| f.puts "bar" }
79
79
  system("git add foo")
80
80
  system("git commit -q -m msg foo")
81
- Tb::Cmd.main_git_log(['-o', o="o.csv", '--debug-git-log-output', g='gitlog'])
81
+ Tb::Cmd.main_git(['-o', o="o.csv", '--debug-git-output', g='gitlog'])
82
82
  result = File.read(o)
83
83
  tb = Tb.parse_csv(result)
84
84
  assert_equal(1, tb.size)
@@ -91,7 +91,7 @@ class TestTbCmdGitLog < Test::Unit::TestCase
91
91
  o2 = 'o2.csv'
92
92
  File.open('log', 'w') {|log|
93
93
  with_stderr(log) {
94
- Tb::Cmd.main_git_log(['-o', o2, '--debug-git-log-input', g])
94
+ Tb::Cmd.main_git(['-o', o2, '--debug-git-input', g])
95
95
  }
96
96
  }
97
97
  result = File.read(o2)
@@ -107,7 +107,7 @@ class TestTbCmdGitLog < Test::Unit::TestCase
107
107
  File.open("foo", "w") {|f| f.puts "bar" }
108
108
  system("git add foo")
109
109
  system("git commit -q -m msg foo")
110
- Tb::Cmd.main_git_log(['-o', o="o.csv", '--debug-git-log-output', g='gitlog'])
110
+ Tb::Cmd.main_git(['-o', o="o.csv", '--debug-git-output', g='gitlog'])
111
111
  result = File.read(o)
112
112
  tb = Tb.parse_csv(result)
113
113
  assert_equal(1, tb.size)
@@ -120,7 +120,7 @@ class TestTbCmdGitLog < Test::Unit::TestCase
120
120
  o2 = 'o2.csv'
121
121
  File.open('log', 'w') {|log|
122
122
  with_stderr(log) {
123
- Tb::Cmd.main_git_log(['-o', o2, '--debug-git-log-input', g])
123
+ Tb::Cmd.main_git(['-o', o2, '--debug-git-input', g])
124
124
  }
125
125
  }
126
126
  result = File.read(o2)
@@ -136,7 +136,7 @@ class TestTbCmdGitLog < Test::Unit::TestCase
136
136
  File.open("foo", "w") {|f| f.puts "bar" }
137
137
  system("git add foo")
138
138
  system("git commit -q -m msg foo")
139
- Tb::Cmd.main_git_log(['-o', o="o.csv", '--debug-git-log-output', g='gitlog'])
139
+ Tb::Cmd.main_git(['-o', o="o.csv", '--debug-git-output', g='gitlog'])
140
140
  result = File.read(o)
141
141
  tb = Tb.parse_csv(result)
142
142
  assert_equal(1, tb.size)
@@ -149,7 +149,7 @@ class TestTbCmdGitLog < Test::Unit::TestCase
149
149
  o2 = 'o2.csv'
150
150
  File.open('log', 'w') {|log|
151
151
  with_stderr(log) {
152
- Tb::Cmd.main_git_log(['-o', o2, '--debug-git-log-input', g])
152
+ Tb::Cmd.main_git(['-o', o2, '--debug-git-input', g])
153
153
  }
154
154
  }
155
155
  result = File.read(o2)
@@ -164,7 +164,7 @@ class TestTbCmdGitLog < Test::Unit::TestCase
164
164
  File.open("foo", "w") {|f| f.print "\0\xff" }
165
165
  system("git add foo")
166
166
  system("git commit -q -m msg foo")
167
- Tb::Cmd.main_git_log(['-o', o="o.csv"])
167
+ Tb::Cmd.main_git(['-o', o="o.csv"])
168
168
  result = File.read(o)
169
169
  tb = Tb.parse_csv(result)
170
170
  assert_equal(1, tb.size)
@@ -180,7 +180,7 @@ class TestTbCmdGitLog < Test::Unit::TestCase
180
180
  File.open("bar/baz", "w") {|f| f.print "baz" }
181
181
  system("git add bar")
182
182
  system("git commit -q -m msg bar")
183
- Tb::Cmd.main_git_log(['-o', o="o.csv", "bar"])
183
+ Tb::Cmd.main_git(['-o', o="o.csv", "bar"])
184
184
  result = File.read(o)
185
185
  tb = Tb.parse_csv(result)
186
186
  assert_equal(1, tb.size)
@@ -33,7 +33,7 @@ class TestTbCmdSvnLog < Test::Unit::TestCase
33
33
  system("svn add -q foo hoge")
34
34
  system("svn commit -q -m baz foo hoge")
35
35
  system("svn update -q") # update the revision of the directory.
36
- Tb::Cmd.main_svn_log(['-o', o="o.csv"])
36
+ Tb::Cmd.main_svn(['-o', o="o.csv"])
37
37
  result = File.read(o)
38
38
  tb = Tb.parse_csv(result)
39
39
  assert_equal(1, tb.size)
@@ -48,7 +48,7 @@ class TestTbCmdSvnLog < Test::Unit::TestCase
48
48
  system("svn add -q foo hoge")
49
49
  system("svn commit -q -m baz foo hoge")
50
50
  system("svn update -q") # update the revision of the directory.
51
- Tb::Cmd.main_svn_log(['-o', o="o.csv", '--', '-v'])
51
+ Tb::Cmd.main_svn(['-o', o="o.csv", '--', '-v'])
52
52
  result = File.read(o)
53
53
  tb = Tb.parse_csv(result)
54
54
  assert_equal(2, tb.size)
@@ -70,7 +70,7 @@ class TestTbCmdSvnLog < Test::Unit::TestCase
70
70
  system("svn commit -q -m baz foo hoge")
71
71
  system("svn update -q") # update the revision of the directory.
72
72
  ###
73
- Tb::Cmd.main_svn_log(['-o', o="o.csv"])
73
+ Tb::Cmd.main_svn(['-o', o="o.csv"])
74
74
  result = File.read(o)
75
75
  tb = Tb.parse_csv(result)
76
76
  assert_equal(1, tb.size)
@@ -78,7 +78,7 @@ class TestTbCmdSvnLog < Test::Unit::TestCase
78
78
  ###
79
79
  system("svn log --xml > log.xml")
80
80
  FileUtils.rmtree('.svn')
81
- Tb::Cmd.main_svn_log(['-o', o="o.csv", '--svn-log-xml=log.xml'])
81
+ Tb::Cmd.main_svn(['-o', o="o.csv", '--svn-log-xml=log.xml'])
82
82
  result = File.read(o)
83
83
  tb = Tb.parse_csv(result)
84
84
  assert_equal(1, tb.size)
@@ -97,7 +97,7 @@ class TestTbCmdSvnLog < Test::Unit::TestCase
97
97
  system("svn propdel -q svn:date --revprop -r 1 .")
98
98
  system("svn propdel -q svn:log --revprop -r 1 .")
99
99
  ###
100
- Tb::Cmd.main_svn_log(['-o', o="o.csv"])
100
+ Tb::Cmd.main_svn(['-o', o="o.csv"])
101
101
  result = File.read(o)
102
102
  tb = Tb.parse_csv(result)
103
103
  assert_equal(1, tb.size)
@@ -54,7 +54,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
54
54
  def test_basic
55
55
  open('foo', 'w') {|f| }
56
56
  assert(system('tar cf bar.tar foo'))
57
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv', 'bar.tar'])
57
+ Tb::Cmd.main_tar(['-o', o='o.csv', 'bar.tar'])
58
58
  assert_match(/,foo,/, File.read(o))
59
59
  end
60
60
 
@@ -64,7 +64,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
64
64
  o = nil
65
65
  open('bar.tar') {|f|
66
66
  with_stdin(f) {
67
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv'])
67
+ Tb::Cmd.main_tar(['-o', o='o.csv'])
68
68
  }
69
69
  }
70
70
  assert_match(/,foo,/, File.read(o))
@@ -77,7 +77,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
77
77
  o = nil
78
78
  IO.popen('cat bar.tar') {|f|
79
79
  with_stdin(f) {
80
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv'])
80
+ Tb::Cmd.main_tar(['-o', o='o.csv'])
81
81
  }
82
82
  }
83
83
  assert_match(/,foo,/, File.read(o))
@@ -88,7 +88,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
88
88
  open('foo', 'w') {|f| }
89
89
  assert(system('tar cf bar.tar foo'))
90
90
  assert(system('gzip bar.tar'))
91
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv', 'bar.tar.gz'])
91
+ Tb::Cmd.main_tar(['-o', o='o.csv', 'bar.tar.gz'])
92
92
  assert_match(/,foo,/, File.read(o))
93
93
  end
94
94
 
@@ -100,7 +100,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
100
100
  o = nil
101
101
  open('bar.tar.gz') {|f|
102
102
  with_stdin(f) {
103
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv'])
103
+ Tb::Cmd.main_tar(['-o', o='o.csv'])
104
104
  }
105
105
  }
106
106
  assert_match(/,foo,/, File.read(o))
@@ -114,7 +114,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
114
114
  o = nil
115
115
  IO.popen('cat bar.tar.gz') {|f|
116
116
  with_stdin(f) {
117
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv'])
117
+ Tb::Cmd.main_tar(['-o', o='o.csv'])
118
118
  }
119
119
  }
120
120
  assert_match(/,foo,/, File.read(o))
@@ -124,7 +124,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
124
124
  Dir.mkdir("d")
125
125
  open('d/foo', 'w') {|f| f << "hahaha" }
126
126
  assert(system('tar cf bar.tar d'))
127
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv', '-l', 'bar.tar'])
127
+ Tb::Cmd.main_tar(['-o', o='o.csv', '-l', 'bar.tar'])
128
128
  result = File.read(o)
129
129
  assert_match(%r{,d/,}, result)
130
130
  assert_match(%r{,d/foo,}, result)
@@ -134,7 +134,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
134
134
  open('foo', 'w') {|f| f << "hahaha" }
135
135
  File.link('foo', 'baz')
136
136
  assert(system('tar cf bar.tar foo baz'))
137
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv', '-l', 'bar.tar'])
137
+ Tb::Cmd.main_tar(['-o', o='o.csv', '-l', 'bar.tar'])
138
138
  result = File.read(o)
139
139
  assert_match(/,foo,/, result)
140
140
  assert_match(/,h/, result)
@@ -150,7 +150,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
150
150
  next unless tar_and_formats.last.include? format
151
151
  tar = tar_and_formats.first
152
152
  assert(system("#{tar} cf bar.tar --format=#{format} #{name}"))
153
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv', '-l', 'bar.tar'])
153
+ Tb::Cmd.main_tar(['-o', o='o.csv', '-l', 'bar.tar'])
154
154
  result = File.read(o)
155
155
  assert_equal(2, result.count("\n"), "tar format: #{format}")
156
156
  assert_match(/,#{name},/, result)
@@ -165,7 +165,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
165
165
  next unless tar_and_formats.last.include? format
166
166
  tar = tar_and_formats.first
167
167
  assert(system("#{tar} cf bar.tar --format=#{format} #{name}"))
168
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv', '-l', 'bar.tar'])
168
+ Tb::Cmd.main_tar(['-o', o='o.csv', '-l', 'bar.tar'])
169
169
  result = File.read(o)
170
170
  assert_equal(2, result.count("\n"), "tar format: #{format}")
171
171
  assert_match(/,#{name},/, result)
@@ -180,7 +180,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
180
180
  next unless tar_and_formats.last.include? format
181
181
  tar = tar_and_formats.first
182
182
  assert(system("#{tar} cf bar.tar --format=#{format} foo"))
183
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv', '-l', 'bar.tar'])
183
+ Tb::Cmd.main_tar(['-o', o='o.csv', '-l', 'bar.tar'])
184
184
  result = File.read(o)
185
185
  assert_equal(2, result.count("\n"), "tar format: #{format}")
186
186
  assert_match(/,#{link},/, result)
@@ -196,7 +196,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
196
196
  next unless tar_and_formats.last.include? format
197
197
  tar = tar_and_formats.first
198
198
  assert(system("#{tar} cf bar.tar --format=#{format} #{name}"))
199
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv', '-l', 'bar.tar'])
199
+ Tb::Cmd.main_tar(['-o', o='o.csv', '-l', 'bar.tar'])
200
200
  result = File.read(o)
201
201
  assert_equal(2, result.count("\n"))
202
202
  assert_match(/,#{name},/, result)
@@ -215,7 +215,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
215
215
  next unless tar_and_formats.last.include? format
216
216
  tar = tar_and_formats.first
217
217
  assert(system("#{tar} cf bar.tar --format=#{format} #{name}"))
218
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv', '-l', 'bar.tar'])
218
+ Tb::Cmd.main_tar(['-o', o='o.csv', '-l', 'bar.tar'])
219
219
  result = File.read(o)
220
220
  assert_equal(2, result.count("\n"), "tar format: #{format}")
221
221
  assert_match(/,#{Regexp.escape mtime.iso8601(9)},/, result, "tar format: #{format}")
@@ -233,7 +233,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
233
233
  next unless tar_and_formats.last.include? format
234
234
  tar = tar_and_formats.first
235
235
  assert(system("#{tar} cf bar.tar --format=#{format} #{name}"))
236
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv', '-l', 'bar.tar'])
236
+ Tb::Cmd.main_tar(['-o', o='o.csv', '-l', 'bar.tar'])
237
237
  result = File.read(o)
238
238
  assert_equal(2, result.count("\n"), "tar format: #{format}")
239
239
  assert_match(/,#{Regexp.escape atime.iso8601(9)},/, result, "tar format: #{format}")
@@ -252,7 +252,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
252
252
  next unless tar_and_formats.last.include? format
253
253
  tar = tar_and_formats.first
254
254
  assert(system("#{tar} cf bar.tar --format=#{format} #{name}"))
255
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv', '-l', 'bar.tar'])
255
+ Tb::Cmd.main_tar(['-o', o='o.csv', '-l', 'bar.tar'])
256
256
  result = File.read(o)
257
257
  assert_equal(2, result.count("\n"), "tar format: #{format}")
258
258
  assert_match(/,#{Regexp.escape mtime.iso8601(9)},/, result, "tar format: #{format}")
@@ -271,7 +271,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
271
271
  next unless tar_and_formats.last.include? format
272
272
  tar = tar_and_formats.first
273
273
  assert(system("#{tar} cf bar.tar --format=#{format} #{name}"))
274
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv', '-l', 'bar.tar'])
274
+ Tb::Cmd.main_tar(['-o', o='o.csv', '-l', 'bar.tar'])
275
275
  result = File.read(o)
276
276
  assert_equal(2, result.count("\n"), "tar format: #{format}")
277
277
  assert_match(/,#{Regexp.escape atime.iso8601(9)},/, result, "tar format: #{format}")
@@ -284,7 +284,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
284
284
  assert(system('tar cf foo.tar foo'))
285
285
  %w[MD5 SHA1 SHA256 SHA384 SHA512].each {|cname|
286
286
  alg = cname.downcase
287
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv', "--hash=#{alg}", 'foo.tar'])
287
+ Tb::Cmd.main_tar(['-o', o='o.csv', "--hash=#{alg}", 'foo.tar'])
288
288
  result = File.read(o)
289
289
  assert_equal(2, result.count("\n"), "hash algorithm: #{alg}")
290
290
  assert_match(/,#{Regexp.escape Digest.const_get(cname).hexdigest(str)}$/, result, "hash algorithm: #{alg}")
@@ -297,7 +297,7 @@ class TestTbCmdTarTvf < Test::Unit::TestCase
297
297
  assert(system('tar cf foo.tar foo'))
298
298
  %w[MD5 SHA1 SHA256 SHA384 SHA512].each {|cname|
299
299
  alg = cname.downcase
300
- Tb::Cmd.main_tar_tvf(['-o', o='o.csv', "--hash=#{alg}", 'foo.tar'])
300
+ Tb::Cmd.main_tar(['-o', o='o.csv', "--hash=#{alg}", 'foo.tar'])
301
301
  result = File.read(o)
302
302
  assert_equal(2, result.count("\n"), "hash algorithm: #{alg}")
303
303
  assert_match(/,#{Regexp.escape Digest.const_get(cname).hexdigest(str)}$/, result, "hash algorithm: #{alg}")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tb
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.6'
4
+ version: '0.7'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-29 00:00:00.000000000 Z
12
+ date: 2012-05-29 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: ! 'tb is a manipulation tool for table: CSV, TSV, JSON, etc.
15
15
 
@@ -22,7 +22,7 @@ description: ! 'tb is a manipulation tool for table: CSV, TSV, JSON, etc.
22
22
 
23
23
  other table operations (gsub, rename, cross, melt, unmelt, etc.),
24
24
 
25
- information extractions (git-log, svn-log, tar-tvf),
25
+ information extractions (git, svn, tar),
26
26
 
27
27
  and more.
28
28
 
@@ -43,7 +43,7 @@ files:
43
43
  - lib/tb/cmd_crop.rb
44
44
  - lib/tb/cmd_cross.rb
45
45
  - lib/tb/cmd_cut.rb
46
- - lib/tb/cmd_git_log.rb
46
+ - lib/tb/cmd_git.rb
47
47
  - lib/tb/cmd_grep.rb
48
48
  - lib/tb/cmd_group.rb
49
49
  - lib/tb/cmd_gsub.rb
@@ -57,8 +57,8 @@ files:
57
57
  - lib/tb/cmd_rename.rb
58
58
  - lib/tb/cmd_shape.rb
59
59
  - lib/tb/cmd_sort.rb
60
- - lib/tb/cmd_svn_log.rb
61
- - lib/tb/cmd_tar_tvf.rb
60
+ - lib/tb/cmd_svn.rb
61
+ - lib/tb/cmd_tar.rb
62
62
  - lib/tb/cmd_to_csv.rb
63
63
  - lib/tb/cmd_to_json.rb
64
64
  - lib/tb/cmd_to_pnm.rb