rbfind 2.8 → 2.8.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/bin/rbfind +8 -11
  3. data/lib/rbfind/table.rb +7 -1
  4. data/lib/rbfind.rb +29 -13
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 530e1d61cf675c858a06f62e62cbfe5cfa7b1492ec1ef9c77e293f7f0bb0b83d
4
- data.tar.gz: '004834c6e324c296e0b4185910c8a1a70179ef90fbaeee0b262a8816d8e762af'
3
+ metadata.gz: c48f9b56403a1985bc80039a8f3cecf636cd4613cb641e9a3708e65bc5790500
4
+ data.tar.gz: 77dd4d10810a8c1492460a118d67d5d82951306146ef9db516ef0eb929fdf4cf
5
5
  SHA512:
6
- metadata.gz: e6b7d8ce6bd4d81824705b4dd311383888ff6fa02dc0a6fc94c7b307432fd7cc1b17643b75a53e7917796def4c91fd6f7243424778c64ab9d1932b5575852e04
7
- data.tar.gz: eb837f165e31d40ed2323bbcdf2344adf32a113d1520d6dbb83c844d17f4487b44adfe997189e17734b413c368a93a71e6053a0ae697212652bd2ab578e1a620
6
+ metadata.gz: 8333d71ff3fc7158418d54a3ce117b08b9459abe189ebdc2c5fa2ed66fe7b34baed1ec6ef0e7b624cbf3404c5637bbc6aa7f1a2e6c8583772e2883dfb738c8ef
7
+ data.tar.gz: 7b3eda841f6ca23bc21b3f5a5c48fb2ce7c4c0065fac58e9c8cd630cd94bb8da6ee029af17a4456d67339fa41b90bcd4b32b6107e2dd192c8e4fd0a8990b7b74
data/bin/rbfind CHANGED
@@ -31,8 +31,8 @@ module RbFind
31
31
  [ %w(--bw -w), nil, "black and white on -p or default output"],
32
32
  [ %w(--colored -c), nil, "force color on -p or default output"],
33
33
  [ %w(--depth -d), nil, "yield directory after its contents"],
34
- [ %w(--maxdepth -m), :num, "maxium step depth"],
35
- [ %w(--anydepth -M), nil, "no maxium step depth"],
34
+ [ %w(--maxdepth -m), :num, "maxium step depth (0 = any)"],
35
+ [ %w(--argsdepth -A), nil, "args have depth 1 (not 0)"],
36
36
  [ %w(--follow -y), nil, "follow symbolic links"],
37
37
  [ %w(--nosort -U), nil, "unsorted"],
38
38
  [ %w(--sort-by -s), :str, "sort expression"],
@@ -85,15 +85,15 @@ module RbFind
85
85
  when '--bw' then @color = false
86
86
  when '--colored' then @color = true
87
87
  when '--depth' then @params[ :depth_first] = true
88
- when '--maxdepth' then @params[ :max_depth] = arg.to_i
89
- when '--anydepth' then @params[ :max_depth] = nil
88
+ when '--maxdepth' then @params[ :max_depth] = arg.to_i.nonzero?
89
+ when '--argsdepth' then @params[ :args_depth] = true
90
90
  when '--follow' then @params[ :follow] = true
91
91
  when '--nosort' then @params[ :sort] = false
92
92
  when '--sort-by' then @params[ :sort] = instance_eval "proc { #{arg} }"
93
93
  when '--time' then @params[ :sort] = proc { mtime } ; @params[ :reverse] = true
94
94
  when '--size' then @params[ :sort] = proc { size } ; @params[ :reverse] = true
95
95
  when '--dirs' then @params[ :dirs] = true
96
- when '--reverse' then @params[ :reverse] = true
96
+ when '--reverse' then @params[ :reverse] = !@params[ :reverse]
97
97
  when '--require' then require arg
98
98
  when '--puts-path' then @puts = true
99
99
  when '--ls-l' then @puts = :ls ; @wds = 6 ; @wd = 6
@@ -240,10 +240,10 @@ module RbFind
240
240
  "--" stops option processing.
241
241
 
242
242
  The last argument is a block that will be executed on every found
243
- file object. It may be omitted; then "puts path" is assumed or "cpath"
244
- in case the output is a terminal.
243
+ file object. It may be omitted; then "puts path" is assumed, or
244
+ "puts cpath" in case the output is a terminal.
245
245
 
246
- Default sort order is alphabetical.
246
+ Default sort order is by name.
247
247
  EOT
248
248
  end
249
249
 
