storazzo 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +7 -4
  3. data/Makefile +20 -1
  4. data/README.md +23 -0
  5. data/Rakefile +35 -8
  6. data/VERSION +1 -1
  7. data/bin/hello-storazzo +5 -0
  8. data/bin/ricdisk-magic +50 -57
  9. data/bin/stats-with-md5 +268 -297
  10. data/lib/storazzo/colors.rb +43 -45
  11. data/lib/storazzo/common.rb +80 -17
  12. data/lib/storazzo/debug.rb +5 -8
  13. data/lib/storazzo/hashify.rb +44 -43
  14. data/lib/storazzo/main.rb +44 -40
  15. data/lib/storazzo/media/abstract_ric_disk.rb +163 -104
  16. data/lib/storazzo/media/gcs_bucket.rb +51 -15
  17. data/lib/storazzo/media/local_folder.rb +43 -46
  18. data/lib/storazzo/media/mount_point.rb +12 -2
  19. data/lib/storazzo/ric_disk.rb +223 -251
  20. data/lib/storazzo/ric_disk_config.rb +230 -193
  21. data/lib/storazzo/ric_disk_sample_config.rb +12 -16
  22. data/lib/storazzo/ric_disk_statsfile.rb +17 -16
  23. data/lib/storazzo/ric_disk_ugly.rb +35 -38
  24. data/lib/storazzo/version.rb +7 -7
  25. data/lib/storazzo.rb +34 -29
  26. data/storazzo.gemspec +22 -20
  27. data/test/media/test_abstract_ric_disk.rb +19 -0
  28. data/test/media/test_gcs_bucket.rb +58 -0
  29. data/test/media/test_local_folder.rb +145 -0
  30. data/test/media/test_mount_point.rb +25 -0
  31. data/test/test_ric_disk.rb +16 -0
  32. data/test/test_ric_disk_config.rb +20 -29
  33. data/test/test_ric_disk_stats_file.rb +13 -14
  34. data/test/test_storazzo.rb +26 -26
  35. data/var/dumps/file_stat.linux.yaml +15 -0
  36. data/var/dumps/file_stat.macosx.yaml +15 -0
  37. data/var/test/disks/disk02-full/Rakefile +13 -0
  38. data/var/test/disks/ricdisk_stats_v11.rds +11 -0
  39. metadata +38 -10
  40. data/test/test_gcs_bucket.rb +0 -70
  41. data/test/test_local_folder.rb +0 -121
@@ -1,51 +1,49 @@
1
1
  # Use EXTEND vs INCLUDE and magically the Class will inherit instead of instance. Magical! :)
2
2
  # http://www.railstips.org/blog/archives/2009/05/15/include-vs-extend-in-ruby/
3
- #
4
- # include Storazzo::Colors
5
- # extend Storazzo::Colors
6
- #
3
+ #
4
+ # include Storazzo::Colors
5
+ # extend Storazzo::Colors
6
+ #
7
7
 
8
- module Storazzo
9
- # needs to be defined before
10
- end
8
+ module Storazzo
9
+ # needs to be defined before
10
+ end
11
11
 
12
12
  module Storazzo::Colors
