avm-files 0.1.0 → 0.2.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 +4 -4
- data/lib/avm/files/version.rb +1 -1
- metadata +2 -3
- data/lib/avm/files/rotate.rb +0 -107
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7eb4bae1712c9112736c6049c46a5e54df49e9e65bb51ab1570385d9266f3b24
|
4
|
+
data.tar.gz: 374f7866ac01d7fe1b21867b5ef5f065734a339b9a7bf231d632d90139fa8fcf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ea039168b8d9c83421017bc49bd368af864763e704d8965e24fd216c8e670568e640b46c54a48b07f027c0b7d040197d92727f2eb22d51c58ff1028e23f1bdc
|
7
|
+
data.tar.gz: 79057243c6e31f617403edb70e4d1a6e8c1ef932501f26feca2ee9f9abef25171aa93edd78cf4a7ef2356c7c38dee0b942eda33989f9dc97f47914a35a8c6626
|
data/lib/avm/files/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: avm-files
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Put here the authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: avm
|
@@ -107,7 +107,6 @@ files:
|
|
107
107
|
- lib/avm/files/formatter/formats/ruby.rb
|
108
108
|
- lib/avm/files/formatter/formats/xml.rb
|
109
109
|
- lib/avm/files/formatter/utf8_assert.rb
|
110
|
-
- lib/avm/files/rotate.rb
|
111
110
|
- lib/avm/files/version.rb
|
112
111
|
homepage:
|
113
112
|
licenses: []
|
data/lib/avm/files/rotate.rb
DELETED
@@ -1,107 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'active_support/core_ext/object/blank'
|
4
|
-
require 'eac_ruby_utils/simple_cache'
|
5
|
-
|
6
|
-
module Avm
|
7
|
-
module Files
|
8
|
-
class Rotate
|
9
|
-
include ::EacRubyUtils::SimpleCache
|
10
|
-
|
11
|
-
attr_reader :options, :source_path
|
12
|
-
|
13
|
-
def initialize(source_path, options = {})
|
14
|
-
@source_path = source_path
|
15
|
-
@options = options
|
16
|
-
end
|
17
|
-
|
18
|
-
def run
|
19
|
-
validate_msg = validate
|
20
|
-
return validate_msg if validate_msg.present?
|
21
|
-
|
22
|
-
::FileUtils.mv(source_path, target_path)
|
23
|
-
check_space_limit
|
24
|
-
nil
|
25
|
-
end
|
26
|
-
|
27
|
-
def space_limit
|
28
|
-
r = options[:space_limit].try(:to_i)
|
29
|
-
return r if r.present? && r.positive?
|
30
|
-
|
31
|
-
r
|
32
|
-
end
|
33
|
-
|
34
|
-
def space_used
|
35
|
-
rotated_files.inject(0) { |a, e| a + ::File.size(e) }
|
36
|
-
end
|
37
|
-
|
38
|
-
def rotated_files
|
39
|
-
::Dir["#{dirname}/#{source_basename_without_extension}*#{source_extension}"]
|
40
|
-
end
|
41
|
-
|
42
|
-
def oldest_rotated_file
|
43
|
-
rotated_files.min_by { |file| [::File.mtime(file)] }
|
44
|
-
end
|
45
|
-
|
46
|
-
private
|
47
|
-
|
48
|
-
def check_space_limit
|
49
|
-
return unless space_limit
|
50
|
-
|
51
|
-
while space_used > space_limit
|
52
|
-
file = oldest_rotated_file
|
53
|
-
unless file
|
54
|
-
raise 'oldest_rotated_file returned nil ' \
|
55
|
-
"(Limit: #{space_limit}, used: #{space_used})"
|
56
|
-
end
|
57
|
-
::File.delete(file)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def validate
|
62
|
-
return "Source file \"#{source_path}\" does not exist" unless ::File.exist?(source_path)
|
63
|
-
return "File \"#{source_path}\" is already rotated" if source_rotated?
|
64
|
-
|
65
|
-
nil
|
66
|
-
end
|
67
|
-
|
68
|
-
def source_rotated?
|
69
|
-
source_basename_without_extension.match(/[PN]\d{4}\z/)
|
70
|
-
end
|
71
|
-
|
72
|
-
def source_extension_uncached
|
73
|
-
file_extension(::File.basename(source_path))
|
74
|
-
end
|
75
|
-
|
76
|
-
def source_basename_without_extension
|
77
|
-
::File.basename(source_path, source_extension)
|
78
|
-
end
|
79
|
-
|
80
|
-
def target_path_uncached
|
81
|
-
::File.join(dirname, target_basename)
|
82
|
-
end
|
83
|
-
|
84
|
-
def dirname
|
85
|
-
::File.dirname(source_path)
|
86
|
-
end
|
87
|
-
|
88
|
-
def target_basename
|
89
|
-
source_basename_without_extension + target_suffix + source_extension
|
90
|
-
end
|
91
|
-
|
92
|
-
def target_suffix
|
93
|
-
return '_UNKNOWN_MTIME' unless ::File.exist?(source_path)
|
94
|
-
|
95
|
-
t = ::File.mtime(source_path)
|
96
|
-
t.strftime('_%Y-%m-%d_%H-%M-%S_') + t.strftime('%z').gsub(/\A\+/, 'P').gsub(/\A\-/, 'N')
|
97
|
-
end
|
98
|
-
|
99
|
-
def file_extension(basename)
|
100
|
-
extension = ::File.extname(basename)
|
101
|
-
return '' if extension.blank?
|
102
|
-
|
103
|
-
file_extension(::File.basename(basename, extension)) + extension
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|