Skip to content
This repository has been archived by the owner on Aug 15, 2024. It is now read-only.

Commit

Permalink
Merge pull request #16 from hi-rustin/rustin-patch-new-line
Browse files Browse the repository at this point in the history
  • Loading branch information
Rustin170506 authored Nov 14, 2023
2 parents 6f586e5 + 73a12f3 commit 42cbe37
Showing 1 changed file with 83 additions and 23 deletions.
106 changes: 83 additions & 23 deletions src/ops/view.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
use std::io::Write;

use cargo::{
core::{dependency::DepKind, FeatureMap, Package, PackageId, Summary, Target},
core::{
dependency::DepKind, manifest::ManifestMetadata, FeatureMap, Package, PackageId, Summary,
Target,
},
CargoResult,
};

Expand All @@ -17,10 +20,45 @@ pub(super) fn pretty_view(
let package_id = summary.package_id();
let metadata = package.manifest().metadata();

let yellow = YELLOW.render();
let cyan = CYAN.render();
let reset = anstyle::Reset.render();

pretty_basic_info(package, &package_id, metadata, summaries, stdout)?;

// Keywords.
if !metadata.keywords.is_empty() {
write!(stdout, "keywords: ")?;
writeln!(
stdout,
"{cyan}#{keywords}{reset}",
keywords = metadata.keywords.join(" #")
)?;
writeln!(stdout)?;
}

pretty_description_and_links(metadata, stdout)?;

pretty_kind(package, stdout)?;

pretty_deps(package, stdout)?;

pretty_features(summary.features(), stdout)?;

pretty_authors(&metadata.authors, stdout)?;

Ok(())
}

fn pretty_basic_info(
package: &Package,
package_id: &PackageId,
metadata: &ManifestMetadata,
summaries: &[Summary],
stdout: &mut dyn Write,
) -> CargoResult<()> {
let yellow = YELLOW.render();
let reset = anstyle::Reset.render();

// Basic information.
writeln!(stdout)?;
write!(
Expand All @@ -32,7 +70,7 @@ pub(super) fn pretty_view(
write!(stdout, " | ")?;
match metadata.license {
Some(ref license) => {
write!(stdout, "{yellow}{license}{reset}", license = license)?;
write!(stdout, "{yellow}{license}{reset}")?;
}
None => {
write!(stdout, "{yellow}No license{reset}")?;
Expand All @@ -44,7 +82,11 @@ pub(super) fn pretty_view(
write!(stdout, "{yellow}{deps}{reset}")?;
write!(stdout, " | ")?;
write!(stdout, "versions: ")?;
write!(stdout, "{yellow}{len}{reset}", len = summaries.len())?;
write!(
stdout,
"{yellow}{versions}{reset}",
versions = summaries.len()
)?;
write!(stdout, " | ")?;
write!(stdout, "edition: ")?;
write!(
Expand All @@ -57,18 +99,20 @@ pub(super) fn pretty_view(
write!(stdout, "rust: ")?;
write!(stdout, "{yellow}{rust_version}{reset}")?;
}
writeln!(stdout)?;

// Keywords.
if !metadata.keywords.is_empty() {
write!(stdout, "keywords: ")?;
writeln!(
stdout,
"{cyan}#{keywords}{reset}",
keywords = metadata.keywords.join(" #")
)?;
writeln!(stdout)?;
}
// Make sure there is a newline at the end.
writeln!(stdout, "\n")?;

Ok(())
}

fn pretty_description_and_links(
metadata: &ManifestMetadata,
stdout: &mut dyn Write,
) -> CargoResult<()> {
let cyan = CYAN.render();
let reset = anstyle::Reset.render();
let mut printed = false;

// Description and links.
if let Some(ref description) = metadata.description {
Expand All @@ -77,26 +121,42 @@ pub(super) fn pretty_view(
"{description}",
description = description.trim_end()
)?;
writeln!(stdout)?;
printed = true;
}
if let Some(ref homepage) = metadata.homepage {
write!(stdout, "Homepage: ")?;
writeln!(stdout, "{cyan}{homepage}{reset}")?;
printed = true;
}
if let Some(ref repository) = metadata.repository {
write!(stdout, "Repository: ")?;
writeln!(stdout, "{cyan}{repository}{reset}")?;
printed = true;
}
if let Some(ref documentation) = metadata.documentation {
write!(stdout, "Documentation: ")?;
writeln!(stdout, "{cyan}{documentation}{reset}")?;
printed = true;
}
writeln!(stdout)?;

// Only print a newline if something was printed.
if printed {
writeln!(stdout)?;
}

Ok(())
}

fn pretty_kind(package: &Package, stdout: &mut dyn Write) -> CargoResult<()> {
let cyan = CYAN.render();
let reset = anstyle::Reset.render();
let mut printed = false;

// Kind.
if let Some(library) = package.library() {
write!(stdout, "lib: ")?;
writeln!(stdout, "{cyan}{name}{reset}", name = library.name())?;
printed = true;
}
let binaries = package
.targets()
Expand All @@ -110,14 +170,13 @@ pub(super) fn pretty_view(
write!(stdout, " ")?;
}
writeln!(stdout)?;
printed = true;
}
writeln!(stdout)?;

pretty_deps(package, stdout)?;

pretty_features(summary.features(), stdout)?;

pretty_authors(&metadata.authors, stdout)?;
// Only print a newline if something was printed.
if printed {
writeln!(stdout)?;
}

Ok(())
}
Expand Down Expand Up @@ -276,6 +335,7 @@ fn pretty_authors(authors: &[String], stdout: &mut dyn Write) -> CargoResult<()>
for author in authors {
writeln!(stdout, "- {yellow}{author}{reset}")?;
}
writeln!(stdout)?;
}

Ok(())
Expand Down

0 comments on commit 42cbe37

Please sign in to comment.