class LicenseScout::DependencyManager::Cargo
Public Instance Methods
dependencies()
click to toggle source
# File lib/license_scout/dependency_manager/cargo.rb, line 43 def dependencies dependency_data.map do |crate_data| dep_name = crate_data["name"] dep_version = crate_data["version"] dep_license = crate_data["license"] dependency = new_dependency(dep_name, dep_version, nil) dependency.add_license(dep_license, "https://crates.io/crates/#{dep_name}/#{dep_version}") dependency end.compact end
detected?()
click to toggle source
# File lib/license_scout/dependency_manager/cargo.rb, line 39 def detected? File.exist?(cargo_file_path) && File.exist?(cargo_lockfile_path) end
install_command()
click to toggle source
# File lib/license_scout/dependency_manager/cargo.rb, line 35 def install_command "cargo build" end
name()
click to toggle source
# File lib/license_scout/dependency_manager/cargo.rb, line 23 def name "rust_cargo" end
signature()
click to toggle source
# File lib/license_scout/dependency_manager/cargo.rb, line 31 def signature "Cargo and Cargo.lock files" end
type()
click to toggle source
# File lib/license_scout/dependency_manager/cargo.rb, line 27 def type "rust" end
Private Instance Methods
cargo_file_path()
click to toggle source
# File lib/license_scout/dependency_manager/cargo.rb, line 85 def cargo_file_path File.join(directory, "Cargo.toml") end
cargo_lockfile_path()
click to toggle source
# File lib/license_scout/dependency_manager/cargo.rb, line 89 def cargo_lockfile_path File.join(directory, "Cargo.lock") end
dependency_data()
click to toggle source
# File lib/license_scout/dependency_manager/cargo.rb, line 58 def dependency_data Dir.chdir(directory) do install_cargo_license_crate s = Mixlib::ShellOut.new("cargo-license -d -j") s.run_command s.error! json_dep_data = s.stdout FFI_Yajl::Parser.parse(json_dep_data) end end
install_cargo_license_crate()
click to toggle source
# File lib/license_scout/dependency_manager/cargo.rb, line 71 def install_cargo_license_crate # Attempt to install cargo-license s = Mixlib::ShellOut.new("cargo install cargo-license") s.run_command # If cargo-license is already installed, it will return an error # but we can ignore it # Any other error, however, should halt the process and be returned # to the user if s.stderr != "" && s.stderr !~ /binary `cargo-license` already exists/ s.error! end end