13
-
14
- PREPEND_ME = "[Storazzo::Colors] "
15
-
16
-
17
- def deb2(s); puts "#DEB_OBSOLETE #{gray(s)} [include Storazzo::Common instead]" if $DEBUG; end # Use the Common instead
18
-
19
- # colors 16
20
- def yellow(s) "\033[1;33m#{s}\033[0m" ; end
21
- def gray(s) "\033[1;30m#{s}\033[0m" ; end
22
- def green(s) "\033[1;32m#{s}\033[0m" ; end
23
- def red(s) "\033[1;31m#{s}\033[0m" ; end
24
- def blue(s) "\033[1;34m#{s}\033[0m" ; end
25
- def purple(s) "\033[1;35m#{s}\033[0m" ; end
26
- def azure(s) "\033[1;36m#{s}\033[0m" ; end
27
- def white(s) "\033[1;37m#{s}\033[0m" ; end
28
-
29
- # colors 64k
30
- def orange(s) "\033[38;5;208m#{s}\033[0m" ; end
31
-
32
- # i dont undertstand why i need self :/
33
- # SELF version because I'm just stupid or lazy or both.
34
- # def self.yellow(s) "#{PREPEND_ME}\033[1;33m#{s}\033[0m" ; end
35
- # def self.green(s) "#{PREPEND_ME}\033[1;32m#{s}\033[0m" ; end
36
- # def self.gray(s) "#{PREPEND_ME}\033[1;30m#{s}\033[0m" ; end
37
- # def self.green(s) "#{PREPEND_ME}\033[1;32m#{s}\033[0m" ; end
38
- # def self.red(s) "#{PREPEND_ME}\033[1;31m#{s}\033[0m" ; end
39
- # def self.blue(s) "#{PREPEND_ME}\033[1;34m#{s}\033[0m" ; end
40
- # def self.purple(s) "#{PREPEND_ME}\033[1;35m#{s}\033[0m" ; end
41
- # def self.azure(s) "#{PREPEND_ME}\033[1;36m#{s}\033[0m" ; end
42
- # def self.white(s) "#{PREPEND_ME}\033[1;37m#{s}\033[0m" ; end
43
-
44
- # p<COLOR> Carlessian functions..
45
- def pwhite(s) puts(white(s)); end
46
- def pgreen(s) puts(green(s)); end
47
- def pred(s) puts(red(s)); end
48
- def pyellow(s) puts(yellow(s)); end
49
-
13
+ PREPEND_ME = "[Storazzo::Colors] "
14
+
15
+ def deb2(s);
16
+ puts "#DEB_OBSOLETE #{gray(s)} [include Storazzo::Common instead]" if $DEBUG; end # Use the Common instead
17
+
18
+ # colors 16
19
+ def yellow(s) "\033[1;33m#{s}\033[0m"; end
20
+ def gray(s) "\033[1;30m#{s}\033[0m"; end
21
+ def green(s) "\033[1;32m#{s}\033[0m"; end
22
+ def red(s) "\033[1;31m#{s}\033[0m"; end
23
+ def blue(s) "\033[1;34m#{s}\033[0m"; end
24
+ def purple(s) "\033[1;35m#{s}\033[0m"; end
25
+ def azure(s) "\033[1;36m#{s}\033[0m"; end
26
+ def white(s) "\033[1;37m#{s}\033[0m"; end
27
+
28
+ # colors 64k
29
+ def orange(s) "\033[38;5;208m#{s}\033[0m"; end
30
+
31
+ # i dont undertstand why i need self :/
32
+ # SELF version because I'm just stupid or lazy or both.
33
+ # def self.yellow(s) "#{PREPEND_ME}\033[1;33m#{s}\033[0m" ; end
34
+ # def self.green(s) "#{PREPEND_ME}\033[1;32m#{s}\033[0m" ; end
35
+ # def self.gray(s) "#{PREPEND_ME}\033[1;30m#{s}\033[0m" ; end
36
+ # def self.green(s) "#{PREPEND_ME}\033[1;32m#{s}\033[0m" ; end
37
+ # def self.red(s) "#{PREPEND_ME}\033[1;31m#{s}\033[0m" ; end
38
+ # def self.blue(s) "#{PREPEND_ME}\033[1;34m#{s}\033[0m" ; end
39
+ # def self.purple(s) "#{PREPEND_ME}\033[1;35m#{s}\033[0m" ; end
40
+ # def self.azure(s) "#{PREPEND_ME}\033[1;36m#{s}\033[0m" ; end
41
+ # def self.white(s) "#{PREPEND_ME}\033[1;37m#{s}\033[0m" ; end
42
+
43
+ # p<COLOR> Carlessian functions..
44
+ def pwhite(s) puts(white(s)); end
45
+ def pgreen(s) puts(green(s)); end
46
+ def pred(s) puts(red(s)); end
47
+ def pyellow(s) puts(yellow(s)); end
50
48
  end
51
- #end
49
+ # end
@@ -1,27 +1,90 @@
1
1
  # Ric common stuff! :)
2
2
  #
3
- #
4
3
  # Usage:
5
- # include Storazzo::Common
4
+ # include Storazzo::Common (def to def)
5
+ # or
6
+ # extend Storazzo::Common (def to def self.XX)
6
7
  #
