Sha256: 597b6c979ddf86b62c959ce44af5690187f29ad617ad652af4002df7169c9f0d

Contents?: true

Size: 1.71 KB

Versions: 4

Compression:

Stored size: 1.71 KB

Contents

module Yoda
  module Store
    module Actions
      class ImportProjectDependencies
        # @return [Project]
        attr_reader :project

        # @param errors [Array<BaseError>]
        attr_reader :errors

        # @param project [Project]
        def initialize(project)
          @project = project
          @errors = []
        end

        def run
          libraries_status = project.registry.libraries.status
          library_to_add, library_to_remove = calculate_dependency(libraries_status)

          if !library_to_add.empty? || !library_to_remove.empty?
            Logger.info 'Constructing database for the current project.'
            Logger.trace 'Adding libraries: ' + library_to_add.map(&:name).join(', ')
            Logger.trace 'Removing libraries: ' + library_to_remove.map(&:name).join(', ')
            project.registry.libraries.modify(add: library_to_add, remove: library_to_remove)
          else
            Logger.info 'No library changes to the current project.'
          end

          self
        end

        private

        # @param libraries_status [Object::LibrariesStatus]
        # @return [Array(Array<Object::Library::Core, Objects::Library::Std, Objects::Library::Gem>, Array<Object::Library::Core, Objects::Library::Std, Objects::Library::Gem>)]
        def calculate_dependency(libraries_status)
          libraries = Objects::LibrariesStatus.libraies_from_dependency(project.dependency)
          Logger.trace 'Requested libraries: ' + libraries.map(&:name).join(', ')
          library_to_add = libraries - libraries_status.libraries
          library_to_remove = libraries_status.libraries - libraries
          [library_to_add, library_to_remove]
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
yoda-language-server-0.10.1 lib/yoda/store/actions/import_project_dependencies.rb
yoda-language-server-0.10.0 lib/yoda/store/actions/import_project_dependencies.rb
yoda-language-server-0.9.0 lib/yoda/store/actions/import_project_dependencies.rb
yoda-language-server-0.8.0 lib/yoda/store/actions/import_project_dependencies.rb