ocfl 0.2.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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