Skip to content

Commit

Permalink
ISSUE-16 - Remove use of cargo::core:
Browse files Browse the repository at this point in the history
* Replace usage of cargo core dependency kind
* Remove use of package set

Signed-off-by: joshmc <josh-mcc@tiscali.co.uk>
  • Loading branch information
jmcconnell26 committed Nov 25, 2020
1 parent eef3230 commit 3044f48
Show file tree
Hide file tree
Showing 14 changed files with 116 additions and 111 deletions.
17 changes: 9 additions & 8 deletions cargo-geiger/src/format.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ pub mod table;
mod display;
mod parse;

use cargo::core::dependency::DepKind;
use cargo_metadata::DependencyKind;
use std::fmt;
use std::str::{self, FromStr};
use strum_macros::EnumIter;
Expand Down Expand Up @@ -79,11 +79,12 @@ impl fmt::Display for FormatError {
}
}

pub fn get_kind_group_name(dep_kind: DepKind) -> Option<&'static str> {
pub fn get_kind_group_name(dep_kind: DependencyKind) -> Option<&'static str> {
match dep_kind {
DepKind::Build => Some("[build-dependencies]"),
DepKind::Development => Some("[dev-dependencies]"),
DepKind::Normal => None,
DependencyKind::Build => Some("[build-dependencies]"),
DependencyKind::Development => Some("[dev-dependencies]"),
DependencyKind::Normal => None,
_ => panic!("Unrecognised Dependency Kind"),
}
}

Expand All @@ -103,15 +104,15 @@ mod format_tests {
#[rstest]
fn get_kind_group_name_test() {
assert_eq!(
get_kind_group_name(DepKind::Build),
get_kind_group_name(DependencyKind::Build),
Some("[build-dependencies]")
);

assert_eq!(
get_kind_group_name(DepKind::Development),
get_kind_group_name(DependencyKind::Development),
Some("[dev-dependencies]")
);

assert_eq!(get_kind_group_name(DepKind::Normal), None);
assert_eq!(get_kind_group_name(DependencyKind::Normal), None);
}
}
18 changes: 12 additions & 6 deletions cargo-geiger/src/format/table/handle_text_tree_line.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use super::total_package_counts::TotalPackageCounts;
use super::TableParameters;
use super::{table_row, table_row_empty};

use cargo::core::dependency::DepKind;
use cargo_metadata::DependencyKind;
use std::collections::HashSet;

pub struct HandlePackageParameters<'a> {
Expand All @@ -18,7 +18,7 @@ pub struct HandlePackageParameters<'a> {
}

pub fn handle_text_tree_line_extra_deps_group(
dep_kind: DepKind,
dep_kind: DependencyKind,
table_lines: &mut Vec<String>,
tree_vines: String,
) {
Expand Down Expand Up @@ -162,12 +162,18 @@ mod handle_text_tree_line_tests {
#[rstest(
input_dep_kind,
expected_kind_group_name,
case(DepKind::Build, Some(String::from("[build-dependencies]"))),
case(DepKind::Development, Some(String::from("[dev-dependencies]"))),
case(DepKind::Normal, None)
case(
DependencyKind::Build,
Some(String::from("[build-dependencies]"))
),
case(
DependencyKind::Development,
Some(String::from("[dev-dependencies]"))
),
case(DependencyKind::Normal, None)
)]
fn handle_text_tree_line_extra_deps_group_test(
input_dep_kind: DepKind,
input_dep_kind: DependencyKind,
expected_kind_group_name: Option<String>,
) {
let mut table_lines = Vec::<String>::new();
Expand Down
6 changes: 6 additions & 0 deletions cargo-geiger/src/mapping.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,12 @@ pub trait ToCargoCoreDepKind {
fn to_cargo_core_dep_kind(&self) -> DepKind;
}

pub trait ToCargoGeigerDependencyKind {
fn to_cargo_geiger_dependency_kind(
&self,
) -> cargo_geiger_serde::DependencyKind;
}

pub trait ToCargoGeigerPackageId {
fn to_cargo_geiger_package_id(
&self,
Expand Down
19 changes: 18 additions & 1 deletion cargo-geiger/src/mapping/metadata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use super::{
ToCargoMetadataPackageId, ToPackage, ToPackageId,
};

use crate::mapping::ToCargoMetadataPackage;
use crate::mapping::{ToCargoGeigerDependencyKind, ToCargoMetadataPackage};

use cargo::core::dependency::DepKind;
use cargo::core::{Package, PackageId, PackageSet};
Expand Down Expand Up @@ -79,6 +79,23 @@ impl ToCargoCoreDepKind for DependencyKind {
}
}

impl ToCargoGeigerDependencyKind for cargo_metadata::DependencyKind {
fn to_cargo_geiger_dependency_kind(
&self,
) -> cargo_geiger_serde::DependencyKind {
match self {
DependencyKind::Build => cargo_geiger_serde::DependencyKind::Build,
DependencyKind::Development => {
cargo_geiger_serde::DependencyKind::Development
}
DependencyKind::Normal => {
cargo_geiger_serde::DependencyKind::Normal
}
_ => panic!("Unrecognised Dependency Kind"),
}
}
}

impl ToCargoGeigerPackageId for cargo_metadata::PackageId {
fn to_cargo_geiger_package_id(
&self,
Expand Down
20 changes: 4 additions & 16 deletions cargo-geiger/src/scan.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,18 @@ use crate::args::Args;
use crate::format::print_config::PrintConfig;
use crate::graph::Graph;
use crate::mapping::{
CargoMetadataParameters, ToCargoCoreDepKind, ToCargoGeigerPackageId,
CargoMetadataParameters, ToCargoGeigerDependencyKind,
ToCargoGeigerPackageId,
};

pub use rs_file::RsFileMetricsWrapper;

use default::scan_unsafe;
use forbid::scan_forbid_unsafe;

use cargo::core::dependency::DepKind;
use cargo::core::{PackageSet, Workspace};
use cargo::{CliResult, Config};
use cargo_geiger_serde::{
CounterBlock, DependencyKind, PackageInfo, UnsafeInfo,
};
use cargo_geiger_serde::{CounterBlock, PackageInfo, UnsafeInfo};
use petgraph::visit::EdgeRef;
use std::collections::{HashMap, HashSet};
use std::path::PathBuf;
Expand Down Expand Up @@ -197,9 +195,7 @@ fn package_metrics(

package.add_dependency(
dep,
from_cargo_dependency_kind(
edge.weight().to_cargo_core_dep_kind(),
),
edge.weight().to_cargo_geiger_dependency_kind(),
);
}
match geiger_context.package_id_to_metrics.get(&package_id) {
Expand All @@ -217,14 +213,6 @@ fn package_metrics(
package_metrics
}

fn from_cargo_dependency_kind(kind: DepKind) -> DependencyKind {
match kind {
DepKind::Normal => DependencyKind::Normal,
DepKind::Development => DependencyKind::Development,
DepKind::Build => DependencyKind::Build,
}
}

#[cfg(test)]
mod scan_tests {
use super::*;
Expand Down
10 changes: 1 addition & 9 deletions cargo-geiger/src/scan/default.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ pub fn scan_unsafe(
None => scan_to_table(
cargo_metadata_parameters,
graph,
package_set,
root_package_id,
scan_parameters,
workspace,
Expand Down Expand Up @@ -89,7 +88,6 @@ fn build_compile_options<'a>(

fn scan(
cargo_metadata_parameters: &CargoMetadataParameters,
package_set: &PackageSet,
scan_parameters: &ScanParameters,
workspace: &Workspace,
) -> Result<ScanDetails, CliError> {
Expand All @@ -103,7 +101,6 @@ fn scan(
cargo_metadata_parameters,
scan_parameters.config,
ScanMode::Full,
package_set,
scan_parameters.print_config,
)?;
Ok(ScanDetails {
Expand All @@ -124,12 +121,7 @@ fn scan_to_report(
let ScanDetails {
rs_files_used,
geiger_context,
} = scan(
cargo_metadata_parameters,
package_set,
scan_parameters,
workspace,
)?;
} = scan(cargo_metadata_parameters, scan_parameters, workspace)?;
let mut report = SafetyReport::default();
for (package, package_metrics_option) in package_metrics(
cargo_metadata_parameters,
Expand Down
11 changes: 2 additions & 9 deletions cargo-geiger/src/scan/default/table.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use super::scan;

use crate::mapping::CargoMetadataParameters;
use cargo::core::shell::Verbosity;
use cargo::core::{PackageSet, Workspace};
use cargo::core::Workspace;
use cargo::{CliError, CliResult};
use colored::Colorize;
use std::error::Error;
Expand All @@ -23,7 +23,6 @@ use std::fmt;
pub fn scan_to_table(
cargo_metadata_parameters: &CargoMetadataParameters,
graph: &Graph,
package_set: &PackageSet,
root_package_id: cargo_metadata::PackageId,
scan_parameters: &ScanParameters,
workspace: &Workspace,
Expand All @@ -33,12 +32,7 @@ pub fn scan_to_table(
let ScanDetails {
rs_files_used,
geiger_context,
} = scan(
cargo_metadata_parameters,
package_set,
scan_parameters,
workspace,
)?;
} = scan(cargo_metadata_parameters, scan_parameters, workspace)?;

if scan_parameters.print_config.verbosity == Verbosity::Verbose {
let mut rs_files_used_lines =
Expand All @@ -53,7 +47,6 @@ pub fn scan_to_table(
let text_tree_lines = walk_dependency_tree(
cargo_metadata_parameters,
&graph,
package_set,
&scan_parameters.print_config,
root_package_id,
);
Expand Down
18 changes: 2 additions & 16 deletions cargo-geiger/src/scan/find.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
use crate::format::print_config::PrintConfig;
use crate::mapping::{
CargoMetadataParameters, GetRoot, ToCargoMetadataPackage,
};
use crate::mapping::{CargoMetadataParameters, GetRoot};
use crate::scan::rs_file::{
into_is_entry_point_and_path_buf, into_rs_code_file, into_target_kind,
is_file_with_ext, RsFile, RsFileMetricsWrapper,
Expand All @@ -10,7 +8,6 @@ use crate::scan::PackageMetrics;

use super::{GeigerContext, ScanMode};

use cargo::core::package::PackageSet;
use cargo::util::CargoResult;
use cargo::{CliError, Config};
use geiger::{find_unsafe_in_file, IncludeTests, RsFileMetrics, ScanFileError};
Expand All @@ -23,7 +20,6 @@ pub fn find_unsafe(
cargo_metadata_parameters: &CargoMetadataParameters,
config: &Config,
mode: ScanMode,
package_set: &PackageSet,
print_config: &PrintConfig,
) -> Result<GeigerContext, CliError> {
let mut progress = cargo::util::Progress::new("Scanning", config);
Expand All @@ -32,7 +28,6 @@ pub fn find_unsafe(
cargo_metadata_parameters,
print_config.include_tests,
mode,
package_set,
|i, count| -> CargoResult<()> { progress.tick(i, count) },
);
progress.clear();
Expand All @@ -45,22 +40,13 @@ fn find_unsafe_in_packages<F>(
cargo_metadata_parameters: &CargoMetadataParameters,
include_tests: IncludeTests,
mode: ScanMode,
package_set: &PackageSet,
mut progress_step: F,
) -> GeigerContext
where
F: FnMut(usize, usize) -> CargoResult<()>,
{
let mut package_id_to_metrics = HashMap::new();
let packages = package_set
.get_many(package_set.package_ids())
.unwrap()
.iter()
.map(|p| {
p.to_cargo_metadata_package(cargo_metadata_parameters.metadata)
.unwrap()
})
.collect::<Vec<cargo_metadata::Package>>();
let packages = cargo_metadata_parameters.metadata.packages.to_vec();
let package_code_files: Vec<_> =
find_rs_files_in_packages(&packages).collect();
let package_code_file_count = package_code_files.len();
Expand Down
2 changes: 0 additions & 2 deletions cargo-geiger/src/scan/forbid.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ pub fn scan_forbid_unsafe(
cargo_metadata_parameters,
scan_parameters.config,
graph,
package_set,
scan_parameters.print_config,
root_package_id,
),
Expand All @@ -54,7 +53,6 @@ fn scan_forbid_to_report(
cargo_metadata_parameters,
config,
ScanMode::EntryPointsOnly,
package_set,
print_config,
)?;
let mut report = QuickSafetyReport::default();
Expand Down
4 changes: 0 additions & 4 deletions cargo-geiger/src/scan/forbid/table.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,13 @@ use super::super::find::find_unsafe;
use super::super::ScanMode;

use crate::scan::GeigerContext;
use cargo::core::PackageSet;
use cargo::{CliResult, Config};
use colored::Colorize;

pub fn scan_forbid_to_table(
cargo_metadata_parameters: &CargoMetadataParameters,
config: &Config,
graph: &Graph,
package_set: &PackageSet,
print_config: &PrintConfig,
root_package_id: cargo_metadata::PackageId,
) -> CliResult {
Expand All @@ -32,7 +30,6 @@ pub fn scan_forbid_to_table(
let tree_lines = walk_dependency_tree(
cargo_metadata_parameters,
&graph,
package_set,
&print_config,
root_package_id,
);
Expand All @@ -56,7 +53,6 @@ pub fn scan_forbid_to_table(
cargo_metadata_parameters,
config,
ScanMode::EntryPointsOnly,
package_set,
print_config,
)?;

Expand Down
7 changes: 5 additions & 2 deletions cargo-geiger/src/tree.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ pub mod traversal;
use crate::format::print_config::{Prefix, PrintConfig};
use crate::format::Charset;

use cargo::core::dependency::DepKind;
use cargo_metadata::DependencyKind;

/// A step towards decoupling some parts of the table-tree printing from the
/// dependency graph traversal.
Expand All @@ -16,7 +16,10 @@ pub enum TextTreeLine {
},
/// There are extra dependencies coming and we should print a group header,
/// eg. "[build-dependencies]".
ExtraDepsGroup { kind: DepKind, tree_vines: String },
ExtraDepsGroup {
kind: DependencyKind,
tree_vines: String,
},
}

#[derive(Debug, PartialEq)]
Expand Down
Loading

0 comments on commit 3044f48

Please sign in to comment.