storazzo 0.3.8 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,251 +1,251 @@
1
- # TODO remove this! Ugly code to just borrow and cleanup a bit,
1
+ # # TODO remove this! Ugly code to just borrow and cleanup a bit,
2
2
 
3
- module Storazzo
4
- class Storazzo::RicDiskUgly
5
- RICDISK_VERSION = "1.0ugly"
6
- DEFAULT_MEDIA_DIRS = %w{
7
- /media/riccardo/
8
- /Volumes/
9
- /mnt/
10
- ~/storazzo/var/test/disks/
11
- }.append(Storazzo.root + "/var/test/disks/")
3
+ # module Storazzo
4
+ # class Storazzo::RicDiskUgly
5
+ # RICDISK_VERSION = "1.0ugly"
6
+ # DEFAULT_MEDIA_DIRS = %w{
7
+ # /media/riccardo/
8
+ # /Volumes/
9
+ # /mnt/
10
+ # ~/storazzo/var/test/disks/
11
+ # }.append(Storazzo.root + "/var/test/disks/")
12
12
 
13
- include Hashify
14
- extend Storazzo::Colors
15
-
16
- # todo substitute with protobuf..
17
- attr_accessor :name, :description, :ricdisk_file, :local_mountpoint, :wr
18
-
19
- def self.interesting_mount_points(opts={})
20
- #https://unix.stackexchange.com/questions/177014/showing-only-interesting-mount-points-filtering-non-interesting-types
21
- `mount | grep -Ev 'type (proc|sysfs|tmpfs|devpts|debugfs|rpc_pipefs|nfsd|securityfs|fusectl|devtmpfs) '`.split(/\n+/)
22
- end
23
-
24
- def initialize(path, ricdisk_file)
25
- puts "[DEB] RicDiskUgly initialize.. path=#{path}"
26
- @local_mountpoint = path
27
- @description = "This is an automated RicDiskUgly description from v.#{VERSION}. Riccardo feel free to edit away with characteristicshs of this device.. Created on #{Time.now}'"
28
- @ricdisk_version = VERSION
29
- @ricdisk_file = ricdisk_file
30
- #@questo_non_esiste = :sobenme
31
- @label = path.split("/").last
32
- @name = path.split("/").last
33
- @wr = File.writable?("#{path}/#{ricdisk_file}" ) # .writeable?
34
- @tags = 'ricdisk'
35
- puts :beleza
36
- @config = RicDiskConfig.instance.get_config
37
- #puts @config if @config
38
- find_info_from_mount(path)
39
- find_info_from_df()
40
- end
41
-
42
- def ricdisk_absolute_path
43
- @local_mountpoint + "/" + @ricdisk_file
44
- end
45
-
46
- def add_tag(tag)
47
- @tags += ", #{tag}"
48
- end
49
-
50
- # might have other things in the future...
51
- def find_info_from_mount(path)
52
- mount_table_lines = interesting_mount_points()
53
- mount_line = nil
54
- mount_table_lines.each do |line|
55
- next if line =~ /^map /
56
- dev, on, mount_path, mode = line.split(/ /)
57
- if mount_path==path
58
- mount_line = line
59
- else
60
- @info_from_mount = false
61
- end
62
- end
63
- @info_from_mount = ! (mount_line.nil?)
64
- if @info_from_mount
65
- #@mount_line = mount_line
66
- @description += "\nMount line:\n" + mount_line
67
- @remote_mountpoint = mount_line.split(/ /)[0]
68
- @fstype = mount_line.split(/ /)[3].gsub(/[\(,]/, '')
69
- add_tag(:synology) if @remote_mountpoint.match('1.0.1.10')
70
- end
71
- end
72
-
73
- def find_info_from_df()
74
- path = @local_mountpoint
75
- df_info = `df -h "#{path}"`
76
- @df_info = df_info
77
- lines = df_info.split(/\n+/)
78
- raise "I need exactly TWO lines! Or no info is served here..." unless lines.size == 2
79
- mount, @size_readable, used_size, avail_size, @disk_utilization, other = lines[1].split(/\s+/) # second line..
80
- end
81
-
82
-
83
-
84
- def self.sbrodola_ricdisk(subdir)
85
- # given a path, if .ricdisk exists i do stuff with it..
86
- disk_info = nil
87
- unless self.ok_dir?(subdir)
88
- puts("Nothing for me here. Existing")
89
- return
90
- end
91
- if File.exists?( "#{subdir}/.ricdisk") and File.empty?( "#{subdir}/.ricdisk")
92
- deb("Interesting1. Empty file! Now I write YAML with it.")
93
- disk_info = RicDiskUgly.new(subdir, '.ricdisk')
94
- #puts(x)
95
- #puts(yellow x.to_yaml)
96
- end
97
- if File.exists?( "#{subdir}/.ricdisk.yaml") and File.empty?( "#{subdir}/.ricdisk.yaml")
98
- deb("Interesting2. Empty file! TODO write YAML with it.")
99
- disk_info = RicDiskUgly.new(subdir, '.ricdisk.yaml')
100
- # todo write
101
- #puts(x)
102
- puts(yellow disk_info.to_yaml)
103
- end
104
- if disk_info
105
- if File.empty?(disk_info.ricdisk_absolute_path) and (disk_info.wr)
106
- puts(green("yay, we can now write the file '#{disk_info.ricdisk_absolute_path}' (which is R/W, I just checked!) with proper YAML content.."))
107
- ret = File.write(disk_info.ricdisk_absolute_path, disk_info.to_yaml)
108
- puts("Written file! ret=#{ret}")
109
- else
110
- puts(red("Nope, qualcosa non va.. #{File.empty?(disk_info.ricdisk_absolute_path)}"))
111
- puts("File size: #{File.size(disk_info.ricdisk_absolute_path)}")
112
- end
113
- end
114
- if File.exists?( "#{subdir}/.ricdisk") and ! File.empty?( "#{subdir}/.ricdisk")
115
- puts("Config File found with old-style name: '#{subdir}/.ricdisk' !")
116
- #puts(white `cat "#{subdir}/.ricdisk"`)
117
- end
118
- end
119
-
120
- # separiamo cosi usiamo meglio...
121
- def self.ok_dir?(subdir)
122
- File.exists?( "#{subdir}/.ricdisk") or File.exists?( "#{subdir}/.ricdisk.yaml")
123
- end
124
-
125
- def self.obsolescence_seconds file_path
126
- creation_time = File.stat(file_path).ctime
127
- deb("[obsolescence_seconds] File #{file_path}: #{creation_time} - #{(Time.now - creation_time)} seconds ago")
128
- (Time.now - creation_time).to_i
129
- end
130
- def self.obsolescence_days(file_path)
131
- return obsolescence_seconds(file_path) / 86400
132
- end
133
-
134
- def self.backquote_execute(cmd)
135
- # executed a command wrapped by dryrun though
136
- return "DRYRUN backquote_execute(#{cmd})" if $opts[:dryrun]
137
- `#{cmd}`
138
- end
13
+ # include Hashify
14
+ # extend Storazzo::Colors
15
+
16
+ # # todo substitute with protobuf..
17
+ # attr_accessor :name, :description, :ricdisk_file, :local_mountpoint, :wr
18
+
19
+ # def self.interesting_mount_points(opts={})
20
+ # #https://unix.stackexchange.com/questions/177014/showing-only-interesting-mount-points-filtering-non-interesting-types
21
+ # `mount | grep -Ev 'type (proc|sysfs|tmpfs|devpts|debugfs|rpc_pipefs|nfsd|securityfs|fusectl|devtmpfs) '`.split(/\n+/)
22
+ # end
23
+
24
+ # def initialize(path, ricdisk_file)
25
+ # puts "[DEB] RicDiskUgly initialize.. path=#{path}"
26
+ # @local_mountpoint = path
27
+ # @description = "This is an automated RicDiskUgly description from v.#{VERSION}. Riccardo feel free to edit away with characteristicshs of this device.. Created on #{Time.now}'"
28
+ # @ricdisk_version = VERSION
29
+ # @ricdisk_file = ricdisk_file
30
+ # #@questo_non_esiste = :sobenme
31
+ # @label = path.split("/").last
32
+ # @name = path.split("/").last
33
+ # @wr = File.writable?("#{path}/#{ricdisk_file}" ) # .writeable?
34
+ # @tags = 'ricdisk'
35
+ # puts :beleza
36
+ # @config = RicDiskConfig.instance.get_config
37
+ # #puts @config if @config
38
+ # find_info_from_mount(path)
39
+ # find_info_from_df()
40
+ # end
41
+
42
+ # def ricdisk_absolute_path
43
+ # @local_mountpoint + "/" + @ricdisk_file
44
+ # end
45
+
46
+ # def add_tag(tag)
47
+ # @tags += ", #{tag}"
48
+ # end
49
+
50
+ # # might have other things in the future...
51
+ # def find_info_from_mount(path)
52
+ # mount_table_lines = interesting_mount_points()
53
+ # mount_line = nil
54
+ # mount_table_lines.each do |line|
55
+ # next if line =~ /^map /
56
+ # dev, on, mount_path, mode = line.split(/ /)
57
+ # if mount_path==path
58
+ # mount_line = line
59
+ # else
60
+ # @info_from_mount = false
61
+ # end
62
+ # end
63
+ # @info_from_mount = ! (mount_line.nil?)
64
+ # if @info_from_mount
65
+ # #@mount_line = mount_line
66
+ # @description += "\nMount line:\n" + mount_line
67
+ # @remote_mountpoint = mount_line.split(/ /)[0]
68
+ # @fstype = mount_line.split(/ /)[3].gsub(/[\(,]/, '')
69
+ # add_tag(:synology) if @remote_mountpoint.match('1.0.1.10')
70
+ # end
71
+ # end
72
+
73
+ # def find_info_from_df()
74
+ # path = @local_mountpoint
75
+ # df_info = `df -h "#{path}"`
76
+ # @df_info = df_info
77
+ # lines = df_info.split(/\n+/)
78
+ # raise "I need exactly TWO lines! Or no info is served here..." unless lines.size == 2
79
+ # mount, @size_readable, used_size, avail_size, @disk_utilization, other = lines[1].split(/\s+/) # second line..
80
+ # end
81
+
82
+
83
+
84
+ # def self.sbrodola_ricdisk(subdir)
85
+ # # given a path, if .ricdisk exists i do stuff with it..
86
+ # disk_info = nil
87
+ # unless self.ok_dir?(subdir)
88
+ # puts("Nothing for me here. Existing")
89
+ # return
90
+ # end
91
+ # if File.exists?( "#{subdir}/.ricdisk") and File.empty?( "#{subdir}/.ricdisk")
92
+ # deb("Interesting1. Empty file! Now I write YAML with it.")
93
+ # disk_info = RicDiskUgly.new(subdir, '.ricdisk')
94
+ # #puts(x)
95
+ # #puts(yellow x.to_yaml)
96
+ # end
97
+ # if File.exists?( "#{subdir}/.ricdisk.yaml") and File.empty?( "#{subdir}/.ricdisk.yaml")
98
+ # deb("Interesting2. Empty file! TODO write YAML with it.")
99
+ # disk_info = RicDiskUgly.new(subdir, '.ricdisk.yaml')
100
+ # # todo write
101
+ # #puts(x)
102
+ # puts(yellow disk_info.to_yaml)
103
+ # end
104
+ # if disk_info
105
+ # if File.empty?(disk_info.ricdisk_absolute_path) and (disk_info.wr)
106
+ # puts(green("yay, we can now write the file '#{disk_info.ricdisk_absolute_path}' (which is R/W, I just checked!) with proper YAML content.."))
107
+ # ret = File.write(disk_info.ricdisk_absolute_path, disk_info.to_yaml)
108
+ # puts("Written file! ret=#{ret}")
109
+ # else
110
+ # puts(red("Nope, qualcosa non va.. #{File.empty?(disk_info.ricdisk_absolute_path)}"))
111
+ # puts("File size: #{File.size(disk_info.ricdisk_absolute_path)}")
112
+ # end
113
+ # end
114
+ # if File.exists?( "#{subdir}/.ricdisk") and ! File.empty?( "#{subdir}/.ricdisk")
115
+ # puts("Config File found with old-style name: '#{subdir}/.ricdisk' !")
116
+ # #puts(white `cat "#{subdir}/.ricdisk"`)
117
+ # end
118
+ # end
119
+
120
+ # # separiamo cosi usiamo meglio...
121
+ # def self.ok_dir?(subdir)
122
+ # File.exists?( "#{subdir}/.ricdisk") or File.exists?( "#{subdir}/.ricdisk.yaml")
123
+ # end
124
+
125
+ # def self.obsolescence_seconds file_path
126
+ # creation_time = File.stat(file_path).ctime
127
+ # deb("[obsolescence_seconds] File #{file_path}: #{creation_time} - #{(Time.now - creation_time)} seconds ago")
128
+ # (Time.now - creation_time).to_i
129
+ # end
130
+ # def self.obsolescence_days(file_path)
131
+ # return obsolescence_seconds(file_path) / 86400
132
+ # end
133
+
134
+ # def self.backquote_execute(cmd)
135
+ # # executed a command wrapped by dryrun though
136
+ # return "DRYRUN backquote_execute(#{cmd})" if $opts[:dryrun]
137
+ # `#{cmd}`
138
+ # end
139
139
 
140
- def self.upload_to_gcs(file, opts={})
141
- deb("upload_to_gcs(#{file}). TODO(ricc) after breafast upload to GCS : #{file}")
142
- mount_name = file.split('/')[-2]
143
- filename = "#{mount_name}-#{File.basename file}"
144
- hostname = Socket.gethostname[/^[^.]+/]
145
- command = "gsutil cp '#{file}' gs://#{$gcs_bucket}/backup/ricdisk-magic/#{ hostname }-#{filename}"
146
- deb("Command: #{command}")
147
- ret = backquote_execute(command)
148
- # if $opts[:debug] do
149
- # puts "+ Current list of files:"
150
- # ret = backquote_execute("gsutil ls -al gs://#{$gcs_bucket}/backup/ricdisk-magic/")
151
- # puts ret
152
- # end
153
- ret
154
- end
155
-
156
- # Create RDS file.
157
- def self.calculate_stats_files(dir, opts={})
158
- opts_upload_to_gcs = opts.fetch :upload_to_gcs, true
159
- full_file_path = "#{dir}/#{$stats_file}"
160
-
161
- puts("calculate_stats_files(#{white dir}): #{white full_file_path}")
162
- puts "TEST1 DIR EXISTS: #{dir} -> #{File.directory? dir}"
163
- Dir.chdir(dir)
164
- if File.exists?(full_file_path) and ($opts[:force] == false)
165
- puts "File '#{$stats_file}' exists already." # - now should see if its too old, like more than 1 week old"
166
- # TODO check for file time...
167
- print "Lines found: #{yellow `wc -l "#{full_file_path}" `.chomp }. File obsolescence (days): #{yellow obsolescence_days(full_file_path)}."
168
- if obsolescence_days(full_file_path) > 7
169
- puts("*** ACHTUNG *** FIle is pretty old. You might consider rotating: #{yellow "mv #{full_file_path} #{full_file_path}_old"}. Or invoke with --force")
170
- end
171
- upload_to_gcs(full_file_path) if opts_upload_to_gcs
172
- else
173
- puts "Crunching data stats from '#{dir}' into '#{$stats_file}' ... please bear with me.. [maybe file didnt exist, maybe $opts[:force] is true]"
174
- command = "find . -print0 | xargs -0 stats-with-md5.rb --no-color | tee '#{full_file_path}'"
175
- puts("[#{`pwd`.chomp}] Executing: #{azure command}")
176
- ret = backquote_execute command
177
- puts "Done. #{ret.split("\n").count} files processed."
178
- end
179
- end
180
-
181
- def self.find_active_dirs(base_dirs=nil, also_mountpoints=true)
182
- base_dirs = DEFAULT_MEDIA_DIRS if base_dirs.nil?
183
- active_dirs = []
184
- base_dirs.each do |ugly_dir|
185
- # https://stackoverflow.com/questions/1899072/getting-a-list-of-folders-in-a-directory#:~:text=Dir.chdir(%27/destination_directory%27)%0ADir.glob(%27*%27).select%20%7B%7Cf%7C%20File.directory%3F%20f%7D
186
- dir = File.expand_path(ugly_dir)
187
- begin
188
- x=[]
189
- # puts "TEST2 DIR EXISTS: #{dir} -> #{Dir.exists?(dir)}"
190
- unless Dir.exists?(dir)
191
- deb "Dir doesnt exist, skipping: #{dir}"
192
- next
193
- end
194
- Dir.chdir(dir)
195
- x = Dir.glob('*').select {|f| File.directory? f}
196
- subdirs = x.map{|subdir| "#{dir}#{subdir}"}
197
- subdirs.each{|subdir|
198
- #puts `ls -al "#{subdir}"`
199
- active_dirs << subdir if self.ok_dir?(subdir)
200
- }
201
- #puts(white x)
202
- rescue Exception => e # optionally: `rescue Exception => ex`
203
- puts "Exception: '#{e}'"
204
- ensure # will always get executed
205
- #deb 'Always gets executed.'
206
- #x = []
207
- end
208
- end
209
-
210
- if also_mountpoints
211
- =begin
212
- Example output from mount:
140
+ # def self.upload_to_gcs(file, opts={})
141
+ # deb("upload_to_gcs(#{file}). TODO(ricc) after breafast upload to GCS : #{file}")
142
+ # mount_name = file.split('/')[-2]
143
+ # filename = "#{mount_name}-#{File.basename file}"
144
+ # hostname = Socket.gethostname[/^[^.]+/]
145
+ # command = "gsutil cp '#{file}' gs://#{$gcs_bucket}/backup/ricdisk-magic/#{ hostname }-#{filename}"
146
+ # deb("Command: #{command}")
147
+ # ret = backquote_execute(command)
148
+ # # if $opts[:debug] do
149
+ # # puts "+ Current list of files:"
150
+ # # ret = backquote_execute("gsutil ls -al gs://#{$gcs_bucket}/backup/ricdisk-magic/")
151
+ # # puts ret
152
+ # # end
153
+ # ret
154
+ # end
155
+
156
+ # # Create RDS file.
157
+ # def self.calculate_stats_files(dir, opts={})
158
+ # opts_upload_to_gcs = opts.fetch :upload_to_gcs, true
159
+ # full_file_path = "#{dir}/#{$stats_file}"
160
+
161
+ # puts("calculate_stats_files(#{white dir}): #{white full_file_path}")
162
+ # puts "TEST1 DIR EXISTS: #{dir} -> #{File.directory? dir}"
163
+ # Dir.chdir(dir)
164
+ # if File.exists?(full_file_path) and ($opts[:force] == false)
165
+ # puts "File '#{$stats_file}' exists already." # - now should see if its too old, like more than 1 week old"
166
+ # # TODO check for file time...
167
+ # print "Lines found: #{yellow `wc -l "#{full_file_path}" `.chomp }. File obsolescence (days): #{yellow obsolescence_days(full_file_path)}."
168
+ # if obsolescence_days(full_file_path) > 7
169
+ # puts("*** ACHTUNG *** FIle is pretty old. You might consider rotating: #{yellow "mv #{full_file_path} #{full_file_path}_old"}. Or invoke with --force")
170
+ # end
171
+ # upload_to_gcs(full_file_path) if opts_upload_to_gcs
172
+ # else
173
+ # puts "Crunching data stats from '#{dir}' into '#{$stats_file}' ... please bear with me.. [maybe file didnt exist, maybe $opts[:force] is true]"
174
+ # command = "find . -print0 | xargs -0 stats-with-md5.rb --no-color | tee '#{full_file_path}'"
175
+ # puts("[#{`pwd`.chomp}] Executing: #{azure command}")
176
+ # ret = backquote_execute command
177
+ # puts "Done. #{ret.split("\n").count} files processed."
178
+ # end
179
+ # end
180
+
181
+ # def self.find_active_dirs(base_dirs=nil, also_mountpoints=true)
182
+ # base_dirs = DEFAULT_MEDIA_DIRS if base_dirs.nil?
183
+ # active_dirs = []
184
+ # base_dirs.each do |ugly_dir|
185
+ # # https://stackoverflow.com/questions/1899072/getting-a-list-of-folders-in-a-directory#:~:text=Dir.chdir(%27/destination_directory%27)%0ADir.glob(%27*%27).select%20%7B%7Cf%7C%20File.directory%3F%20f%7D
186
+ # dir = File.expand_path(ugly_dir)
187
+ # begin
188
+ # x=[]
189
+ # # puts "TEST2 DIR EXISTS: #{dir} -> #{Dir.exists?(dir)}"
190
+ # unless Dir.exists?(dir)
191
+ # deb "Dir doesnt exist, skipping: #{dir}"
192
+ # next
193
+ # end
194
+ # Dir.chdir(dir)
195
+ # x = Dir.glob('*').select {|f| File.directory? f}
196
+ # subdirs = x.map{|subdir| "#{dir}#{subdir}"}
197
+ # subdirs.each{|subdir|
198
+ # #puts `ls -al "#{subdir}"`
199
+ # active_dirs << subdir if self.ok_dir?(subdir)
200
+ # }
201
+ # #puts(white x)
202
+ # rescue Exception => e # optionally: `rescue Exception => ex`
203
+ # puts "Exception: '#{e}'"
204
+ # ensure # will always get executed
205
+ # #deb 'Always gets executed.'
206
+ # #x = []
207
+ # end
208
+ # end
209
+
210
+ # if also_mountpoints
211
+ # =begin
212
+ # Example output from mount:
213
213
 
214
- devfs on /dev (devfs, local, nobrowse)
215
- /dev/disk3s6 on /System/Volumes/VM (apfs, local, noexec, journaled, noatime, nobrowse)
216
- /dev/disk3s2 on /System/Volumes/Preboot (apfs, local, journaled, nobrowse)
217
- /dev/disk3s4 on /System/Volumes/Update (apfs, local, journaled, nobrowse)
218
- /dev/disk1s2 on /System/Volumes/xarts (apfs, local, noexec, journaled, noatime, nobrowse)
219
- /dev/disk1s1 on /System/Volumes/iSCPreboot (apfs, local, journaled, nobrowse)
220
- /dev/disk1s3 on /System/Volumes/Hardware (apfs, local, journaled, nobrowse)
221
- /dev/disk3s5 on /System/Volumes/Data (apfs, local, journaled, nobrowse, protect)
222
- map auto_home on /System/Volumes/Data/home (autofs, automounted, nobrowse)
223
- //riccardo@1.0.1.10/video on /Volumes/video (afpfs, nodev, nosuid, mounted by ricc)
224
- //riccardo@1.0.1.10/photo on /Volumes/photo (afpfs, nodev, nosuid, mounted by ricc)
225
- =end
226
- # add directories from current mountpoints...
227
- mount_table_lines = interesting_mount_points()
228
- mount_table_lines.each{|line|
229
- next if line =~ /^map /
230
- dev, on, path, mode = line.split(/ /)
231
- #puts line
232
- #deb yellow(path)
233
- active_dirs << path if self.ok_dir?(path)
234
- }
235
- end
236
- active_dirs.uniq!
237
- puts("find_active_dirs(): found dirs " + green(active_dirs))
238
- return active_dirs
239
- end
214
+ # devfs on /dev (devfs, local, nobrowse)
215
+ # /dev/disk3s6 on /System/Volumes/VM (apfs, local, noexec, journaled, noatime, nobrowse)
216
+ # /dev/disk3s2 on /System/Volumes/Preboot (apfs, local, journaled, nobrowse)
217
+ # /dev/disk3s4 on /System/Volumes/Update (apfs, local, journaled, nobrowse)
218
+ # /dev/disk1s2 on /System/Volumes/xarts (apfs, local, noexec, journaled, noatime, nobrowse)
219
+ # /dev/disk1s1 on /System/Volumes/iSCPreboot (apfs, local, journaled, nobrowse)
220
+ # /dev/disk1s3 on /System/Volumes/Hardware (apfs, local, journaled, nobrowse)
221
+ # /dev/disk3s5 on /System/Volumes/Data (apfs, local, journaled, nobrowse, protect)
222
+ # map auto_home on /System/Volumes/Data/home (autofs, automounted, nobrowse)
223
+ # //riccardo@1.0.1.10/video on /Volumes/video (afpfs, nodev, nosuid, mounted by ricc)
224
+ # //riccardo@1.0.1.10/photo on /Volumes/photo (afpfs, nodev, nosuid, mounted by ricc)
225
+ # =end
226
+ # # add directories from current mountpoints...
227
+ # mount_table_lines = interesting_mount_points()
228
+ # mount_table_lines.each{|line|
229
+ # next if line =~ /^map /
230
+ # dev, on, path, mode = line.split(/ /)
231
+ # #puts line
232
+ # #deb yellow(path)
233
+ # active_dirs << path if self.ok_dir?(path)
234
+ # }
235
+ # end
236
+ # active_dirs.uniq!
237
+ # puts("find_active_dirs(): found dirs " + green(active_dirs))
238
+ # return active_dirs
239
+ # end
240
240
 
241
241
 
242
- def analyze_local_system()
243
- puts :TODO
244
- puts "1. Interesting Mounts: #{green interesting_mount_points}"
245
- puts "2. Sbrodoling everything: :TODO"
246
- # find_info_from_mount(path)
247
- # find_info_from_df()
248
- end
249
-
250
- end
251
- end
242
+ # def analyze_local_system()
243
+ # puts :TODO
244
+ # puts "1. Interesting Mounts: #{green interesting_mount_points}"
245
+ # puts "2. Sbrodoling everything: :TODO"
246
+ # # find_info_from_mount(path)
247
+ # # find_info_from_df()
248
+ # end
249
+
250
+ # end
251
+ # end
data/storazzo.gemspec CHANGED
@@ -9,7 +9,10 @@ Gem::Specification.new do |s|
9
9
  # Autoglob as per https://stackoverflow.com/questions/11873294/determining-the-gems-list-of-files-for-the-specification
10
10
  s.files = %w(Gemfile LICENSE README.md Makefile Rakefile storazzo.gemspec VERSION) + Dir["{bin,lib,test,var}/**/*"]
11
11
  s.test_files = Dir["test/**/*"] + Dir["var/test/**/*"]
12
- s.executables << "ricdisk-magic"
12
+ s.executables = [
13
+ "ricdisk-magic",
14
+ "stats-with-md5",
15
+ ]
13
16
 
14
17
  s.homepage = "https://rubygems.org/gems/storazzo" # maybe https://github.com/palladius/storazzo
15
18
  s.license = "MIT"
@@ -6,6 +6,8 @@ require 'storazzo/colors'
6
6
  require "storazzo/media/local_folder"
7
7
  require "storazzo/ric_disk_config_example"
8
8
 
9
+ require 'pry' # must install the gem... but you ALWAYS want pry installed anyways
10
+
9
11
  #require "storazzo/ric_disk_config"
10
12
  #require "storazzo/ric_disk_sample_config"
11
13
  #require 'storazzo/ric_disk_sample_config' # => NOTHING!!
@@ -24,17 +26,18 @@ class GcsBucketTest < Minitest::Test
24
26
  def setup # tear_up
25
27
  deb "[GcsBucketTest] TEAR_UP with sample Config"
26
28
  #removeme = Storazzo::RicDiskConfig.instance()
27
- config_obj = Storazzo::RicDiskSampleConfig.instance()
28
- config_obj.load()
29
- deb "[GcsBucketTest] TEAR_UP config_obj: '''#{config_obj}'''"
29
+ $sample_config_obj = Storazzo::RicDiskSampleConfig.instance()
30
+ $sample_config_hash = $sample_config_obj.load()
31
+ deb "[GcsBucketTest] TEAR_UP config_obj: '''#{$sample_config_obj}'''"
30
32
  end
31
33
 
32
34
  def test_buckets_are_the_two_i_know
35
+ # copied from etc/sample.yaml :)
33
36
  expected_list = %w{
34
37
  gs://my-local-backup/storazzo/backups/
35
38
  gs://my-other-bucket/
36
39
  }
37
- actual_list = Storazzo::RicDisk::GcsBucket.list_all
40
+ actual_list = Storazzo::RicDisk::GcsBucket.list_all($sample_config_obj)
38
41
  assert_equal(
39
42
  expected_list.sort,
40
43
  actual_list.sort,
@@ -46,17 +49,22 @@ class GcsBucketTest < Minitest::Test
46
49
  #require "storazzo/ric_disk_config"
47
50
 
48
51
  #puts Storazzo.class
49
- puts " Storazzo.constants: #{ Storazzo.constants}"
52
+ deb " Storazzo.constants: #{ Storazzo.constants}"
50
53
  #puts Storazzo::RicDiskSampleConfig
51
- config_obj = Storazzo::RicDiskSampleConfig.instance()
52
- l = config_obj.load
53
- puts "config_obj: #{config_obj}"
54
- config_obj.load # _sample_version
55
- end
54
+ #config_obj = Storazzo::RicDiskSampleConfig.instance()
55
+ Pry::ColorPrinter.pp($sample_config_obj.to_verbose_s())
56
+ #pp green(config_obj.to_verbose_s())
56
57
 
58
+ l = $sample_config_obj.load
59
+ Pry::ColorPrinter.pp(l)
57
60
 
58
- def teardown
59
- puts :TEAR_DOWN_TODO
61
+ puts "$sample_config_obj: #{$sample_config_obj}"
62
+ #config_obj.load # _sample_version
60
63
  end
61
64
 
65
+
66
+ # def teardown
67
+ # puts :TEAR_DOWN_TODO
68
+ # end
69
+
62
70
  end
@@ -21,8 +21,11 @@ class LocalFolderTest < Minitest::Test
21
21
  def tear_up
22
22
  include Storazzo::Colors
23
23
  puts yellow("LocalFolderTest: tear up")
24
- #$config = Storazzo::RicDiskConfig.instance()
25
- #$vediamo_se_funge = 42
24
+ #$config_useless = Storazzo::RicDiskConfig.instance()
25
+ $config = Storazzo::RicDiskSampleConfig.instance()
26
+ $config_load = $config.load()
27
+ puts $config.to_verbose_s
28
+
26
29
  # my_class = Storazzo::RicDisk::LocalFolder
27
30
  # my_obj = Storazzo::RicDisk::LocalFolder
28
31
  end
@@ -43,7 +46,7 @@ class LocalFolderTest < Minitest::Test
43
46
 
44
47
  # To only test this:
45
48
  # $ ruby -I test test/test_local_folder.rb -n test_first_directory_parsing_actually_works
46
- def test_1_first_directory_parsing_actually_works()
49
+ def TODO_test_1_first_directory_parsing_actually_works()
47
50
  # include module
48
51
 
49
52
  #p $vediamo_se_funge
@@ -70,7 +73,12 @@ class LocalFolderTest < Minitest::Test
70
73
  # )
71
74
  end
72
75
 
73
- def test_2_iterate_through_file_list_for_disks
76
+ def test_vars_transporeted_across_teraup_and_tests
77
+ puts $config_load
78
+ puts $config
79
+ end
80
+
81
+ def TODO_test_2_iterate_through_file_list_for_disks
74
82
  #p $vediamo_se_funge
75
83
  puts("(#{__FILE__}) WEIRD THING: This test is flaky. SKipping for now until I complete the LocalFolder.parse() code")
76
84
  folders = Storazzo::Media::LocalFolder.list_all
@@ -96,4 +104,18 @@ class LocalFolderTest < Minitest::Test
96
104
  "parse on LocalFolder should create file '#{stats_file}'"
97
105
  )
98
106
  end
107
+
108
+ def test_readonly_folder
109
+ test_dir = "/etc/"
110
+ disk = Storazzo::Media::LocalFolder.new(test_dir)
111
+ stats_file = disk.stats_filename_default_fullpath
112
+ config = Storazzo::RicDiskSampleConfig.instance()
113
+ config.load
114
+ config.iterate_through_file_list_for_disks([test_dir])
115
+ assert(
116
+ not(File.exists?(stats_file)),
117
+ "parse on LocalFolder should NOT create file '#{stats_file}' but another in another TODO place"
118
+ )
119
+ # ...
120
+ end
99
121
  end