Skip to content

Commit

Permalink
Switch from clap to lexopt
Browse files Browse the repository at this point in the history
  • Loading branch information
taiki-e committed Jul 21, 2022
1 parent bef3da1 commit 48ed498
Show file tree
Hide file tree
Showing 8 changed files with 661 additions and 403 deletions.
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "cargo-llvm-cov"
version = "0.4.11" #publish:version
edition = "2021"
rust-version = "1.57"
rust-version = "1.56"
license = "Apache-2.0 OR MIT"
repository = "https://github.com/taiki-e/cargo-llvm-cov"
keywords = ["cargo", "coverage", "subcommand", "testing"]
Expand All @@ -28,12 +28,12 @@ anyhow = "1.0.34"
atty = "0.2.11"
camino = "1.0.3"
cargo_metadata = "0.14"
clap = { version = "3.2.3", features = ["derive"] }
duct = "0.13.1"
fs-err = "2.5"
glob = "0.3"
home = "0.5"
is_executable = "1"
lexopt = "0.2"
opener = "0.5"
regex = { version = "1.3", default-features = false, features = ["perf", "std"] }
rustc-demangle = "0.1.21"
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

[![crates.io](https://img.shields.io/crates/v/cargo-llvm-cov?style=flat-square&logo=rust)](https://crates.io/crates/cargo-llvm-cov)
[![license](https://img.shields.io/badge/license-Apache--2.0_OR_MIT-blue?style=flat-square)](#license)
[![rustc](https://img.shields.io/badge/rustc-1.57+-blue?style=flat-square&logo=rust)](https://www.rust-lang.org)
[![rustc](https://img.shields.io/badge/rustc-1.56+-blue?style=flat-square&logo=rust)](https://www.rust-lang.org)
[![build status](https://img.shields.io/github/workflow/status/taiki-e/cargo-llvm-cov/CI/main?style=flat-square&logo=github)](https://github.com/taiki-e/cargo-llvm-cov/actions)

Cargo subcommand to easily use LLVM source-based code coverage.
Expand Down Expand Up @@ -476,7 +476,7 @@ Running cargo-llvm-cov requires rustc 1.60+.
cargo install cargo-llvm-cov
```

Currently, installing cargo-llvm-cov requires rustc 1.57+.
Currently, installing cargo-llvm-cov requires rustc 1.56+.

<!-- omit in toc -->
### From prebuilt binaries
Expand Down
62 changes: 8 additions & 54 deletions src/cargo.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use anyhow::{bail, format_err, Context as _, Result};
use camino::{Utf8Path, Utf8PathBuf};

use crate::{
cli::{Args, ManifestOptions, RunOptions},
cli::{Args, ManifestOptions, Subcommand},
config::Config,
context::Context,
env,
Expand Down Expand Up @@ -194,13 +194,13 @@ fn metadata(
options: &ManifestOptions,
) -> Result<cargo_metadata::Metadata> {
let mut cmd = cmd!(cargo, "metadata", "--format-version=1", "--manifest-path", manifest_path);
options.cargo_args(&mut cmd);
serde_json::from_str(&cmd.read()?)
.with_context(|| format!("failed to parse output from {}", cmd))
}

// https://doc.rust-lang.org/nightly/cargo/commands/cargo-test.html
pub(crate) fn test_args(cx: &Context, args: &Args, cmd: &mut ProcessBuilder) {
// https://doc.rust-lang.org/nightly/cargo/commands/cargo-run.html
pub(crate) fn test_or_run_args(cx: &Context, args: &Args, cmd: &mut ProcessBuilder) {
let mut has_target_selection_options = false;
if args.lib {
has_target_selection_options = true;
Expand Down Expand Up @@ -251,13 +251,10 @@ pub(crate) fn test_args(cx: &Context, args: &Args, cmd: &mut ProcessBuilder) {
cmd.arg("--doc");
}

if !has_target_selection_options && !cx.doctests {
if args.subcommand == Subcommand::Test && !has_target_selection_options && !cx.doctests {
cmd.arg("--tests");
}

if args.quiet {
cmd.arg("--quiet");
}
if args.no_fail_fast {
cmd.arg("--no-fail-fast");
}
Expand All @@ -284,55 +281,14 @@ pub(crate) fn test_args(cx: &Context, args: &Args, cmd: &mut ProcessBuilder) {
cmd.arg(&cx.ws.target_dir);

cx.build.cargo_args(cmd);
cx.manifest.cargo_args(cmd);

for unstable_flag in &args.unstable_flags {
cmd.arg("-Z");
cmd.arg(unstable_flag);
}

if !args.args.is_empty() {
cmd.arg("--");
cmd.args(&args.args);
}
}

// https://doc.rust-lang.org/nightly/cargo/commands/cargo-run.html
pub(crate) fn run_args(cx: &Context, args: &RunOptions, cmd: &mut ProcessBuilder) {
for name in &args.bin {
cmd.arg("--bin");
cmd.arg(name);
}
for name in &args.example {
cmd.arg("--example");
cmd.arg(name);
}

if args.quiet {
cmd.arg("--quiet");
}
if let Some(package) = &args.package {
cmd.arg("--package");
cmd.arg(package);
}

cmd.arg("--manifest-path");
cmd.arg(&cx.ws.current_manifest);

cmd.arg("--target-dir");
cmd.arg(&cx.ws.target_dir);

cx.build.cargo_args(cmd);
cx.manifest.cargo_args(cmd);

for unstable_flag in &args.unstable_flags {
cmd.arg("-Z");
cmd.arg(unstable_flag);
for cargo_arg in &args.cargo_args {
cmd.arg(cargo_arg);
}

if !args.args.is_empty() {
if !args.rest.is_empty() {
cmd.arg("--");
cmd.args(&args.args);
cmd.args(&args.rest);
}
}

Expand Down Expand Up @@ -360,8 +316,6 @@ pub(crate) fn clean_args(cx: &Context, cmd: &mut ProcessBuilder) {
cmd.arg("--target-dir");
cmd.arg(&cx.ws.target_dir);

cx.manifest.cargo_args(cmd);

// If `-vv` is passed, propagate `-v` to cargo.
if cx.build.verbose > 1 {
cmd.arg(format!("-{}", "v".repeat(cx.build.verbose as usize - 1)));
Expand Down
13 changes: 6 additions & 7 deletions src/clean.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,24 @@ use walkdir::WalkDir;

use crate::{
cargo::{self, Workspace},
cli::{CleanOptions, ManifestOptions},
cli::{Args, ManifestOptions},
context::Context,
fs, term,
};

pub(crate) fn run(mut options: CleanOptions) -> Result<()> {
pub(crate) fn run(options: &mut Args) -> Result<()> {
let ws = Workspace::new(&options.manifest, None, false, false)?;
ws.config.merge_to_args(&mut None, &mut options.verbose, &mut options.color);
term::set_coloring(&mut options.color);
ws.config.merge_to_args(&mut None, &mut options.build.verbose, &mut options.build.color);
term::set_coloring(&mut options.build.color);

if !options.workspace {
for dir in &[&ws.target_dir, &ws.output_dir] {
rm_rf(dir, options.verbose != 0)?;
rm_rf(dir, options.build.verbose != 0)?;
}
return Ok(());
}

clean_ws(&ws, &ws.metadata.workspace_members, &options.manifest, options.verbose)?;
clean_ws(&ws, &ws.metadata.workspace_members, &options.manifest, options.build.verbose)?;

Ok(())
}
Expand Down Expand Up @@ -90,7 +90,6 @@ fn clean_ws(
if verbose > 0 {
cmd.arg(format!("-{}", "v".repeat(verbose as usize)));
}
manifest.cargo_args(&mut cmd);
cmd.dir(&ws.metadata.workspace_root);
if let Err(e) = if verbose > 0 { cmd.run() } else { cmd.run_with_output() } {
warn!("{:#}", e);
Expand Down
Loading

0 comments on commit 48ed498

Please sign in to comment.