exedb 0.2.3 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 921bf48af155069a43bd8f50707a144f1a2501b7
4
- data.tar.gz: 3bb71a327b6ef83e40495f5f6b6e0781d4f7d095
3
+ metadata.gz: 3a2b5ff6b9726798cbba0e04538f9b8e1b9bc3e2
4
+ data.tar.gz: 96b44c2dba5858cdfa11288b0fd61813235103a1
5
5
  SHA512:
6
- metadata.gz: d722b3968b6654d211180277070871dc631b9a3f814c889151785021b1a3584da9e3767a178280a0f99eded7c09a4189dd0f06f7241f11c3e50e529b94e979ae
7
- data.tar.gz: c2513f1e53c6b06325c0ea1b0f2371ec306ee09ea26e5248f1abc098a0926cdc2eca56d26dd6050398b1c161f4105820820a8c03f6f377fa8808bd1c14d2a8a8
6
+ metadata.gz: 7bacc3f2574045104054648091f6511853844eb48f4ddbd9eac6c310625d0d17803ff243ef640badfbe6bf6db2fb6c5d72d88cbb3d1c374fb3dfbba2f0fdc316
7
+ data.tar.gz: 7cc175baacd4b7b108eb2d00da578f5cc1ccf4106b590508513fdbf0c37069c27ed368f641d1b80648e404052809b3f13d8482a23a14e1ab9ccd3efc3f24c72c
data/lib/exedb.rb CHANGED
@@ -16,13 +16,36 @@ require 'time'
16
16
  #
17
17
  # Exit code is available via 'code' method
18
18
  #
19
+ # Example:
20
+ # d=Exedb.new("ls -la .")
21
+ # d.cache_timeout=5 # 5 seconds for cache expire
22
+ # list=d.get # execute 'ls' and get list of files
23
+ # list=d.get # just get list again (cached)
24
+ # sleep 5
25
+ # list=d.get # execute 'ls' again and get result
26
+ # list=d.update # force 'ls' execution!
27
+ # d.line_transform {|l|
28
+ # if l =~ /^d.*(\S+)$/
29
+ # return "DIR: $1" # not correct, do not use in production :)
30
+ # elsif l =~ /^-.*(\S+)$/
31
+ # return "FILE: $1" # just transform example
32
+ # else
33
+ # return nil # skip this line
34
+ # end
35
+ # }
36
+ # d.update # get list of directories and files in special format
37
+ #
19
38
  class Exedb
20
39
 
21
40
  SLEEP_TIME=1
22
41
  DEF_DIR='/tmp/Exedb'
23
42
  DEF_CACHE_TIMEOUT=60
24
43
 
25
- attr_accessor :cache_timeout, :cache_dir
44
+ # directory for cache files
45
+ attr_accessor :cache_dir
46
+ # default cache timeout
47
+ attr_accessor :cache_timeout
48
+ # last cache update time
26
49
  attr_reader :update_time
27
50
 
28
51
  # Constructor
@@ -92,6 +115,10 @@ class Exedb
92
115
  # transform each line in command output
93
116
  # if nil is returned, line is skipped
94
117
  #
118
+ # Example:
119
+ # @d.line_transform {|str|
120
+ # str.downcase
121
+ # }
95
122
  def line_transform(&block)
96
123
  if block
97
124
  obj = Object.new
@@ -114,6 +141,10 @@ class Exedb
114
141
  # block is called with parameters: content, return code
115
142
  # returned content replaces original output
116
143
  #
144
+ # Example:
145
+ # @d.all_transform {|str,code|
146
+ # "Total: #{str.lines.count} lines\nExit code: #{code}"
147
+ # }
117
148
  def all_transform(&block)
118
149
  if block
119
150
  obj = Object.new
@@ -124,6 +155,9 @@ class Exedb
124
155
  end
125
156
  end
126
157
 