8
+ =begin
9
+ Emoji to copy:
10
+ 👍 👎 👌 ✌ 👋 🤝 👏 🤘 🤟 🤙 🤏 🙌 🙏 🖖 🤞 ✋ 🤚 🖐 🖑 🤲 👐 👊 🤛 🤜 🖕
11
+ 👈 👉 👆 👇
12
+ ☺ ☻ 😃 😄 😅 😆 😊 😎 😇 😈 😏 🤣 🤩 🤪 🥳 😁 😀 😂 🤠 🤡 🤑 🤓 🤖 kiss
13
+ 😗 😚 😘 😙 flirting
14
+ 😉 🤗 😍 🥰 🤤 😋 😛 😜 😝 neutral
15
+ 😶 🙃 😐 😑 🤔 🤨 🧐 hush
16
+ 🤭 🤫 😯 🤐 😌 😖 😕 😳 😔 🤥 🥴 shocked
17
+ 😮 😲 🤯 tired
18
+ 😩 😫 🥱 😪 😴 😵 sad
19
+ ☹ 😦 😞 😥 😟 cry
20
+ 😢 😭 sick
21
+ 🤢 🤮 😷 🤒 🤕 🥵 🥶 fear
22
+ 🥺 😬 😓 😰 😨 😱 angry
23
+ 😒 😠 😡 😤 😣 😧 🤬 😸 😹 😺 😻 😼 😽 😾 😿 🙀 🙈 🙉 🙊
24
+ [see Animal Emoji 🐰] gesture
25
+ 🤦 🤷 🙅 🙆 🙋 🙌 🙍 🙎 🙇 🙏 activity
26
+ 👯 💃 🕺 🤳 💇 💈 💆 🧖 🧘 🧍 🧎 👰 🤰 🤱 faces
27
+ 👶 🧒 👦 👧 👩 👨 🧑 🧔 🧓 👴 👵 👤 👥 👪 👫 👬 👭 👱 👳 👲 🧕 👸 🤴 🎅 🤶 disabled
28
+ 🧏 🦻 🦮 🦯 🦺 🦼 🦽 🦾 🦿 🤵 👮 👷 💁 💂 🕴 🕵 🦸 🦹 🧙 🧚 🧜 🧝 🧞 🧛 🧟 👼 👿 👻 👹 👺 👽 👾 🛸 💀 ☠ 🕱 🧠 🦴 👁 👀 👂 👃 👄 🗢 👅 🦷 🦵 🦶 💭 🗬 🗭 💬 🗨 🗩 🗪 🗫 🗰 🗱 🗮 🗯 🗣 🗤 🗥 🗦 🗧 💦 💧 💢 💫 💤 💨 💥 💪 🗲 🔥 💡 💩 💯 🔟 🔰 🕲
29
+ =end
7
30
  require_relative 'colors'
31
+ require 'pry'
8
32
 
9
- module Storazzo::Common
10
-
11
- include Storazzo::Colors
33
+ module Storazzo::Common
34
+ include Storazzo::Colors
12
35
 
36
+ def deb(s)
37
+ puts "[DEB👀] #{yellow(s)}" if _debug_true # $DEBUG
38
+ end
13
39
 
14
- def deb(s)
15
- puts "[DEB] #{yellow(s)}" if $DEBUG
16
- end
17
- def warn(s)
18
- puts "[WRN] #{azure(s)}"
19
- end
20
- def err(str)
21
- puts "[ERR] #{red(s)}"
22
- end
23
- def bug(s)
24
- puts "[🐛] #{gray s}"
40
+ # this has a yield
41
+ def if_deb?()
42
+ if _debug_true # $DEBUG
43
+ deb "== yield START =="
44
+ yield
45
+ deb "== yield END =="
25
46
  end
47
+ end
48
+
49
+ def warn(s)
50
+ puts "[W⚠️RN] #{azure(s)}"
51
+ end
52
+
53
+ def err(str)
54
+ puts "[ERR👎] #{red(s)}" # ⛔
55
+ end
56
+
57
+ def bug(s)
58
+ puts "[🐛] #{gray s}"
59
+ end
60
+
61
+ def pverbose(is_verbose, str)
62
+ # puts "[V📚RB💀S📚] #{gray str}"
63
+ puts "[🦋🐛🐝🐞🐜🕷🕸🦂🦗🦟] #{gray str}" # insects: http://xahlee.info/comp/unicode_insects.html
64
+ end
65
+
66
+ def ppp(complex_object_to_colorize)
67
+ # TODO i need to learn to return without printing..
68
+ Pry::ColorPrinter.pp(complex_object_to_colorize)
69
+ end
70
+
71
+ def fatal(s)
72
+ raise "[F💀TAL] #{red s}"
73
+ end
74
+
75
+ def mac?
76
+ `uname`.chomp == 'Darwin'
77
+ end
78
+
79
+ def linux?
80
+ `uname`.chomp == 'Linux'
81
+ end
82
+
83
+ private
84
+
85
+ def _debug_true
86
+ $DEBUG or ENV["DEBUG"] == 'true'
87
+ end
26
88
 
27
- end
89
+ # puts "[DEBUG ENABLED!]" if _debug_true
90
+ end
@@ -1,10 +1,7 @@
1
-
2
1
  # idea from https://medium.com/@leo_hetsch/ruby-modules-include-vs-prepend-vs-extend-f09837a5b073