@@ -358,9 +358,6 @@ module RbFind
358
358
  error_handle do
359
359
  eval @blkbegin if @blkbegin
360
360
  b = @block
361
- if not @args.empty? and @params[ :max_depth] then
362
- @params[ :max_depth] -= 1
363
- end
364
361
  Walk.run *@args, **@params do instance_eval b end
365
362
  eval @blkend if @blkend
366
363
  end
data/lib/rbfind/table.rb CHANGED
@@ -95,7 +95,13 @@ module RbFind
95
95
  def calc_widths
96
96
  w = @heads.map { 0 }
97
97
  @rows.each { |r|
98
- w = (w.zip r).map { |i,c| j = c.length ; j > i ? j : i }
98
+ w = (w.zip r).map { |i,c|
99
+ if c then
100
+ j = c.length
101
+ i = j if j > i
102
+ end
103
+ i
104
+ }
99
105
  }
100
106
  w
101
107
  end
data/lib/rbfind.rb CHANGED
@@ -8,7 +8,7 @@ require "rbfind/csv"
8
8
 
9
9
  module RbFind
10
10
 
11
- VERSION = "2.8".freeze
11
+ VERSION = "2.8.4".freeze
12
12
 
13
13
  =begin rdoc
14
14
 
@@ -270,12 +270,12 @@ Sort without case sensitivity and preceding dot:
270
270
 
271
271
  private
272
272
 
273
- Params = Struct.new :max_depth, :depth_first, :follow,
273
+ Params = Struct.new :max_depth, :args_depth, :depth_first, :follow,
274
274
  :sort, :dirs, :reverse, :error, :block
275
275
 
276
- def initialize max_depth: nil, depth_first: nil, follow: nil,
276
+ def initialize max_depth: nil, args_depth: false, depth_first: nil, follow: nil,
277
277
  sort: true, dirs: false, reverse: false, error: nil, &block
278
- @params = Params.new max_depth, depth_first, follow,
278
+ @params = Params.new max_depth, args_depth, depth_first, follow,
279
279
  (sort_parser sort), dirs, reverse, error, block
280
280
  @start = Time.instance_eval { @start = Time.now }
281
281
  Time.instance_eval { @start = Time.now }
@@ -299,10 +299,12 @@ Sort without case sensitivity and preceding dot:
299
299
  if args.empty? then
300
300
  visit_dir Dir::CUR_DIR
301
301
  else
302
- args.each { |base|
303
- e = Entry.new base, self
304
- enter e if handle_error do e.stat end
305
- }
302
+ list = args.map { |base| Entry.new base, self }
303
+ list.select! { |e| handle_error do e.stat end }
304
+ sort_entries list
305
+ step_depth_args do
306
+ list.each { |e| enter e }
307
+ end
306
308
  end
307
309
  end
308
310
 
@@ -319,6 +321,16 @@ Sort without case sensitivity and preceding dot:
319
321
  @depth -= 1
320
322
  end
321
323
 
324
+ def step_depth_args
325
+ if @params[ :args_depth] then
326
+ step_depth do
327
+ yield
328
+ end
329
+ else
330
+ yield
331
+ end
332
+ end
333
+
322
334
  def enter elem
323
335
  c_, @current = @current, elem
324
336
  @count += 1
@@ -343,18 +355,22 @@ Sort without case sensitivity and preceding dot:
343
355
  end
344
356
 
345
357
  def visit_dir dir
346
- return if @params.max_depth and @params.max_depth == @depth
358
+ return if @params.max_depth and @params.max_depth <= @depth
347
359
  list = (Dir.new dir).children.map { |f| Entry.new f, self }
360
+ sort_entries list
361
+ step_depth do
362
+ list.each { |e| enter e }
363
+ end
364
+ end
365
+
366
+ def sort_entries list
348
367
  @params.sort.call list
349
368
  list.reverse! if @params.reverse
350
369
  if @params.dirs then
351
- list = list.partition { |e| e.rstat.directory? rescue nil }
370
+ list.replace list.partition { |e| e.rstat.directory? rescue nil }
352
371
  list.reverse! if @params.depth_first
353
372
  list.flatten!
354
373
  end
355
- step_depth do
356
- list.each { |e| enter e }
357
- end
358
374
  end
359
375
 
360
376
  def enter_dir
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbfind
3
3
  version: !ruby/object:Gem::Version
4
- version: '2.8'
4
+ version: 2.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bertram Scharpf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-15 00:00:00.000000000 Z
11
+ date: 2022-02-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  A replacement for the standard UNIX command find.