rbbt-util 5.26.72 → 5.26.73

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 48218a636227053649451600d1225572ad96f01ed39d67fbf42a1f8f8c7c7c77
4
- data.tar.gz: 612183134de313b8a3dd986faf314d2593ce95c7a2c17d8146d5cdf6eb5b5ff9
3
+ metadata.gz: bb3feb1e58b84ace085492fd7084cc1f86bb60544c9d25a1cc069a5217db9c27
4
+ data.tar.gz: 57863cf771d3ad64f651180e27f28ef4f6c88ea6a478d049e0a98d2acd717677
5
5
  SHA512:
6
- metadata.gz: de75682521e5fa1ada0d0f1e3fca19bd20ad6d877abe1a070c6244e7de6a22d7f2564d89308b9a27a7a0de7ab150f4aa58566f78a4bbe89c3fdcd695e262998c
7
- data.tar.gz: 017f12231eaf26f807b00a5317f656b2694f70c9cf38cc4044648abdd313c2083124cd49120fb08550700d297d7807fb4a26defc69aa55c4143fd2c23fcc3c87
6
+ metadata.gz: 56ae37215ec051636f1077815587e1cc7d2cd47ecf853a062c2a13f15ae9583e6cb43f6c222ee90f2a5e662d149967e53d1a63e79ab2b46803446e2c2ef7fd80
7
+ data.tar.gz: 25df8edcc598354c7f1e1311ab90b4545ba3f8ca76d70cd6f5f8f35df0ce727db9842294de443a855d25a84d799e529140fd848e22779f68cb521c22e64fc01b
@@ -51,11 +51,13 @@ module Path
51
51
 
52
52
  def join(name)
53
53
  raise "Invalid path: #{ self }" if self.nil?
54
- if self.empty?
55
- self.annotate name.to_s.dup
56
- else
57
- self.annotate File.join(self, name.to_s)
58
- end
54
+ new = if self.empty?
55
+ self.annotate name.to_s.dup
56
+ else
57
+ self.annotate File.join(self, name.to_s)
58
+ end
59
+ new.original = File.join(self.original, name.to_s) if self.original
60
+ new
59
61
  end
60
62
 
61
63
  def dirname
@@ -72,9 +74,37 @@ module Path
72
74
  self.glob_all
73
75
  else
74
76
  return [] unless self.exists?
75
- exp = File.join(self.find, pattern)
76
- Dir.glob(exp).collect{|f| Path.setup(f, self.resource, self.pkgdir)}
77
+ found = self.find
78
+ exp = File.join(found, pattern)
79
+ paths = Dir.glob(exp).collect{|f| Path.setup(f, self.resource, self.pkgdir)}
80
+
81
+ paths.each do |p|
82
+ p.original = File.join(found.original, p.sub(/^#{found}/, ''))
83
+ end
84
+
85
+ paths
86
+ end
87
+ end
88
+
89
+ def glob_all(pattern = nil, caller_lib = nil, search_paths = nil)
90
+ search_paths ||= @search_paths || SEARCH_PATHS
91
+ search_paths = search_paths.dup
92
+
93
+ location_paths = {}
94
+ search_paths.keys.collect do |where|
95
+ found = find(where, Path.caller_lib_dir, search_paths)
96
+ paths = pattern ? Dir.glob(File.join(found, pattern)) : Dir.glob(found)
97
+
98
+ paths.each do |p|
99
+ self.annotate p
100
+ p.original = File.join(found.original, p.sub(/^#{found}/, ''))
101
+ end
102
+
103
+ location_paths[where] = paths
77
104
  end
105
+
106
+ #location_paths.values.compact.flatten.collect{|file| File.expand_path(file) }.uniq.collect{|path| Path.setup(path, self.resource, self.pkgdir)}
107
+ location_paths.values.compact.flatten.uniq
78
108
  end
79
109
 
80
110
  def [](name, orig = false)
@@ -232,14 +262,6 @@ module Path
232
262
  compact.select{|file| file.exists? }.uniq
233
263
  end
234
264
 
235
- def glob_all(pattern = nil, caller_lib = nil, search_paths = nil)
236
- search_paths ||= @search_paths || SEARCH_PATHS
237
- search_paths = search_paths.dup
238
-
239
- search_paths.keys.
240
- collect{|where| pattern ? Dir.glob(File.join(find(where, Path.caller_lib_dir, search_paths), pattern)) : Dir.glob(find(where, Path.caller_lib_dir, search_paths)) }.
241
- compact.flatten.collect{|file| File.expand_path(file)}.uniq.collect{|path| Path.setup(path, self.resource, self.pkgdir)}
242
- end
243
265
  #{{{ Methods
244
266
 
245
267
  def in_dir?(dir)
data/lib/rbbt/util/cmd.rb CHANGED
@@ -1,9 +1,40 @@
1
1
  require 'rbbt/util/log'
2
2
  require 'stringio'
3
3
  require 'open3'
4
+ require 'rbbt/util/misc/indiferent_hash'
4
5
 
5
6
  module CMD
6
7
 
8
+ TOOLS = IndiferentHash.setup({})
9
+ def self.tool(tool, claim = nil, test = nil, &block)
10
+ TOOLS[tool] = [claim, test, block]
11
+ end
12
+
13
+ def self.get_tool(tool)
14
+ return tool.to_s unless TOOLS[tool]
15
+
16
+ @@init_cmd_tool ||= IndiferentHash.setup({})
17
+ if !@@init_cmd_tool[tool]
18
+ claim, test, block = TOOLS[tool]
19
+ begin
20
+ if test
21
+ CMD.cmd(test)
22
+ else
23
+ CMD.cmd("#{cmd} --help")
24
+ end
25
+ rescue
26
+ if claim
27
+ claim.produce
28
+ else
29
+ block.call
30
+ end
31
+ end
32
+ @@init_cmd_tool[tool] = true
33
+ end
34
+
35
+ tool.to_s
36
+ end
37
+
7
38
  def self.gzip_pipe(file)
8
39
  Open.gzip?(file) ? "<(gunzip -c '#{file}')" : "'#{file}'"
9
40
  end
@@ -39,7 +70,9 @@ module CMD
39
70
  string.strip
40
71
  end
41
72
 
42
- def self.cmd(cmd, options = {}, &block)
73
+ def self.cmd(tool, cmd = nil, options = {}, &block)
74
+ options, cmd = cmd, nil if Hash === cmd
75
+
43
76
  options = Misc.add_defaults options, :stderr => Log::DEBUG
44
77
  in_content = options.delete(:in)
45
78
  stderr = options.delete(:stderr)
@@ -52,6 +85,18 @@ module CMD
52
85
  dont_close_in = options.delete(:dont_close_in)
53
86
 
54
87
  log = true if log.nil?
88
+
89
+ if cmd.nil? and ! Symbol === tool
90
+ cmd = tool
91
+ else
92
+ tool = get_tool(tool)
93
+ if cmd.nil?
94
+ cmd = tool
95
+ else
96
+ cmd = tool + ' ' + cmd
97
+ end
98
+
99
+ end
55
100
 
56
101
  if stderr == true
57
102
  stderr = Log::HIGH
@@ -170,4 +215,5 @@ module CMD
170
215
 
171
216
  nil
172
217
  end
218
+
173
219
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.26.72
4
+ version: 5.26.73
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-06 00:00:00.000000000 Z
11
+ date: 2019-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake