1055 lines
42 KiB
Rust
1055 lines
42 KiB
Rust
//! "Legacy" versions of command signatures used for testing.
|
|
//!
|
|
//! Each signature in this file should be semantically equivalent to a command signature returned
|
|
//! by a function of the same name in `super::v2`; this is to ensure that the same test
|
|
//! coverage can run with the "v2" Cargo feature both enabled and disabled.
|
|
//!
|
|
//! Any new test signatures should also have a corresponding "v2" implementation in `super::v2`;
|
|
//! and the test should be written using common testing APIs (e.g. create_test_command_registry) to
|
|
//! provide coverage for both flag states of "v2".
|
|
use std::borrow::Cow;
|
|
|
|
use itertools::Itertools;
|
|
use warp_command_signatures::{
|
|
Alias, AliasGeneratorName, Argument, ArgumentType, CommandBuilder, CommandSignatureGenerators,
|
|
Generator, GeneratorName, GeneratorResults, Importance, IsArgumentOptional, Opt, Order,
|
|
ParserDirectives, Priority, Signature, Suggestion as MetadataSuggestion, Template,
|
|
};
|
|
use warp_util::path::ShellFamily;
|
|
|
|
use super::{TEST_ALIAS_COMMAND, TEST_GENERATOR_1_COMMAND, TEST_GENERATOR_2_COMMAND};
|
|
|
|
pub fn test_generators() -> CommandSignatureGenerators {
|
|
CommandSignatureGenerators::new("test")
|
|
.add_generator(
|
|
"test1",
|
|
Generator::script(
|
|
CommandBuilder::single_command(TEST_GENERATOR_1_COMMAND),
|
|
|_| GeneratorResults {
|
|
suggestions: vec![
|
|
MetadataSuggestion::new("foo"),
|
|
MetadataSuggestion::new("bar"),
|
|
],
|
|
is_ordered: false,
|
|
},
|
|
),
|
|
)
|
|
.add_generator(
|
|
"test2",
|
|
Generator::script(
|
|
CommandBuilder::single_command(TEST_GENERATOR_2_COMMAND),
|
|
|_| GeneratorResults {
|
|
suggestions: vec![
|
|
MetadataSuggestion::new("def"),
|
|
MetadataSuggestion::new("abc"),
|
|
],
|
|
is_ordered: true,
|
|
},
|
|
),
|
|
)
|
|
.add_alias(
|
|
"alias",
|
|
Alias::new(
|
|
|_| TEST_ALIAS_COMMAND.to_string(),
|
|
|_, tokens, idx| {
|
|
Some(
|
|
tokens
|
|
.iter()
|
|
.enumerate()
|
|
.map(|(curr_idx, token)| {
|
|
if curr_idx == idx {
|
|
// Replace the alias (on the left) with token on the right.
|
|
|
|
// Ensure each token is escaped so that we can produce a valid
|
|
// new command to run the completer with.
|
|
// TODO(alokedesai): Each alias generator shouldn't be
|
|
// responsible for escaping tokens--this should happen higher in
|
|
// the stack.
|
|
match *token {
|
|
"nine" => Cow::Borrowed("twelve"),
|
|
"twelve" => "one".into(),
|
|
"loop1" => "loop2".into(),
|
|
"loop2" => "loop1".into(),
|
|
s => ShellFamily::Posix.escape(s),
|
|
}
|
|
} else {
|
|
ShellFamily::Posix.escape(token)
|
|
}
|
|
})
|
|
.join(" "),
|
|
)
|
|
},
|
|
),
|
|
)
|
|
}
|
|
|
|
/// Dummy signatures to test with
|
|
pub fn git_signature() -> Signature {
|
|
Signature {
|
|
name: "git".to_string(),
|
|
alias_generator: None,
|
|
description: Some("the stupid content tracker".into()),
|
|
arguments: None,
|
|
subcommands: Some(vec![
|
|
Signature {
|
|
name: "add".to_string(),
|
|
alias_generator: None,
|
|
description: Some("Add file contents to the index".to_string()),
|
|
arguments: None,
|
|
subcommands: None,
|
|
options: None,
|
|
priority: Priority::default(),
|
|
parser_directives: Default::default(),
|
|
},
|
|
Signature {
|
|
name: "checkout".to_string(),
|
|
alias_generator: None,
|
|
description: Some("Switch branches or restore working tree files".to_string()),
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("Branch".to_string()),
|
|
description: Some("Branch".to_owned()),
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("漢字"),
|
|
create_argument_suggestion("bob/卡b卡"),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
}]),
|
|
subcommands: None,
|
|
options: None,
|
|
priority: Priority::default(),
|
|
parser_directives: Default::default(),
|
|
},
|
|
Signature {
|
|
name: "clone".to_string(),
|
|
alias_generator: None,
|
|
description: Some("Clone a repository into a new directory".into()),
|
|
arguments: None,
|
|
subcommands: None,
|
|
options: None,
|
|
priority: Priority::default(),
|
|
parser_directives: Default::default(),
|
|
},
|
|
Signature {
|
|
name: "branch".to_string(),
|
|
alias_generator: None,
|
|
description: Some("List, create, or delete branches".into()),
|
|
arguments: None,
|
|
subcommands: None,
|
|
options: Some(vec![
|
|
Opt {
|
|
exact_string: vec!["--delete".to_string()],
|
|
description: None,
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("branch".to_string()),
|
|
description: None,
|
|
is_variadic: true,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("branch-1"),
|
|
create_argument_suggestion("second-branch"),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
}]),
|
|
required: false,
|
|
priority: Priority::default(),
|
|
},
|
|
Opt {
|
|
exact_string: vec!["-m".to_string()],
|
|
description: None,
|
|
arguments: Some(vec![
|
|
Argument {
|
|
display_name: Some("from_branch".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("branch-1"),
|
|
create_argument_suggestion("second-branch"),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
},
|
|
Argument {
|
|
display_name: Some("to_branch".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("branch-1"),
|
|
create_argument_suggestion("second-branch"),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
},
|
|
]),
|
|
required: false,
|
|
priority: Priority::default(),
|
|
},
|
|
]),
|
|
priority: Priority::default(),
|
|
parser_directives: Default::default(),
|
|
},
|
|
]),
|
|
options: Some(vec![
|
|
Opt {
|
|
exact_string: vec!["-p".to_string()],
|
|
description: None,
|
|
arguments: None,
|
|
required: false,
|
|
priority: Priority::Default,
|
|
},
|
|
Opt {
|
|
exact_string: vec!["--version".to_string()],
|
|
description: None,
|
|
arguments: None,
|
|
required: false,
|
|
priority: Priority::Default,
|
|
},
|
|
Opt {
|
|
exact_string: vec!["--help".to_string()],
|
|
description: None,
|
|
arguments: None,
|
|
required: false,
|
|
priority: Priority::Default,
|
|
},
|
|
Opt {
|
|
exact_string: vec!["--bare".to_string()],
|
|
description: None,
|
|
arguments: None,
|
|
required: false,
|
|
priority: Priority::Default,
|
|
},
|
|
Opt {
|
|
exact_string: vec!["-c".to_string()],
|
|
description: None,
|
|
arguments: None,
|
|
required: false,
|
|
priority: Priority::Default,
|
|
},
|
|
]),
|
|
priority: Priority::default(),
|
|
parser_directives: Default::default(),
|
|
}
|
|
}
|
|
|
|
pub fn java_signature() -> Signature {
|
|
Signature {
|
|
name: "java".to_string(),
|
|
alias_generator: None,
|
|
description: Some("Launch a java application".into()),
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("<mainclass>".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![],
|
|
optional: IsArgumentOptional::Optional(None),
|
|
skip_generator_validation: false,
|
|
}]),
|
|
subcommands: None,
|
|
options: Some(vec![
|
|
Opt {
|
|
// Java supports both styles of long option.
|
|
exact_string: vec!["-version".to_string(), "--version".to_string()],
|
|
description: Some("print product version to the error stream and exit".into()),
|
|
arguments: None,
|
|
required: false,
|
|
priority: Priority::default(),
|
|
},
|
|
Opt {
|
|
exact_string: vec![
|
|
"-cp".to_string(),
|
|
"-classpath".to_string(),
|
|
"--class-path".to_string(),
|
|
],
|
|
description: Some("class search path of directories and zip/jar files".to_string()),
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("classpath".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
}]),
|
|
required: false,
|
|
priority: Priority::default(),
|
|
},
|
|
]),
|
|
priority: Priority::default(),
|
|
parser_directives: Default::default(),
|
|
}
|
|
}
|
|
|
|
/// A signature with a single positional that has no argument types.
|
|
pub fn signature_with_empty_positional() -> Signature {
|
|
Signature {
|
|
name: "test-empty".to_string(),
|
|
alias_generator: None,
|
|
description: Some("testing...".to_string()),
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("test-empty--arg".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
}]),
|
|
subcommands: None,
|
|
options: None,
|
|
priority: Priority::default(),
|
|
parser_directives: Default::default(),
|
|
}
|
|
}
|
|
|
|
pub fn test_signature() -> Signature {
|
|
Signature {
|
|
name: "test".to_string(),
|
|
alias_generator: Some(AliasGeneratorName("alias".to_owned())),
|
|
description: Some("testing...".to_string()),
|
|
arguments: None,
|
|
subcommands: Some(vec![
|
|
Signature {
|
|
name: "one".to_string(),
|
|
alias_generator: None,
|
|
description: None,
|
|
arguments: Some(vec![
|
|
Argument {
|
|
display_name: Some("first arg".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("one-one"),
|
|
create_argument_suggestion("one-two"),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
},
|
|
Argument {
|
|
display_name: Some("second arg".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("two-one"),
|
|
create_argument_suggestion("two-two"),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
},
|
|
]),
|
|
subcommands: None,
|
|
options: None,
|
|
priority: Priority::Global(Importance::More(Order(100))),
|
|
parser_directives: Default::default(),
|
|
},
|
|
Signature {
|
|
name: "two".to_string(),
|
|
alias_generator: None,
|
|
description: None,
|
|
arguments: Some(vec![
|
|
Argument {
|
|
display_name: Some("two-one".to_string()),
|
|
description: None,
|
|
is_variadic: true,
|
|
is_command: false,
|
|
argument_types: vec![create_argument_suggestion("two-one")],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
},
|
|
Argument {
|
|
display_name: Some("two-two".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![create_argument_suggestion("two-two")],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
},
|
|
]),
|
|
subcommands: None,
|
|
options: None,
|
|
priority: Priority::Global(Importance::Less(Order(50))),
|
|
parser_directives: Default::default(),
|
|
},
|
|
Signature {
|
|
name: "three".to_string(),
|
|
alias_generator: None,
|
|
description: None,
|
|
arguments: Some(vec![
|
|
Argument {
|
|
display_name: Some("three-one".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![create_argument_suggestion("three-one")],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
},
|
|
Argument {
|
|
display_name: Some("three-two".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![create_argument_suggestion("three-two")],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
},
|
|
Argument {
|
|
display_name: Some("three-three".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![create_argument_suggestion("three-three")],
|
|
optional: IsArgumentOptional::Optional(None),
|
|
skip_generator_validation: false,
|
|
},
|
|
]),
|
|
subcommands: None,
|
|
options: None,
|
|
priority: Priority::Global(Importance::Less(Order(1))),
|
|
parser_directives: Default::default(),
|
|
},
|
|
Signature {
|
|
name: "four".to_string(),
|
|
alias_generator: None,
|
|
description: None,
|
|
arguments: Some(vec![
|
|
Argument {
|
|
display_name: Some("four-one".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![create_argument_suggestion("four-one")],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
},
|
|
Argument {
|
|
display_name: Some("four-two".to_string()),
|
|
description: None,
|
|
is_variadic: true,
|
|
is_command: false,
|
|
argument_types: vec![create_argument_suggestion("four-two")],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
},
|
|
]),
|
|
subcommands: None,
|
|
options: None,
|
|
priority: Priority::default(),
|
|
parser_directives: Default::default(),
|
|
},
|
|
Signature {
|
|
name: "five".to_string(),
|
|
alias_generator: None,
|
|
description: None,
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("five".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
ArgumentType::Generator(GeneratorName("test1".to_owned())),
|
|
ArgumentType::Generator(GeneratorName("test2".to_owned())),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
}]),
|
|
subcommands: None,
|
|
options: None,
|
|
priority: Priority::default(),
|
|
parser_directives: Default::default(),
|
|
},
|
|
Signature {
|
|
name: "six".to_owned(),
|
|
alias_generator: None,
|
|
description: None,
|
|
subcommands: None,
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("six-one".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion_with_priority("six-arg", Priority::Default),
|
|
create_argument_suggestion_with_priority(
|
|
"six-arg-2",
|
|
Priority::Global(Importance::More(Order(100))),
|
|
),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
}]),
|
|
options: None,
|
|
priority: Priority::Default,
|
|
parser_directives: Default::default(),
|
|
},
|
|
Signature {
|
|
name: "seven".to_owned(),
|
|
alias_generator: None,
|
|
description: None,
|
|
subcommands: None,
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("seven-arg".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
ArgumentType::Generator(GeneratorName("test2".to_owned())),
|
|
ArgumentType::Generator(GeneratorName("test2".to_owned())),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
}]),
|
|
options: None,
|
|
priority: Priority::Default,
|
|
parser_directives: Default::default(),
|
|
},
|
|
Signature {
|
|
name: "eight".to_owned(),
|
|
alias_generator: None,
|
|
description: None,
|
|
subcommands: Some(vec![Signature {
|
|
name: "eight-subcommand".to_string(),
|
|
alias_generator: None,
|
|
description: None,
|
|
arguments: None,
|
|
subcommands: None,
|
|
options: None,
|
|
priority: Default::default(),
|
|
parser_directives: Default::default(),
|
|
}]),
|
|
arguments: Some(vec![
|
|
Argument {
|
|
display_name: Some("eight-arg".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![create_argument_suggestion_with_priority(
|
|
"eight-arg",
|
|
Priority::Default,
|
|
)],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
},
|
|
Argument {
|
|
display_name: Some("eight-arg-2".to_string()),
|
|
description: None,
|
|
is_variadic: true,
|
|
is_command: false,
|
|
argument_types: vec![create_argument_suggestion_with_priority(
|
|
"eight-arg-2",
|
|
Priority::Default,
|
|
)],
|
|
optional: IsArgumentOptional::Optional(None),
|
|
skip_generator_validation: false,
|
|
},
|
|
]),
|
|
options: None,
|
|
priority: Priority::Default,
|
|
parser_directives: Default::default(),
|
|
},
|
|
Signature {
|
|
name: "nine".to_owned(),
|
|
alias_generator: None,
|
|
description: None,
|
|
subcommands: None,
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("nine-arg".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: true,
|
|
argument_types: vec![create_argument_suggestion_with_priority(
|
|
"git",
|
|
Priority::Default,
|
|
)],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
}]),
|
|
options: None,
|
|
priority: Priority::Default,
|
|
parser_directives: Default::default(),
|
|
},
|
|
]),
|
|
options: Some(vec![
|
|
Opt {
|
|
exact_string: vec!["--long".to_string()],
|
|
description: None,
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("long-one".to_string()),
|
|
description: None,
|
|
is_variadic: true,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("long-one"),
|
|
create_argument_suggestion("long-two"),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
}]),
|
|
required: false,
|
|
priority: Priority::Global(Importance::Less(Order(1))),
|
|
},
|
|
Opt {
|
|
exact_string: vec!["--not-long".to_string()],
|
|
description: None,
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("long-one".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("not-long-one"),
|
|
create_argument_suggestion("not-long-two"),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
}]),
|
|
required: false,
|
|
priority: Priority::Global(Importance::More(Order(100))),
|
|
},
|
|
Opt {
|
|
exact_string: vec!["--required-args".to_string()],
|
|
description: None,
|
|
arguments: Some(vec![
|
|
Argument {
|
|
display_name: Some("required-arg-1".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("arg-1-1"),
|
|
create_argument_suggestion("arg-1-2"),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
},
|
|
Argument {
|
|
display_name: Some("required-arg-2".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("arg-2-1"),
|
|
create_argument_suggestion("arg-2-2"),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
},
|
|
]),
|
|
required: false,
|
|
priority: Priority::Global(Importance::More(Order(100))),
|
|
},
|
|
Opt {
|
|
exact_string: vec!["--required-args-with-var".to_string()],
|
|
description: None,
|
|
arguments: Some(vec![
|
|
Argument {
|
|
display_name: Some("required-arg".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("arg-1"),
|
|
create_argument_suggestion("arg-2"),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
},
|
|
Argument {
|
|
display_name: Some("variadic-arg".to_string()),
|
|
description: None,
|
|
is_variadic: true,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("vararg-1"),
|
|
create_argument_suggestion("vararg-2"),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
},
|
|
]),
|
|
required: false,
|
|
priority: Priority::Global(Importance::Less(Order(1))),
|
|
},
|
|
Opt {
|
|
exact_string: vec!["--required-and-optional-args".to_string()],
|
|
description: None,
|
|
arguments: Some(vec![
|
|
Argument {
|
|
display_name: Some("required-arg".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("required-1"),
|
|
create_argument_suggestion("required-2"),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
},
|
|
Argument {
|
|
display_name: Some("optional-arg".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("optional-1"),
|
|
create_argument_suggestion("optional-2"),
|
|
],
|
|
optional: IsArgumentOptional::Optional(None),
|
|
skip_generator_validation: false,
|
|
},
|
|
]),
|
|
required: false,
|
|
priority: Priority::default(),
|
|
},
|
|
Opt {
|
|
exact_string: vec!["--template-args-for-opt".to_string()],
|
|
description: None,
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("templated".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![ArgumentType::Template(Template {
|
|
type_name: warp_command_signatures::TemplateType::FilesAndFolders,
|
|
filter_name: None,
|
|
})],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
}]),
|
|
required: false,
|
|
priority: Priority::default(),
|
|
},
|
|
Opt {
|
|
exact_string: vec!["-r".to_string()],
|
|
description: None,
|
|
arguments: None,
|
|
required: false,
|
|
priority: Priority::default(),
|
|
},
|
|
Opt {
|
|
exact_string: vec!["-V".to_string()],
|
|
description: None,
|
|
arguments: None,
|
|
required: false,
|
|
priority: Priority::default(),
|
|
},
|
|
]),
|
|
priority: Priority::default(),
|
|
parser_directives: Default::default(),
|
|
}
|
|
}
|
|
|
|
pub fn fuzzy_signature() -> Signature {
|
|
Signature {
|
|
name: "fuzzy".to_string(),
|
|
alias_generator: None,
|
|
description: Some("testing...".to_string()),
|
|
arguments: None,
|
|
subcommands: Some(vec![
|
|
Signature {
|
|
name: "prefix1".to_string(),
|
|
alias_generator: None,
|
|
description: None,
|
|
arguments: None,
|
|
subcommands: None,
|
|
options: None,
|
|
priority: Priority::Default,
|
|
parser_directives: Default::default(),
|
|
},
|
|
Signature {
|
|
name: "prefix2".to_string(),
|
|
alias_generator: None,
|
|
description: None,
|
|
arguments: None,
|
|
subcommands: None,
|
|
options: None,
|
|
priority: Priority::Global(Importance::More(Order(100))),
|
|
parser_directives: Default::default(),
|
|
},
|
|
Signature {
|
|
name: "suffix-pre-fix".to_string(),
|
|
alias_generator: None,
|
|
description: None,
|
|
arguments: None,
|
|
subcommands: None,
|
|
options: None,
|
|
priority: Priority::Default,
|
|
parser_directives: Default::default(),
|
|
},
|
|
]),
|
|
options: Some(vec![Opt {
|
|
exact_string: vec!["--pre-fx".to_string()],
|
|
description: None,
|
|
arguments: None,
|
|
required: false,
|
|
priority: Priority::Default,
|
|
}]),
|
|
priority: Priority::default(),
|
|
parser_directives: Default::default(),
|
|
}
|
|
}
|
|
|
|
pub fn cd_signature() -> Signature {
|
|
Signature {
|
|
name: "cd".to_string(),
|
|
alias_generator: None,
|
|
description: Some("testing...".to_string()),
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("directories".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_hidden_argument_suggestion('-'),
|
|
ArgumentType::Template(Template {
|
|
type_name: warp_command_signatures::TemplateType::Folders { must_exist: true },
|
|
filter_name: None,
|
|
}),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
}]),
|
|
priority: Priority::default(),
|
|
subcommands: None,
|
|
options: None,
|
|
parser_directives: Default::default(),
|
|
}
|
|
}
|
|
|
|
pub fn npm_signature() -> Signature {
|
|
Signature {
|
|
name: "npm".to_string(),
|
|
alias_generator: None,
|
|
description: Some("testing...".to_string()),
|
|
priority: Priority::default(),
|
|
arguments: None,
|
|
subcommands: Some(vec![
|
|
Signature {
|
|
name: "r".to_string(),
|
|
alias_generator: None,
|
|
description: None,
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("r-arg".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![create_argument_suggestion("r-arg")],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
}]),
|
|
subcommands: None,
|
|
options: None,
|
|
priority: Priority::Default,
|
|
parser_directives: Default::default(),
|
|
},
|
|
Signature {
|
|
name: "run".to_string(),
|
|
alias_generator: None,
|
|
description: None,
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("run-arg".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![create_argument_suggestion("run-arg")],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
}]),
|
|
subcommands: None,
|
|
options: None,
|
|
priority: Priority::Default,
|
|
parser_directives: Default::default(),
|
|
},
|
|
]),
|
|
options: None,
|
|
parser_directives: Default::default(),
|
|
}
|
|
}
|
|
|
|
pub fn ls_signature() -> Signature {
|
|
Signature {
|
|
name: "ls".to_string(),
|
|
alias_generator: None,
|
|
description: Some("testing...".to_string()),
|
|
priority: Priority::default(),
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("filepaths".to_string()),
|
|
description: None,
|
|
is_variadic: true,
|
|
is_command: false,
|
|
argument_types: vec![ArgumentType::Template(Template {
|
|
type_name: warp_command_signatures::TemplateType::FilesAndFolders,
|
|
filter_name: None,
|
|
})],
|
|
optional: IsArgumentOptional::Optional(None),
|
|
skip_generator_validation: false,
|
|
}]),
|
|
subcommands: None,
|
|
options: Some(vec![
|
|
Opt {
|
|
exact_string: vec!["-a".to_string()],
|
|
description: None,
|
|
arguments: None,
|
|
required: false,
|
|
priority: Priority::Default,
|
|
},
|
|
Opt {
|
|
exact_string: vec!["--color".to_string()],
|
|
description: None,
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("when".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("force"),
|
|
create_argument_suggestion("auto"),
|
|
create_argument_suggestion("never"),
|
|
],
|
|
optional: IsArgumentOptional::Optional(None),
|
|
skip_generator_validation: false,
|
|
}]),
|
|
required: false,
|
|
priority: Priority::Default,
|
|
},
|
|
Opt {
|
|
exact_string: vec!["--test".to_string()],
|
|
description: None,
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("when".to_string()),
|
|
description: None,
|
|
is_variadic: true,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("force"),
|
|
create_argument_suggestion("auto"),
|
|
create_argument_suggestion("never"),
|
|
],
|
|
optional: IsArgumentOptional::Optional(None),
|
|
skip_generator_validation: false,
|
|
}]),
|
|
required: false,
|
|
priority: Priority::Default,
|
|
},
|
|
]),
|
|
parser_directives: Default::default(),
|
|
}
|
|
}
|
|
|
|
pub fn add_content_signature() -> Signature {
|
|
Signature {
|
|
name: "Add-Content".to_string(),
|
|
alias_generator: None,
|
|
description: None,
|
|
priority: Priority::default(),
|
|
arguments: Some(vec![
|
|
Argument {
|
|
display_name: Some("-Path".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![ArgumentType::Template(Template {
|
|
type_name: warp_command_signatures::TemplateType::FilesAndFolders,
|
|
filter_name: None,
|
|
})],
|
|
optional: IsArgumentOptional::Optional(None),
|
|
skip_generator_validation: false,
|
|
},
|
|
Argument {
|
|
display_name: Some("-Value".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![ArgumentType::Template(Template {
|
|
type_name: warp_command_signatures::TemplateType::FilesAndFolders,
|
|
filter_name: None,
|
|
})],
|
|
optional: IsArgumentOptional::Optional(None),
|
|
skip_generator_validation: false,
|
|
},
|
|
]),
|
|
subcommands: None,
|
|
options: Some(vec![
|
|
Opt {
|
|
exact_string: vec!["-Force".to_string()],
|
|
description: None,
|
|
arguments: None,
|
|
required: false,
|
|
priority: Priority::Default,
|
|
},
|
|
Opt {
|
|
exact_string: vec!["-Encoding".to_string()],
|
|
description: None,
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("System.Text.Encoding".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![
|
|
create_argument_suggestion("ASCII"),
|
|
create_argument_suggestion("UTF8"),
|
|
],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
}]),
|
|
required: false,
|
|
priority: Priority::Default,
|
|
},
|
|
Opt {
|
|
exact_string: vec!["-Exclude".to_string()],
|
|
description: None,
|
|
arguments: Some(vec![Argument {
|
|
display_name: Some("System.String[]".to_string()),
|
|
description: None,
|
|
is_variadic: false,
|
|
is_command: false,
|
|
argument_types: vec![ArgumentType::Template(Template {
|
|
type_name: warp_command_signatures::TemplateType::FilesAndFolders,
|
|
filter_name: None,
|
|
})],
|
|
optional: IsArgumentOptional::Required,
|
|
skip_generator_validation: false,
|
|
}]),
|
|
required: false,
|
|
priority: Default::default(),
|
|
},
|
|
]),
|
|
parser_directives: ParserDirectives {
|
|
flags_are_posix_noncompliant: true,
|
|
flags_match_unique_prefix: true,
|
|
always_case_insensitive: true,
|
|
},
|
|
}
|
|
}
|
|
|
|
fn create_argument_suggestion(name: impl Into<String>) -> ArgumentType {
|
|
create_argument_suggestion_with_priority(name, Priority::Default)
|
|
}
|
|
|
|
fn create_argument_suggestion_with_priority(
|
|
name: impl Into<String>,
|
|
priority: Priority,
|
|
) -> ArgumentType {
|
|
ArgumentType::Suggestion(MetadataSuggestion::new(name.into()).with_priority(priority))
|
|
}
|
|
|
|
fn create_hidden_argument_suggestion(name: impl Into<String>) -> ArgumentType {
|
|
ArgumentType::Suggestion(MetadataSuggestion {
|
|
exact_string: name.into(),
|
|
description: None,
|
|
priority: Default::default(),
|
|
icon: None,
|
|
is_hidden: true,
|
|
display_name: None,
|
|
})
|
|
}
|