Sha256: d2c9f9de9ad1a78ff52dddf48623ebfcfbd76c59df769a4b70f440171a31b302

Contents?: true

Size: 925 Bytes

Versions: 25

Compression:

Stored size: 925 Bytes

Contents

# frozen_string_literal: true

require 'json'

module LicenseFinder
  class Cargo < PackageManager
    def current_packages
      cargo_output.map do |package|
        path = Dir.glob("#{Dir.home}/.cargo/registry/src/**/#{package['name']}-#{package['version']}").first
        CargoPackage.new(package, logger: logger, install_path: path)
      end
    end

    def package_management_command
      'cargo'
    end

    def prepare_command
      'cargo fetch'
    end

    def possible_package_paths
      [project_path.join('Cargo.lock'), project_path.join('Cargo.toml')]
    end

    private

    def cargo_output
      command = "#{package_management_command} metadata --format-version=1"

      stdout, stderr, status = Dir.chdir(project_path) { Cmd.run(command) }
      raise "Command '#{command}' failed to execute: #{stderr}" unless status.success?

      JSON(stdout)
        .fetch('packages', [])
    end
  end
end

Version data entries

25 entries across 25 versions & 2 rubygems

Version Path
license_finder-7.1.0 lib/license_finder/package_managers/cargo.rb
license_finder-7.0.1 lib/license_finder/package_managers/cargo.rb
license_finder-7.0.0 lib/license_finder/package_managers/cargo.rb
license_finder-6.15.0 lib/license_finder/package_managers/cargo.rb
gitlab-license_finder-6.14.2.1 lib/license_finder/package_managers/cargo.rb
license_finder-6.14.2 lib/license_finder/package_managers/cargo.rb
license_finder-6.14.1 lib/license_finder/package_managers/cargo.rb
license_finder-6.13.0 lib/license_finder/package_managers/cargo.rb
license_finder-6.12.2 lib/license_finder/package_managers/cargo.rb
license_finder-6.12.1 lib/license_finder/package_managers/cargo.rb
license_finder-6.12.0 lib/license_finder/package_managers/cargo.rb
license_finder-6.11.0 lib/license_finder/package_managers/cargo.rb
license_finder-6.10.1 lib/license_finder/package_managers/cargo.rb
license_finder-6.10.0 lib/license_finder/package_managers/cargo.rb
license_finder-6.9.0 lib/license_finder/package_managers/cargo.rb
license_finder-6.8.2 lib/license_finder/package_managers/cargo.rb
license_finder-6.8.1 lib/license_finder/package_managers/cargo.rb
license_finder-6.8.0 lib/license_finder/package_managers/cargo.rb
license_finder-6.7.0 lib/license_finder/package_managers/cargo.rb
license_finder-6.6.2 lib/license_finder/package_managers/cargo.rb