3
2
  module Debug
4
-
5
- def log(message)
6
- # debug output
7
- puts "TODO(ricc): LOG '#{message}' on GCP :)"
8
- end
9
-
10
- end
3
+ def log(message)
4
+ # debug output
5
+ puts "TODO(ricc): LOG '#{message}' on GCP :)"
6
+ end
7
+ end
@@ -1,46 +1,47 @@
1
1
  # copied from https://dev.to/ayushn21/how-to-generate-yaml-from-ruby-objects-without-type-annotations-4fli
2
2
  module Storazzo
3
- module Hashify
4
- # Classes that include this module can exclude certain
5
- # instance variable from its hash representation by overriding
6
- # this method
7
- def ivars_excluded_from_hash
8
- [ 'this_doesnt_exist' ]
9
- end
10
-
11
- def to_hash
12
- hash = {}
13
- excluded_ivars = ivars_excluded_from_hash
14
-
15
- # Iterate over all the instance variables and store their
16
- # names and values in a hash
17
- instance_variables.each do |var|
18
- next if excluded_ivars.include? var.to_s
19
-
20
- value = instance_variable_get(var)
21
- value = value.map(&:to_hash) if value.is_a? Array
22
-
23
- hash[var.to_s.delete("@")] = value
24
- end
25
-
26
- return hash
27
- end
28
-
29
- def obj_to_hash
30
- h = {}
31
- puts self
32
- self.instance_variables.each{|var|
33
- #puts var
34
- h[var.to_s.delete('@')] = self.instance_variable_get(var) # send(var.to_s.delete('@'))
35
- }
36
- h
37
- end
38
-
39
- def to_yaml
40
- to_hash.to_yaml
41
- end
42
- def obj_to_yaml
43
- obj_to_hash.to_yaml
44
- end
3
+ module Hashify
4
+ # Classes that include this module can exclude certain
5
+ # instance variable from its hash representation by overriding
6
+ # this method
7
+ def ivars_excluded_from_hash
8
+ ['this_doesnt_exist']
45
9
  end
46
- end
10
+
11
+ def to_hash
12
+ hash = {}
13
+ excluded_ivars = ivars_excluded_from_hash
14
+
15
+ # Iterate over all the instance variables and store their
16
+ # names and values in a hash
17
+ instance_variables.each do |var|
18
+ next if excluded_ivars.include? var.to_s
19
+
20
+ value = instance_variable_get(var)
21
+ value = value.map(&:to_hash) if value.is_a? Array
22
+
23
+ hash[var.to_s.delete("@")] = value
24
+ end
25
+
26
+ return hash
27
+ end
28
+
29
+ def obj_to_hash
30
+ h = {}
31
+ puts self
32
+ self.instance_variables.each { |var|
33
+ # puts var
34
+ h[var.to_s.delete('@')] = self.instance_variable_get(var) # send(var.to_s.delete('@'))
35
+ }
36
+ h
37
+ end
38
+
39
+ def to_yaml
40
+ to_hash.to_yaml
41
+ end
42
+
43
+ def obj_to_yaml
44
+ obj_to_hash.to_yaml
45
+ end
46
+ end
47
+ end
data/lib/storazzo/main.rb CHANGED
@@ -3,7 +3,6 @@
3
3
  # eg from RicDisk.
4
4
 
5
5
  module Storazzo
6
-
7
6
  # This is the Main Class - an entrypoint to call the meravilles hidden therein.
8
7
  #
9
8
  # Example:
@@ -13,57 +12,62 @@ module Storazzo
13
12
  # Arguments:
14
13
  # message: (String) - optional
15
14
 
16
-
17
15
  class Storazzo::Main # Can be same name as Module: https://stackoverflow.com/questions/13261474/ruby-modules-and-classes-same-name-in-structure
18
16
  require 'storazzo/colors'
19
17
  extend Storazzo::Colors
20
18
 
21
19
  # version 1.2
22
- def self.say_hi(message=nil)
20
+ def self.say_hi(message = nil)
21
+ str = get_hi(message)
22
+ puts str
23
+ str
24
+ end
25
+
26
+ # salutation
27
+ def self.get_hi(message = nil)
23
28
  str = "Hello from Storazzo v#{white Storazzo::version rescue "Error: #{$!}"}!"
24
29
  str += " Message: '#{yellow message.to_s}'" if message
25
- puts str
26
- str
30
+ str
27
31
  end
28
32
 
