bard-backup 0.4.0 → 0.6.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: 71a87dace6348cc41462c0192446af581cb9253d218d4c32c0c98667fe26c73a
4
- data.tar.gz: 86eac09b1520f87f7bedd20bff84afd94496416d715947ea49f6047fdc45ed72
3
+ metadata.gz: 4746616bc6439c661cc7187970f3d72f51df06395e6e7535ce1238465746c1f7
4
+ data.tar.gz: b1a41fca533525a326fecf71f848477ed31e391346c53cf2db73bf4d1c5e6c23
5
5
  SHA512:
6
- metadata.gz: 40fa5aa6fa1ee989cad053b08a529173376ebb3d18ee38d72024a5bbe5a0fe0cd222698664791490edc799200e77f7df7685eec8d561c995925f597a0121f36b
7
- data.tar.gz: 384b78be14d95ee94dafd9941242818b84b073acc11e6833ace1cd011f95583630aeef27d22428c5a1b9864175989bbe40d292196c1908d884461310f138aa81
6
+ metadata.gz: 1c1ee7c76fd20226a6880e7f667a6f9eeb074d073248687673119574501db7e322112ade1de83768034a037a538c08182d8fdbfbab1c14f101e27ea1a86cc212
7
+ data.tar.gz: 8944a7834916e521b35ec5bf4a09cd4369cfe7613225d5f6e46fff0ffe16729e8ba80a0cdabc99647365ede937103dcc8d083deb9b756304dcff7c2f8dd060de
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-3.2.3
1
+ ruby-3.3.3
@@ -6,24 +6,24 @@ module Bard
6
6
  module Backup
7
7
  class Deleter < Struct.new(:s3_dir, :now)
8
8
  def call
9
- s3_dir.delete keys_to_delete
9
+ s3_dir.delete files_to_delete
10
10
  end
11
11
 
12
- def keys_to_delete
13
- s3_dir.keys.select do |key|
12
+ def files_to_delete
13
+ s3_dir.files.select do |file|
14
14
  [
15
- Filter.new(now, 72, :hours),
16
- Filter.new(now, 60, :days),
17
- Filter.new(now, 52, :weeks),
18
- Filter.new(now, 48, :months),
19
- Filter.new(now, 100, :years),
20
- ].all? { |filter| !filter.cover?(key) }
15
+ Filter.new(now, 48, :hours),
16
+ Filter.new(now, 30, :days),
17
+ Filter.new(now, 26, :weeks),
18
+ Filter.new(now, 24, :months),
19
+ Filter.new(now, 25, :years),
20
+ ].all? { |filter| !filter.cover?(file) }
21
21
  end
22
22
  end
23
23
 
24
24
  class Filter < Struct.new(:now, :limit, :unit)
25
- def cover? key
26
- remote = DateTime.parse(key).beginning_of_hour
25
+ def cover? file
26
+ remote = DateTime.parse(file).beginning_of_hour
27
27
  limit.times.any? do |count|
28
28
  remote == ago(count)
29
29
  end
@@ -4,13 +4,15 @@ require "rexml"
4
4
  module Bard
5
5
  module Backup
6
6
  class S3Dir < Data.define(:path, :access_key, :secret_key, :region)
7
- def keys
7
+ def files
8
8
  response = client.list_objects_v2({
9
9
  bucket: bucket_name,
10
10
  prefix: folder_prefix,
11
11
  })
12
12
  raise if response.is_truncated
13
- response.contents.map(&:key)
13
+ response.contents.map do |object|
14
+ object.key.sub("#{folder_prefix}/", "")
15
+ end
14
16
  end
15
17
 
16
18
  def put file_path, body: File.read(file_path)
@@ -35,9 +37,11 @@ module Bard
35
37
  FileUtils.rm file_path
36
38
  end
37
39
 
38
- def delete keys
39
- return if keys.empty?
40
- objects_to_delete = Array(keys).map { |key| { key: key } }
40
+ def delete file_paths
41
+ return if file_paths.empty?
42
+ objects_to_delete = Array(file_paths).map do |file_path|
43
+ { key: [folder_prefix, File.basename(file_path)].compact.join("/") }
44
+ end
41
45
  client.delete_objects({
42
46
  bucket: bucket_name,
43
47
  delete: {
@@ -48,8 +52,8 @@ module Bard
48
52
  end
49
53
 
50
54
  def empty!
51
- keys.each_slice(1000) do |key_batch|
52
- delete key_batch
55
+ files.each_slice(1000) do |batch|
56
+ delete batch
53
57
  end
54
58
  end
55
59
 
@@ -1,6 +1,6 @@
1
1
  module Bard
2
2
  module Backup
3
- VERSION = "0.4.0"
3
+ VERSION = "0.6.0"
4
4
  end
5
5
  end
6
6
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bard-backup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micah Geisel
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-08-15 00:00:00.000000000 Z
11
+ date: 2025-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backhoe
@@ -106,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  - !ruby/object:Gem::Version
107
107
  version: '0'
108
108
  requirements: []
109
- rubygems_version: 3.4.19
109
+ rubygems_version: 3.5.11
110
110
  signing_key:
111
111
  specification_version: 4
112
112
  summary: Provides automated db backups for bard projects