Sha256: 0f93bb9de36521bf4a0fbdb1e4dfd934e1b4d7dc21f96a2e889139c1e13f79a0

Contents?: true

Size: 894 Bytes

Versions: 4

Compression:

Stored size: 894 Bytes

Contents

# frozen_string_literal: true

require 'license_finder/package_utils/conan_info_parser'

module LicenseFinder
  class Conan < PackageManager
    def possible_package_paths
      [project_path.join('conanfile.txt')]
    end

    def current_packages
      install_command = 'conan install .'
      info_command = 'conan info .'
      Dir.chdir(project_path) { Cmd.run(install_command) }
      info_output, _stderr, _status = Dir.chdir(project_path) { Cmd.run(info_command) }

      info_parser = ConanInfoParser.new

      deps = info_parser.parse(info_output)
      deps.map do |dep|
        name, version = dep['name'].split('/')
        url = dep['URL']
        license_file_path = Dir.glob("#{project_path}/licenses/#{name}/**/LICENSE*").first
        ConanPackage.new(name, version, File.open(license_file_path).read, url) unless name == 'conanfile.txt'
      end.compact
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
license_finder-7.1.0 lib/license_finder/package_managers/conan.rb
license_finder-7.0.1 lib/license_finder/package_managers/conan.rb
license_finder-7.0.0 lib/license_finder/package_managers/conan.rb
license_finder-6.15.0 lib/license_finder/package_managers/conan.rb