29
- def self.all_mounts(opts={})
30
- opts_verbose = opts.fetch :verbose, true
33
+ def self.all_mounts(opts = {})
34
+ opts_verbose = opts.fetch :verbose, true
35
+
36
+ self.say_hi "Storazzo::Main.all_mounts(): BEGIN - RicDiskVersion is: #{Storazzo::RicDiskUgly::RICDISK_VERSION}"
31
37
 
32
- self.say_hi "Storazzo::Main.all_mounts(): BEGIN - RicDiskVersion is: #{Storazzo::RicDiskUgly::RICDISK_VERSION}"
33
-
34
- pwhite("1. First I load the config in verbose mode..")
35
- config = Storazzo::RicDiskConfig.instance
36
- config.load
37
- # puts config.object_id
38
- # puts Storazzo::RicDiskConfig.instance.object_id
39
- pwhite "TODO(ricc): show a list of all RicDisk relevant mounts" if opts_verbose
40
- #d = Storazzo::RicDisk.new
41
- config.iterate_through_file_list_for_disks() # analyze_local_system
42
- #sbrodola_ricdisk("/Volumes/")
43
- Storazzo::RicDisk.test
44
- Storazzo::RicDisk.find_active_dirs
45
- #Storazzo::RicDisk.sbrodola_ricdisk StorazzoMod::root + "./var/disks/"
46
- #sbrodola_ricdisk(StorazzoMod::root + "./var/disks/") rescue "[Storazzo::AllMount] SomeError: #{$!}"
47
- self.hi 'Storazzo::Main.all_mounts(): END'
38
+ pwhite("1. First I load the config in verbose mode..")
39
+ config = Storazzo::RicDiskConfig.instance
40
+ config.load
41
+ # puts config.object_id
42
+ # puts Storazzo::RicDiskConfig.instance.object_id
43
+ pwhite "TODO(ricc): show a list of all RicDisk relevant mounts" if opts_verbose
44
+ # d = Storazzo::RicDisk.new
45
+ config.iterate_through_file_list_for_disks() # analyze_local_system
46
+ # sbrodola_ricdisk("/Volumes/")
47
+ Storazzo::RicDisk.test
48
+ Storazzo::RicDisk.find_active_dirs
49
+ # Storazzo::RicDisk.sbrodola_ricdisk StorazzoMod::root + "./var/disks/"
50
+ # sbrodola_ricdisk(StorazzoMod::root + "./var/disks/") rescue "[Storazzo::AllMount] SomeError: #{$!}"
51
+ self.hi 'Storazzo::Main.all_mounts(): END'
48
52
  end
49
53
 
50
- def self.all_tests
51
- # include vs extend: https://stackoverflow.com/questions/15097929/ruby-module-require-and-include
52
- # => http://www.railstips.org/blog/archives/2009/05/15/include-vs-extend-in-ruby/
53
- #include Storazzo::Colors
54
- extend Storazzo::Colors
54
+ def self.all_tests
55
+ # include vs extend: https://stackoverflow.com/questions/15097929/ruby-module-require-and-include
56
+ # => http://www.railstips.org/blog/archives/2009/05/15/include-vs-extend-in-ruby/
57
+ # include Storazzo::Colors
58
+ extend Storazzo::Colors
55
59
 
56
- pwhite "All tests BEGIN - todo obsolete this now that I have proper Rake testing suite..."
57
- deb "Maybe debug is enabled?"
58
- say_hi
59
- # This works with EXTEND..
60
- puts(yellow "Just YELLOW 0")
61
- # This reqwuires a INCLUDE.
62
- #puts(Storazzo::Colors.yellow "Test YELLOW 1 self")
63
- #puts(Colors.yellow "Test YELLOW 1 self")
64
- #puts(Colors.green "Test YELLOW 2 ohne self")
65
- pwhite "All tests END"
66
- #puts "All tests END"
60
+ pwhite "All tests BEGIN - todo obsolete this now that I have proper Rake testing suite..."
61
+ deb "Maybe debug is enabled?"
62
+ say_hi
63
+ # This works with EXTEND..
64
+ puts(yellow "Just YELLOW 0")
65
+ # This reqwuires a INCLUDE.
66
+ # puts(Storazzo::Colors.yellow "Test YELLOW 1 self")
67
+ # puts(Colors.yellow "Test YELLOW 1 self")
68
+ # puts(Colors.green "Test YELLOW 2 ohne self")
69
+ pwhite "All tests END"
70
+ # puts "All tests END"
67
71
  end
68
72
  end
69
- end
73
+ end