class Longleaf::RegisterCommand

Command for registering files with longleaf

Public Class Methods

new(app_manager) click to toggle source
# File lib/longleaf/commands/register_command.rb, line 12
def initialize(app_manager)
  @app_manager = app_manager
end

Public Instance Methods

execute(file_selector:, force: false, digest_provider: nil, physical_provider: nil) click to toggle source

Execute the register command on the given parameters @param file_selector [FileSelector] selector for files to register @param force [Boolean] force flag @param digest_provider [ManifestDigestProvider] object which provides digests for files being registered @param physical_provider [PhysicalPathProvider] object which provides physical paths for files being registered @return [Integer] status code

# File lib/longleaf/commands/register_command.rb, line 22
def execute(file_selector:, force: false, digest_provider: nil, physical_provider: nil)
  start_time = Time.now
  logger.info('Performing register command')
  begin
    # Perform register events on each of the file paths provided
    loop do
      f_path = file_selector.next_path
      break if f_path.nil?

      storage_location = @app_manager.location_manager.get_location_by_path(f_path)

      phys_path = physical_provider.get_physical_path(f_path)
      file_rec = FileRecord.new(f_path, storage_location, nil, phys_path)

      register_event = RegisterEvent.new(file_rec: file_rec, force: force, app_manager: @app_manager,
          digest_provider: digest_provider)
      track_status(register_event.perform)
    end
  rescue InvalidStoragePathError, StorageLocationUnavailableError => err
    record_failure(EventNames::REGISTER, nil, err.message)
  rescue => err
    record_failure(EventNames::REGISTER, error: err)
  end

  logger.info("Completed register command in #{Time.now - start_time}s")
  return_status
end