Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

counters: small UX fixes & tweaks #474

Merged
merged 3 commits into from
Apr 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions cmd/counters/src/ipc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/.

use super::{load_counters, taskname, Options, Order};
use super::{load_counters, taskname, Options, Order, LIST_HINT};
use anyhow::{bail, Result};
use colored::{ColoredString, Colorize};
use humility::core::Core;
Expand Down Expand Up @@ -96,9 +96,11 @@ impl Args {

if ipcs.is_empty() {
if let Some(ref name) = opts.name {
let hint = super::hint();
bail!(
"no IPC counters found with names containing \"{}\" (-l to list)",
name
"no IPC counters found with names containing \"{name}\"\n\
{hint} {LIST_HINT}\n\
{hint} use `--client` to filter by client task name"
);
} else {
bail!("no IPC counters found");
Expand Down
36 changes: 26 additions & 10 deletions cmd/counters/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@

use anyhow::{bail, Result};
use clap::{CommandFactory, Parser, ValueEnum};
use colored::Colorize;
use humility::core::Core;
use humility::hubris::*;
use humility::reflect::{self, Load, Value};
Expand Down Expand Up @@ -232,7 +233,10 @@ struct CountersArgs {
/// * "csv": outputs counters in comma-separated values (CSV) format,
/// suitable for use with other tools.
///
/// [conflicts with: --ipc]
/// * "json": outputs counters in JSON format, suitable for use with
/// other tools.
///
/// [conflicts with: ipc]
#[clap(long, short, value_enum, default_value_t = Output::Text)]
output: Output,
}
Expand Down Expand Up @@ -274,7 +278,9 @@ enum Subcmd {
/// * "csv": outputs counters in comma-separated values (CSV) format,
/// suitable for use with other tools.
///
/// [conflicts with: --ipc]
/// * "json": outputs counters in JSON format, suitable for use with
/// other tools.

hawkw marked this conversation as resolved.
Show resolved Hide resolved
#[clap(long, short, value_enum, default_value_t = Output::Text)]
output: Output,
},
Expand Down Expand Up @@ -310,9 +316,14 @@ enum Output {
Text,
/// Output comma-separated values (CSV).
Csv,
/// Output JSON.
Json,
}

// Help message printed out when no counters match a filter.
const LIST_HINT: &str = "use `humility counters list` to list all \
available counters";

fn counters(context: &mut ExecutionContext) -> Result<()> {
let core = &mut **context.core.as_mut().unwrap();
let Subcommand::Other(subargs) = context.cli.cmd.as_ref().unwrap();
Expand Down Expand Up @@ -363,8 +374,9 @@ fn counters(context: &mut ExecutionContext) -> Result<()> {
if counters.is_empty() {
if let Some(name) = name {
bail!(
"no counters found with names containing \"{}\" (-l to list)",
name
"no counters found with names containing \"{name}\"\n\
{} {LIST_HINT}",
hint(),
);
} else {
bail!("no counters found");
Expand Down Expand Up @@ -435,9 +447,9 @@ fn counters(context: &mut ExecutionContext) -> Result<()> {
for (varname, ctr) in resolved_counters {
match ctr {
Err(e) if subargs.opts.verbose => {
humility::msg!("counter dump failed: {e:?}")
humility::warn!("counter dump failed: {e:?}")
}
Err(e) => humility::msg!("counter dump failed: {e}"),
Err(e) => humility::warn!("counter dump failed: {e}"),
Ok(mut ctr) => {
counters_dump_csv(
&mut ctr,
Expand All @@ -453,9 +465,9 @@ fn counters(context: &mut ExecutionContext) -> Result<()> {
for (varname, ctr) in resolved_counters {
match ctr {
Err(e) if subargs.opts.verbose => {
humility::msg!("counter dump failed: {e:?}")
humility::warn!("counter dump failed: {e:?}")
}
Err(e) => humility::msg!("counter dump failed: {e}"),
Err(e) => humility::warn!("counter dump failed: {e}"),
Ok(ctr) => {
json.entry(t)
.or_default()
Expand All @@ -473,9 +485,9 @@ fn counters(context: &mut ExecutionContext) -> Result<()> {
if ctrs.peek().is_some() { " | " } else { " " };
match ctr {
Err(e) if subargs.opts.verbose => {
humility::msg!("counter dump failed: {e:?}")
humility::warn!("counter dump failed: {e:?}")
}
Err(e) => humility::msg!("counter dump failed: {e}"),
Err(e) => humility::warn!("counter dump failed: {e}"),
Ok(mut ctr) => {
counter_dump(&mut ctr, &subargs.opts, pad)
}
Expand Down Expand Up @@ -610,6 +622,10 @@ fn load_counters(
.or_else(|_| Counters::from_value(&val))
}

fn hint() -> impl std::fmt::Display {
"hint:".bold()
}

pub fn init() -> Command {
Command {
app: CountersArgs::command(),
Expand Down
3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.chilly.0.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.extern-regions.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.igor.0.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.in_bootloader.0.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.inheritance.0.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kernel-panic.0.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kernel-panic.1.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.0.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.1.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.10.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.11.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.12.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.13.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.14.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.15.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.16.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.17.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.18.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.19.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.2.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.20.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.21.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.22.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.23.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.24.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.25.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.26.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.27.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.28.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.29.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.30.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.31.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.4.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.49.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.5.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.50.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.51.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.52.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.53.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.6.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.7.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.8.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.9.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.idol.qpsi.1.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.kiowa.rick.0.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.new-ringbuf.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.new-sensors.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/cmd/counters-arg/counters-arg.ouray.0.stderr

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading