diru 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.rdoc +4 -0
- data/README.rdoc +13 -5
- data/bin/diru +47 -7
- data/lib/version.rb +1 -1
- data/test/golden.log +37 -22
- data/test/test_diru.sh +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4270a80d34a955821dbaa758b659a69c38ea72d
|
4
|
+
data.tar.gz: 20e891d382e3aba4deac68ad5f482d9dcf20282f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7513d88c4fb717def21e88fb28fb305910824095f8c775086b8cf4116909038be704476b36403d69fc384d56c4056e2d0e3edc23e94612d47867a12d00cb3972
|
7
|
+
data.tar.gz: fc809c28767ad797d55d63e4ed7fe4ccbe19bd93d570af90cad94bb5aababdfce7f815af3bc42e067ddaba1b8fea811389a5ceaaa2a8a6874ab94fde86c7ff9c
|
data/CHANGELOG.rdoc
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
= Version history
|
2
2
|
|
3
|
+
[0.0.4] Default matching is glob (fnmatch) based.
|
4
|
+
Separate command for regex based search ('e').
|
5
|
+
Fixed wrong display of paths when Project dir was '/'.
|
6
|
+
|
3
7
|
[0.0.3] Mkdir and rmdir commands, direct server update.
|
4
8
|
|
5
9
|
[0.0.2] Separate refresh for Options File and Project dirs.
|
data/README.rdoc
CHANGED
@@ -28,8 +28,8 @@ Diru features:
|
|
28
28
|
* Support for multiple concurrent Projects.
|
29
29
|
* User and Project specific options (configuration).
|
30
30
|
* Jump to Project root.
|
31
|
-
* Find and jump to dir under Project root (
|
32
|
-
* Find and jump to dir under current dir (
|
31
|
+
* Find and jump to dir under Project root (glob and regex search).
|
32
|
+
* Find and jump to dir under current dir (glob search).
|
33
33
|
* Fast directory search since Server maintains a memory image of
|
34
34
|
directories.
|
35
35
|
* Favorite directories in options (configuration), for permanent
|
@@ -110,7 +110,7 @@ If we want to jump to a subdir called "dir_0_0" (under root), we do:
|
|
110
110
|
|
111
111
|
Note that "dir_0_0" does not have to be directly under Project root,
|
112
112
|
the directory is searched from the complete tree of directories under
|
113
|
-
Project root using
|
113
|
+
Project root using glob (fnmatch) matching.
|
114
114
|
|
115
115
|
Now that we have changed directory for a couple of times, we can look
|
116
116
|
at the directory change history:
|
@@ -131,8 +131,11 @@ info from Server.
|
|
131
131
|
Search commands:
|
132
132
|
|
133
133
|
* "dr r" - change to Project root dir.
|
134
|
-
* "dr r <dir>" - change to <dir> (somewhere) under Project root dir
|
135
|
-
|
134
|
+
* "dr r <dir>" - change to <dir> (somewhere) under Project root dir
|
135
|
+
(glob).
|
136
|
+
* "dr t <dir>" - change to <dir> (somewhere) under current dir (glob).
|
137
|
+
* "dr e <dir>" - change to <dir> (somewhere) under Project root dir
|
138
|
+
(regexp).
|
136
139
|
|
137
140
|
Search can match to multiple directories. First match is used and the
|
138
141
|
rest (Left-overs) are displayed to the user. Left-overs are also
|
@@ -143,6 +146,11 @@ Search pattern can also be constructed from multiple pieces.
|
|
143
146
|
|
144
147
|
shell> dr r dir 1_0_1
|
145
148
|
|
149
|
+
The pieces are joined with '*' for glob (fnmatch) based searches and
|
150
|
+
with '.*' for regexp based searches. Glob based searches are
|
151
|
+
additionally prefixed with '*' and postfixed with '*', since glob does
|
152
|
+
not automatically match to the middle of the string, however regexp does.
|
153
|
+
|
146
154
|
See "dr i" for alternatives for single letter commands. For example
|
147
155
|
"r" can be replaced with "/".
|
148
156
|
|
data/bin/diru
CHANGED
@@ -189,6 +189,11 @@ class Search
|
|
189
189
|
|
190
190
|
# Server root.
|
191
191
|
@root = root
|
192
|
+
if @root == '/'
|
193
|
+
@rootpart = ''
|
194
|
+
else
|
195
|
+
@rootpart = @root
|
196
|
+
end
|
192
197
|
|
193
198
|
# Change directory to DIRU root.
|
194
199
|
Dir.chdir( @root )
|
@@ -238,6 +243,7 @@ class Search
|
|
238
243
|
@datalock = Mutex.new
|
239
244
|
@optslock = Mutex.new
|
240
245
|
|
246
|
+
|
241
247
|
# Initial data update.
|
242
248
|
update_conf
|
243
249
|
update_data
|
@@ -334,7 +340,7 @@ class Search
|
|
334
340
|
|
335
341
|
# Get (and update) favorite.
|
336
342
|
def gfav( tag )
|
337
|
-
"#{@
|
343
|
+
"#{@rootpart}/#{@fav[ tag ]}"
|
338
344
|
end
|
339
345
|
|
340
346
|
|
@@ -397,7 +403,7 @@ class Search
|
|
397
403
|
if path == @root
|
398
404
|
''
|
399
405
|
else
|
400
|
-
rem = "#{@
|
406
|
+
rem = "#{@rootpart}/"
|
401
407
|
rel = path.dup
|
402
408
|
rel[rem] = ''
|
403
409
|
rel
|
@@ -405,10 +411,41 @@ class Search
|
|
405
411
|
end
|
406
412
|
|
407
413
|
|
408
|
-
# Match dir/pattern from DB.
|
414
|
+
# Match dir/pattern with glob (fnmatch) from DB.
|
409
415
|
def match( dir, pattern )
|
410
416
|
list = []
|
411
417
|
|
418
|
+
if dir
|
419
|
+
begin
|
420
|
+
dir = abs2rel( dir )
|
421
|
+
rescue
|
422
|
+
return []
|
423
|
+
end
|
424
|
+
r = dir + '*' + pattern
|
425
|
+
else
|
426
|
+
r = pattern
|
427
|
+
end
|
428
|
+
|
429
|
+
@datalock.synchronize do
|
430
|
+
@data.each do |i|
|
431
|
+
if File.fnmatch( r, i )
|
432
|
+
list.push "#{@rootpart}/#{i}"
|
433
|
+
end
|
434
|
+
end
|
435
|
+
end
|
436
|
+
|
437
|
+
# Update old list.
|
438
|
+
@old = list.rotate
|
439
|
+
|
440
|
+
list
|
441
|
+
end
|
442
|
+
|
443
|
+
|
444
|
+
|
445
|
+
# Match dir/pattern with regex from DB.
|
446
|
+
def rematch( dir, pattern )
|
447
|
+
list = []
|
448
|
+
|
412
449
|
if dir
|
413
450
|
begin
|
414
451
|
dir = abs2rel( dir )
|
@@ -423,7 +460,7 @@ class Search
|
|
423
460
|
@datalock.synchronize do
|
424
461
|
@data.each do |i|
|
425
462
|
if i.match( r )
|
426
|
-
list.push "#{@
|
463
|
+
list.push "#{@rootpart}/#{i}"
|
427
464
|
end
|
428
465
|
end
|
429
466
|
end
|
@@ -914,7 +951,7 @@ class Client
|
|
914
951
|
cmd = input[0]
|
915
952
|
arg = input[1..-1]
|
916
953
|
|
917
|
-
# Shell
|
954
|
+
# Shell special chars to avoid:
|
918
955
|
# * ? [ ] ' " \ $ ; & ( ) | ^ < >
|
919
956
|
|
920
957
|
# Thus allowed:
|
@@ -929,10 +966,12 @@ class Client
|
|
929
966
|
if arg.empty?
|
930
967
|
disp @search.root
|
931
968
|
else
|
932
|
-
disp @search.match( nil, arg.join('
|
969
|
+
disp @search.match( nil, "*"+arg.join('*')+"*" )
|
933
970
|
end
|
934
971
|
|
935
|
-
when ':', 't'; disp @search.match( Dir.pwd, arg.join('
|
972
|
+
when ':', 't'; disp @search.match( Dir.pwd, "*"+arg.join('*')+"*" )
|
973
|
+
|
974
|
+
when 'e'; disp @search.rematch( nil, arg.join('.*') )
|
936
975
|
|
937
976
|
when '.', 'b';
|
938
977
|
if arg[0] == nil
|
@@ -1094,6 +1133,7 @@ class Client
|
|
1094
1133
|
STDERR.puts "
|
1095
1134
|
r / - search from root (or to root)
|
1096
1135
|
t : - search from this (current)
|
1136
|
+
e - search from root (with regexp)
|
1097
1137
|
b . - bookmark access
|
1098
1138
|
h , - history access
|
1099
1139
|
s _ - scratch pad access
|
data/lib/version.rb
CHANGED
data/test/golden.log
CHANGED
@@ -31,7 +31,19 @@
|
|
31
31
|
1: /home/tero/prog/gem/diru/test/dir_1/dir_1_1
|
32
32
|
0: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
|
33
33
|
/home/tero/prog/gem/diru/test
|
34
|
-
/home/tero/prog/gem/diru/test
|
34
|
+
/home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_1
|
35
|
+
/home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_2
|
36
|
+
/home/tero/prog/gem/diru/test/dir_1/dir_1_2/dir_1_2_0
|
37
|
+
/home/tero/prog/gem/diru/test/dir_1/dir_1_2/dir_1_2_1
|
38
|
+
/home/tero/prog/gem/diru/test/dir_1/dir_1_2/dir_1_2_2
|
39
|
+
/home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_0
|
40
|
+
/home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_1
|
41
|
+
/home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_2
|
42
|
+
/home/tero/prog/gem/diru/test/dir_1/dir_1_2/dir_1_2_0
|
43
|
+
/home/tero/prog/gem/diru/test/dir_1/dir_1_2/dir_1_2_1
|
44
|
+
/home/tero/prog/gem/diru/test/dir_1/dir_1_2/dir_1_2_2
|
45
|
+
/home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_0
|
46
|
+
/home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_0
|
35
47
|
/home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
|
36
48
|
/home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
|
37
49
|
/home/tero/prog/gem/diru/test/dir_0/dir_0_0
|
@@ -105,13 +117,14 @@
|
|
105
117
|
0: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
|
106
118
|
/home/tero/prog/gem/diru/test
|
107
119
|
/home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
120
|
+
13: /home/tero/prog/gem/diru/test
|
121
|
+
12: /home/tero/prog/gem/diru/test/dir_0/dir_0_4/dir_0_4_0
|
122
|
+
11: /home/tero/prog/gem/diru/test/dir_1
|
123
|
+
10: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_0
|
124
|
+
9: /home/tero/prog/gem/diru/test/dir_1/dir_1_1
|
125
|
+
8: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
|
126
|
+
7: /home/tero/prog/gem/diru/test
|
127
|
+
6: /home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_0
|
115
128
|
5: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
|
116
129
|
4: /home/tero/prog/gem/diru/test/dir_0
|
117
130
|
3: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
|
@@ -143,13 +156,14 @@ f dir_0/dir_0_4/dir_0_4_0
|
|
143
156
|
g dir_1/dir_1_2
|
144
157
|
/home/tero/prog/gem/diru/test/dir_0/dir_0_1/dir_0_1_1
|
145
158
|
/home/tero/prog/gem/diru/test/dir_0/dir_0_4/dir_0_4_0
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
159
|
+
27: /home/tero/prog/gem/diru/test
|
160
|
+
26: /home/tero/prog/gem/diru/test/dir_0/dir_0_4/dir_0_4_0
|
161
|
+
25: /home/tero/prog/gem/diru/test/dir_1
|
162
|
+
24: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_0
|
163
|
+
23: /home/tero/prog/gem/diru/test/dir_1/dir_1_1
|
164
|
+
22: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
|
165
|
+
21: /home/tero/prog/gem/diru/test
|
166
|
+
20: /home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_0
|
153
167
|
19: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
|
154
168
|
18: /home/tero/prog/gem/diru/test/dir_0
|
155
169
|
17: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
|
@@ -192,13 +206,14 @@ g dir_1/dir_1_2
|
|
192
206
|
/home/tero/prog/gem/diru/test/dir_0/dir_0_1/dir_0_1_0
|
193
207
|
/home/tero/prog/gem/diru/test/dir_0/dir_0_1/dir_0_1_1
|
194
208
|
/home/tero/prog/gem/diru/test/dir_0/dir_0_1/dir_0_1_2
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
209
|
+
32: /home/tero/prog/gem/diru/test
|
210
|
+
31: /home/tero/prog/gem/diru/test/dir_0/dir_0_4/dir_0_4_0
|
211
|
+
30: /home/tero/prog/gem/diru/test/dir_1
|
212
|
+
29: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_0
|
213
|
+
28: /home/tero/prog/gem/diru/test/dir_1/dir_1_1
|
214
|
+
27: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
|
215
|
+
26: /home/tero/prog/gem/diru/test
|
216
|
+
25: /home/tero/prog/gem/diru/test/dir_0/dir_0_2/dir_0_2_0
|
202
217
|
24: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
|
203
218
|
23: /home/tero/prog/gem/diru/test/dir_0
|
204
219
|
22: /home/tero/prog/gem/diru/test/dir_1/dir_1_1/dir_1_1_2
|
data/test/test_diru.sh
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: diru
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tero Isannainen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: como
|