ocfl 0.3.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 +4 -4
- data/lib/ocfl/object/draft_version.rb +22 -17
- data/lib/ocfl/version.rb +1 -1
- metadata +1 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 256cd51a71d4728f32b12904cd02153e92a3a054e0b7b9ee7f18f7aca7a34320
         | 
| 4 | 
            +
              data.tar.gz: d8bfb5f8571e998710fb6e7e5f245e7723886d3db26c0c54537f2b172d456d46
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: e3aad0f2020ef90a36b3fdf71129e9bd84fce068e665eecb08e00d37cd897d7d5c91298ed8dfaadc0b6d8a27060cb5306eb85bbbe630267fb8889989279a795f
         | 
| 7 | 
            +
              data.tar.gz: '07609a37af93df25a2d836f46d42591972514265272f6a4fe3e1bf333198f7c98eae07e8ce5f21499967340627a2013f2f6e450433af3824f0146d855f0c03c8'
         | 
| @@ -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 | 
            -
                     | 
| 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 | 
            -
                       | 
| 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