but 0.1.4 → 0.1.5

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: 693e50dbd8f3e958a71eb3f0a187aa462e2182b1bddb4e83978f1bca5695ef0b
4
- data.tar.gz: a1d7780e97e9e53b3a6fa07b266dc4ceac0cf7326fc2a1d5a5d24446cec3f6d6
3
+ metadata.gz: 46fdad6aef500448ab94aa57873370e26e239b13ff90ec383682719c2c30632b
4
+ data.tar.gz: 89a61e37ac310c3d306b5a4f43332074e906546380ab5e61c1fff4bad45e5481
5
5
  SHA512:
6
- metadata.gz: 9371a46a799d1296bcb9bbc255d09805b72014e34bff7c1f296868506e185232d8dff3056429758d091fe5ba25ead003ffceccf9df3dbffb1b14377b31d06813
7
- data.tar.gz: 2721547f469207c3f84a1aa64fca23a2b2ca7acf6ea9d3cdaf524ee1a0c4ae654fff911e81f604b99a3633a87ac0ffdd5e54205b63e52928c689b3dcf3ecd8ae
6
+ metadata.gz: 102a16ea09f9d5c42d081e712ca8ec61b702f82c90307c7a3bee44fcba5137386e1e9dcecabfe1f22d409c9131685a6609bc5d00829419afec32c8fa80f31a79
7
+ data.tar.gz: c424e206533dc68965a9e7c4adf949f607a669fc17e0e02162e5c8d799eddfde679583ee20c6df4e58bffbe99b73f310aefbd9c6c76115e2e67d0afaaf9e1a36
@@ -1,9 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- but (0.1.4)
4
+ but (0.1.5)
5
5
  colorize
6
6
  ruby-prof
7
+ ruby-progressbar
7
8
  thor
8
9
 
9
10
  GEM
@@ -50,6 +50,7 @@ Gem::Specification.new do |spec|
50
50
  spec.add_dependency 'thor'
51
51
  spec.add_dependency 'colorize'
52
52
  spec.add_dependency 'ruby-prof'
53
+ spec.add_dependency 'ruby-progressbar'
53
54
 
54
55
 
55
56
  spec.metadata = { "source_code_uri" => "https://git.computational.bio.uni-giessen.de/rmueller/bcf_user_tools" }
@@ -1,9 +1,11 @@
1
1
  require 'open3'
2
2
  require 'tempfile'
3
3
  require 'colorize'
4
+ require 'ruby-progressbar'
4
5
 
5
6
  module But
6
7
  module HomeKeeper
8
+ BLOCK_SIZE = 1024
7
9
 
8
10
  def self.info(options = {})
9
11
  file = ENV['BUTHOMEKEEPER'] || create_disk_usage_file(options)
@@ -21,22 +23,68 @@ module But
21
23
  end
22
24
  end
23
25
 
26
+ def self.all_eof(files)
27
+ files.find { |f| !f.eof }.nil?
28
+ end
24
29
 
25
30
  # Q: is $HOME always set?
26
31
  def self.create_disk_usage_file(options = {})
27
32
  tmpfile = ::Tempfile.new("diskusage")
28
33
  dir = options[:dir] || ENV['HOME']
29
- ::Open3.popen3("du","-d 0", dir) do |stdin, stdout, stderr, wait_thr|
30
34
 
31
- if wait_thr.value != 0
32
- STDERR.write "Exitcode: #{wait_thr.value}\n".light_black
33
- STDERR.write stderr.gets(nil).light_black
35
+ total_lines = `ls -d ~/.*/ ~/*/ | wc -l`.to_i
36
+ #puts total_lines
37
+ progressbar = ProgressBar.create(title: "inspecting #{dir}", total: total_lines ,
38
+ :format => "%a %c/%C %b\u{15E7}%i %p%% %t",
39
+ :progress_mark => ' ',
40
+ :remainder_mark => "\u{FF65}",
41
+ )
42
+
43
+ ::Open3.popen3("du","-d 1", dir) do |stdin, stdout, stderr, wait_thr|
44
+ # inspired by from https://gist.github.com/chrisn/7450808
45
+
46
+ stdin.close_write
47
+ begin
48
+ files = [stdout, stderr]
49
+ until all_eof(files) do
50
+ ready = IO.select(files)
51
+ progressbar.refresh
52
+
53
+ if ready
54
+ readable = ready[0]
55
+ readable.each do |f|
56
+ fileno = f.fileno
57
+
58
+ begin
59
+ data = f.read_nonblock(BLOCK_SIZE)
60
+
61
+ #puts "fileno: #{fileno}, data: #{data.inspect}"
62
+ progressbar.progress += data.lines.count
63
+ progressbar.title = "inspecting %s" % data.split(/\s+/).last
64
+ tmpfile.write(data)
65
+ rescue EOFError => e
66
+ puts "fileno: #{fileno} EOF"
67
+ files.delete f
68
+ end
69
+ end
70
+ end
71
+ end
72
+ rescue IOError => e
73
+ puts "IOError: #{e}"
34
74
  end
35
75
 
36
- tmpfile.write(stdout.gets(nil))
76
+
77
+ #if wait_thr.value != 0
78
+ # STDERR.write "Exitcode: #{wait_thr.value}\n".light_black
79
+ # STDERR.write stderr.gets(nil).light_black
80
+ #end
81
+
82
+ #tmpfile.write(stdout.gets(nil))
37
83
  end
84
+ progressbar.finish
38
85
  tmpfile.rewind
39
86
  return tmpfile.path
40
87
  end
88
+
41
89
  end
42
90
  end
@@ -1,3 +1,3 @@
1
1
  module But
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: but
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raphael Müller
@@ -192,6 +192,20 @@ dependencies:
192
192
  - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: ruby-progressbar
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
195
209
  description: BCF admins have a hard live. Their user's don't keep their $HOMES and
196
210
  other working places clean. It appears that some users don't know that they use
197
211
  too much space in their home or don't clean used directories on cluster (or other)