ocfl 0.2.0 → 0.4.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: 5b7d95d43fc87d3ce3d87f27aa4c89bf5692df05b2a144e31ba364beafa9d829
4
- data.tar.gz: c04004d43c6147808882b8c126e218c655787469c5c0565f41714adb93cceb63
3
+ metadata.gz: 256cd51a71d4728f32b12904cd02153e92a3a054e0b7b9ee7f18f7aca7a34320
4
+ data.tar.gz: d8bfb5f8571e998710fb6e7e5f245e7723886d3db26c0c54537f2b172d456d46
5
5
  SHA512:
6
- metadata.gz: 408709f7faedf25af358673629d874844b915f6023ab842732f5625f17ae6903b3f39f9f7e4fa37a7ebfdae4824eab1f6b780af5ed2c5ecfcf7476555d484a13
7
- data.tar.gz: bd5a83be543d91953d85f9ab712ebdd3f4f4c714c626afb4c92ee355351deec6e5a398fc29a087b1876fcaeebe4ae4328b2dc4a502201b491bf2b443307d678a
6
+ metadata.gz: e3aad0f2020ef90a36b3fdf71129e9bd84fce068e665eecb08e00d37cd897d7d5c91298ed8dfaadc0b6d8a27060cb5306eb85bbbe630267fb8889989279a795f
7
+ data.tar.gz: '07609a37af93df25a2d836f46d42591972514265272f6a4fe3e1bf333198f7c98eae07e8ce5f21499967340627a2013f2f6e450433af3824f0146d855f0c03c8'
@@ -18,11 +18,16 @@ module OCFL
18
18
  attr_reader :id, :object_root, :object_directory
19
19
 
20
20
  def copy_file(...)
21
- create_directory
21
+ create_object_directory
22
22
  version.copy_file(...)
23
23
  end
24
24
 
25
- def create_directory
25
+ def copy_recursive(...)
26
+ create_object_directory
27
+ version.copy_recursive(...)
28
+ end
29
+
30
+ def create_object_directory
26
31
  FileUtils.mkdir_p(object_root)
27
32
  end
28
33
 
@@ -25,25 +25,38 @@ module OCFL
25
25
  FileUtils.mv(incoming_path, content_path)
26
26
  end
27
27
 
28
- def copy_file(incoming_path)
28
+ def copy_file(incoming_path, destination_path: '')
29
29
  prepare_content_directory
30
- add(incoming_path)
31
- FileUtils.cp(incoming_path, content_path)
30
+ copy_one(File.basename(incoming_path), incoming_path, destination_path)
32
31
  end
33
32
 
34
33
  # Copies files into the object and preserves their relative paths as logical directories in the object
35
- def copy_recursive(incoming_path)
34
+ def copy_recursive(incoming_path, destination_path: '')
36
35
  prepare_content_directory
37
36
  incoming_path = incoming_path.delete_suffix("/")
38
37
  Dir.glob("#{incoming_path}/**/*").reject { |fn| File.directory?(fn) }.each do |file|
39
- logical_file_path = file.delete_prefix(incoming_path).delete_prefix("/")
40
- add(file, logical_file_path:)
41
- parent_dir = (content_path + logical_file_path).parent
42
- FileUtils.mkdir_p(parent_dir)
43
- FileUtils.cp(file, content_path + logical_file_path)
38
+ copy_one(file.delete_prefix(incoming_path).delete_prefix("/"), file, destination_path)
44
39
  end
45
40
  end
46
41
 
42
+ def save
43
+ inventory = build_inventory
44
+ InventoryWriter.new(inventory:, path:).write
45
+ FileUtils.cp(path + "inventory.json", object_directory.object_root)
46
+ FileUtils.cp(path + "inventory.json.sha512", object_directory.object_root)
47
+ object_directory.reload
48
+ end
49
+
50
+ private
51
+
52
+ def copy_one(logical_file_path, incoming_path, destination_path)
53
+ logical_file_path = File.join(destination_path, logical_file_path) unless destination_path.empty?
54
+ add(incoming_path, logical_file_path:)
55
+ parent_dir = (content_path + logical_file_path).parent
56
+ FileUtils.mkdir_p(parent_dir) unless parent_dir == content_path
57
+ FileUtils.cp(incoming_path, content_path + logical_file_path)
58
+ end
59
+
47
60
  def add(incoming_path, logical_file_path: File.basename(incoming_path))
48
61
  digest = Digest::SHA512.file(incoming_path).to_s
49
62
  version_content_path = content_path.relative_path_from(object_directory.object_root)
@@ -95,14 +108,6 @@ module OCFL
95
108
  shas_in_versions = versions.values.flat_map { |v| v.state.keys }.uniq
96
109
  manifest.slice(*shas_in_versions)
97
110
  end
98
-
99
- def save
100
- inventory = build_inventory
101
- InventoryWriter.new(inventory:, path:).write
102
- FileUtils.cp(path + "inventory.json", object_directory.object_root)
103
- FileUtils.cp(path + "inventory.json.sha512", object_directory.object_root)
104
- object_directory.reload
105
- end
106
111
  end
107
112
  end
108
113
  end
data/lib/ocfl/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OCFL
4
- VERSION = "0.2.0"
4
+ VERSION = "0.4.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ocfl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-13 00:00:00.000000000 Z
11
+ date: 2024-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport