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 +4 -4
- data/Gemfile.lock +2 -1
- data/but.gemspec +1 -0
- data/lib/but/home_keeper.rb +53 -5
- data/lib/but/version.rb +1 -1
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 46fdad6aef500448ab94aa57873370e26e239b13ff90ec383682719c2c30632b
|
4
|
+
data.tar.gz: 89a61e37ac310c3d306b5a4f43332074e906546380ab5e61c1fff4bad45e5481
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 102a16ea09f9d5c42d081e712ca8ec61b702f82c90307c7a3bee44fcba5137386e1e9dcecabfe1f22d409c9131685a6609bc5d00829419afec32c8fa80f31a79
|
7
|
+
data.tar.gz: c424e206533dc68965a9e7c4adf949f607a669fc17e0e02162e5c8d799eddfde679583ee20c6df4e58bffbe99b73f310aefbd9c6c76115e2e67d0afaaf9e1a36
|
data/Gemfile.lock
CHANGED
data/but.gemspec
CHANGED
@@ -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" }
|
data/lib/but/home_keeper.rb
CHANGED
@@ -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
|
-
|
32
|
-
|
33
|
-
|
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
|
-
|
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
|
data/lib/but/version.rb
CHANGED
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
|
+
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)
|