diru 0.0.3 → 0.0.4
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.
- 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
|