158
+ #
159
+ # cancel transformation of full output
160
+ #
127
161
  def no_all_transform
128
162
  @alltransform=nil
129
163
  end
@@ -175,9 +209,9 @@ class Exedb
175
209
 
176
210
  #
177
211
  # Returns symbol of cache state:
178
- # - updated = actual
179
- # - need_update = new command execution needed
180
- # - need_reread = just cache file reread is neede
212
+ # - :updated = actual
213
+ # - :need_update = new command execution needed
214
+ # - :need_reread = just cache file reread is neede
181
215
  #
182
216
  def cache_state
183
217
  if File.exists? @path
@@ -217,14 +251,14 @@ protected
217
251
  f=u.tr('^qwertyuiopasdfghjklzxcvbnm_-','')
218
252
  d=Digest::SHA256.hexdigest(u)
219
253
  return f[0,60]+'..'+f[-60,60]+d if f.size>128
220
- # return f+d
254
+ return f+d
221
255
  end
222
256
 
223
257
  def read_cache
224
258
  File.open(@path, File::RDONLY) { |file|
225
259
  file.flock(File::LOCK_EX)
226
260
  @content=file.read
227
- warn "CACHE READ: #{@content}"
261
+ # warn "CACHE READ: #{@content}"
228
262
  begin
229
263
  File.open("#{@path}.code", File::RDONLY) { |code_file|
230
264
  c=code_file.gets
data/lib/exedb/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Exedb
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.4"
3
3
  end
data/spec/exedb_spec.rb CHANGED
@@ -2,6 +2,7 @@ require 'minitest/autorun'
2
2
  require "exedb"
3
3
 
4
4
  TEST_DIR='/tmp/exedb_test'
5
+ TEST_CACHE_DIR='/tmp/exedb_test_cache'
5
6
  TEST_FILE='abc_file'
6
7
  TEST_FILE2='efg_file'
7
8
 
@@ -11,6 +12,7 @@ describe Exedb do
11
12
  FileUtils.rm_rf Exedb::DEF_DIR
12
13
 
13
14
  @db=Exedb.new
15
+ @db.cache_dir=TEST_CACHE_DIR
14
16
  FileUtils.rm_rf TEST_DIR
15
17
  Dir.mkdir TEST_DIR
16
18
  File.open(File.join(TEST_DIR,TEST_FILE), "w") { |io| io.puts "ok" }
@@ -46,6 +48,7 @@ describe Exedb do
46
48
  describe 'parallel istances' do
47
49
  before do
48
50
  @db2=Exedb.new
51
+ @db2.cache_dir=TEST_CACHE_DIR
49
52
  @db2.update_method="sleep 1;ls -la #{TEST_DIR}"
50
53
  @db.update
51
54
  end
@@ -84,6 +87,8 @@ describe Exedb do
84
87
  it 'must read cached value' do
85
88
  @db=Exedb.new('x=`cat /tmp/mytestcode`; echo ">>$x<<"; exit $x')
86
89
  @db2=Exedb.new('x=`cat /tmp/mytestcode`; echo ">>$x<<"; exit $x')
90
+ @db.cache_dir=TEST_CACHE_DIR
91
+ @db2.cache_dir=TEST_CACHE_DIR
87
92
  File.open("/tmp/mytestcode",'w'){|f| f.puts '1'}
88
93
  @db.code
89
94
  File.open("/tmp/mytestcode",'w'){|f| f.puts '2'}
@@ -98,6 +103,8 @@ describe Exedb do
98
103
  CMD4='for i in 1 2 3 4; do echo x; sleep 1; done'
99
104
  @db=Exedb.new(CMD4)
100
105
  @db2=Exedb.new(CMD4)
106
+ @db.cache_dir=TEST_CACHE_DIR
107
+ @db2.cache_dir=TEST_CACHE_DIR
101
108
  t=Thread.new {
102
109
  @db.get
103
110
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exedb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Zhumatiy