mirror of
https://github.com/martinvonz/jj.git
synced 2025-02-12 07:24:11 +00:00
cli: completion: derive clap::ValueEnum
for ColorChoice
Some checks are pending
binaries / Build binary artifacts (push) Waiting to run
Some checks are pending
binaries / Build binary artifacts (push) Waiting to run
This enables autocompletion for `jj --color <TAB>`
This commit is contained in:
parent
a4fa4b6dbd
commit
3293a1aa97
5 changed files with 14 additions and 22 deletions
|
@ -3128,7 +3128,7 @@ pub struct GlobalArgs {
|
|||
|
||||
#[derive(clap::Args, Clone, Debug)]
|
||||
pub struct EarlyArgs {
|
||||
/// When to colorize output (always, never, debug, auto)
|
||||
/// When to colorize output
|
||||
#[arg(long, value_name = "WHEN", global = true)]
|
||||
pub color: Option<ColorChoice>,
|
||||
/// Silence non-primary command output
|
||||
|
|
|
@ -27,7 +27,6 @@ use std::mem;
|
|||
use std::process::Child;
|
||||
use std::process::ChildStdin;
|
||||
use std::process::Stdio;
|
||||
use std::str::FromStr;
|
||||
use std::thread;
|
||||
use std::thread::JoinHandle;
|
||||
|
||||
|
@ -35,8 +34,6 @@ use itertools::Itertools as _;
|
|||
use jj_lib::config::ConfigGetError;
|
||||
use jj_lib::config::StackedConfig;
|
||||
use os_pipe::PipeWriter;
|
||||
use serde::de::Deserialize as _;
|
||||
use serde::de::IntoDeserializer as _;
|
||||
use tracing::instrument;
|
||||
|
||||
use crate::command_error::CommandError;
|
||||
|
@ -206,7 +203,7 @@ pub struct Ui {
|
|||
output: UiOutput,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize)]
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, clap::ValueEnum)]
|
||||
#[serde(rename_all = "kebab-case")]
|
||||
pub enum ColorChoice {
|
||||
Always,
|
||||
|
@ -215,17 +212,6 @@ pub enum ColorChoice {
|
|||
Auto,
|
||||
}
|
||||
|
||||
impl FromStr for ColorChoice {
|
||||
type Err = String;
|
||||
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
// serde::de::value::Error is Box<str> wrapper. Map it to String to hide
|
||||
// the implementation detail.
|
||||
Self::deserialize(s.into_deserializer())
|
||||
.map_err(|err: serde::de::value::Error| err.to_string())
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for ColorChoice {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
let s = match self {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
source: cli/tests/test_generate_md_cli_help.rs
|
||||
description: "AUTO-GENERATED FILE, DO NOT EDIT. This cli reference is generated by a test as an `insta` snapshot. MkDocs includes this snapshot from docs/cli-reference.md."
|
||||
snapshot_kind: text
|
||||
---
|
||||
<!-- BEGIN MARKDOWN-->
|
||||
|
||||
|
@ -187,7 +188,10 @@ To get started, see the tutorial at https://jj-vcs.github.io/jj/latest/tutorial/
|
|||
|
||||
It is possible to run mutating commands when loading the repo at an earlier operation. Doing that is equivalent to having run concurrent commands starting at the earlier operation. There's rarely a reason to do that, but it is possible.
|
||||
* `--debug` — Enable debug logging
|
||||
* `--color <WHEN>` — When to colorize output (always, never, debug, auto)
|
||||
* `--color <WHEN>` — When to colorize output
|
||||
|
||||
Possible values: `always`, `never`, `debug`, `auto`
|
||||
|
||||
* `--quiet` — Silence non-primary command output
|
||||
|
||||
For example, `jj file list` will still list files, but it won't tell you if the working copy was snapshotted or if descendants were rebased.
|
||||
|
|
|
@ -79,7 +79,7 @@ fn test_bookmark_names() {
|
|||
--ignore-immutable Allow rewriting immutable commits
|
||||
--at-operation Operation to load the repo at
|
||||
--debug Enable debug logging
|
||||
--color When to colorize output (always, never, debug, auto)
|
||||
--color When to colorize output
|
||||
--quiet Silence non-primary command output
|
||||
--no-pager Disable the pager
|
||||
--config Additional configuration options (can be repeated)
|
||||
|
|
|
@ -458,7 +458,8 @@ fn test_color_config() {
|
|||
// Invalid --color
|
||||
let stderr = test_env.jj_cmd_cli_error(&repo_path, &["log", "--color=foo"]);
|
||||
insta::assert_snapshot!(stderr, @r"
|
||||
error: invalid value 'foo' for '--color <WHEN>': unknown variant `foo`, expected one of `always`, `never`, `debug`, `auto`
|
||||
error: invalid value 'foo' for '--color <WHEN>'
|
||||
[possible values: always, never, debug, auto]
|
||||
|
||||
For more information, try '--help'.
|
||||
");
|
||||
|
@ -935,7 +936,7 @@ fn test_help() {
|
|||
let test_env = TestEnvironment::default();
|
||||
|
||||
let stdout = test_env.jj_cmd_success(test_env.env_root(), &["diffedit", "-h"]);
|
||||
insta::assert_snapshot!(stdout, @r###"
|
||||
insta::assert_snapshot!(stdout, @r"
|
||||
Touch up the content changes in a revision with a diff editor
|
||||
|
||||
Usage: jj diffedit [OPTIONS]
|
||||
|
@ -954,12 +955,13 @@ fn test_help() {
|
|||
--ignore-immutable Allow rewriting immutable commits
|
||||
--at-operation <AT_OPERATION> Operation to load the repo at [aliases: at-op]
|
||||
--debug Enable debug logging
|
||||
--color <WHEN> When to colorize output (always, never, debug, auto)
|
||||
--color <WHEN> When to colorize output [possible values: always, never, debug,
|
||||
auto]
|
||||
--quiet Silence non-primary command output
|
||||
--no-pager Disable the pager
|
||||
--config <NAME=VALUE> Additional configuration options (can be repeated)
|
||||
--config-file <PATH> Additional configuration files (can be repeated)
|
||||
"###);
|
||||
");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
Loading…
Reference in a new issue