eac_ruby_utils 0.48.0 → 0.49.0

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
  SHA256:
3
- metadata.gz: 16853127a3903c811f7a5c6c2be3ebbe3da92a92264e2c52ef94ead623e34399
4
- data.tar.gz: a1fab6ef432f51fabe7f4680f63e8117268a3f8b704c89891690f95d7faba60d
3
+ metadata.gz: 79201cf9333f8dd3efce24ef1a00fe30c90a8c5c96c549c77db9d6f875009786
4
+ data.tar.gz: e55dd71229d8047e6be0d1ad8b08b0bc92bb97dff785371a92803ccbe13568ba
5
5
  SHA512:
6
- metadata.gz: 365db8b5fecb7af045b74ad800723ddb95bd125c54885ab7da440db75d8ea7e0d779071dd63afeb6480c4af5d88bd86e180bb65ba5d399d9eac0deb8a9c01319
7
- data.tar.gz: 13de4c8a8ef0beebeb1e157be399945ea2e93575c0f85ce7600e37e24905b6f0fc98a232d63d29a558892d3da1df62236f329212d0df66f00d24d6580ef5b5ec
6
+ metadata.gz: 8e6761d989f6f31c684403237f53066a59d7990b5a6b081084bb7e82740cc94a259e605250b45190759afd1ae9e6963e1b3c200f65439062b678e8249f8e1a21
7
+ data.tar.gz: 6c70b64908695c5b273c32a2b2413ee5884173b1c81c02aa7e5951951664afe223b8cd09f6e17f335ea284660c4f3800444b9c44914579aea18e7aa9c32e5763
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'fileutils'
4
+ require 'pathname'
5
+
6
+ module EacRubyUtils
7
+ module Fs
8
+ class ClearableDirectory < ::Pathname
9
+ CLEARABLE_BASENAME = '.clearable_directory'
10
+
11
+ def clear
12
+ validate_clearable
13
+ directory? ? clear_directory : clear_no_directory
14
+ mkpath
15
+ ::FileUtils.touch(clearable_note_file.to_path)
16
+ self
17
+ end
18
+
19
+ def clearable?
20
+ clearable_negate_message ? true : false
21
+ end
22
+
23
+ def clearable_negate_message
24
+ return if !exist? || empty?
25
+ return "Path \"#{self}\" exists, is not empty and is not a directory" unless directory?
26
+ return if clearable_note_file.exist?
27
+
28
+ "Directory \"#{self}\" is not empty and does not have a #{CLEARABLE_BASENAME} file"
29
+ end
30
+
31
+ def clearable_note_file
32
+ join(CLEARABLE_BASENAME)
33
+ end
34
+
35
+ def validate_clearable
36
+ message = clearable_negate_message
37
+ raise message if message
38
+ end
39
+
40
+ private
41
+
42
+ def clear_directory
43
+ children.each do |child|
44
+ if child.directory?
45
+ child.rmtree
46
+ elsif child.file?
47
+ child.unlink
48
+ end
49
+ end
50
+ end
51
+
52
+ def clear_no_directory
53
+ ::FileUtils.rm_rf(to_path)
54
+ end
55
+ end
56
+ end
57
+ end
@@ -27,6 +27,10 @@ module EacRubyUtils
27
27
  property_method?(method_name) || super
28
28
  end
29
29
 
30
+ def slice_fetch(*keys)
31
+ self.class.new(keys.map { |key| [key, fetch(key)] }.to_h)
32
+ end
33
+
30
34
  def to_h
31
35
  data.dup
32
36
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.48.0'
4
+ VERSION = '0.49.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_ruby_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.48.0
4
+ version: 0.49.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esquilo Azul Company
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-20 00:00:00.000000000 Z
11
+ date: 2020-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -148,6 +148,7 @@ files:
148
148
  - lib/eac_ruby_utils/envs/ssh_env/terminal.rb
149
149
  - lib/eac_ruby_utils/filesystem_cache.rb
150
150
  - lib/eac_ruby_utils/fs.rb
151
+ - lib/eac_ruby_utils/fs/clearable_directory.rb
151
152
  - lib/eac_ruby_utils/fs/extname.rb
152
153
  - lib/eac_ruby_utils/fs/temp.rb
153
154
  - lib/eac_ruby_utils/fs/temp/directory.rb