#[non_exhaustive]pub struct Xtask<Subcommand = Subcommand>where
Subcommand: Subcommand,{
pub verbosity: Verbosity,
pub subcommand: Option<Subcommand>,
}
Expand description
Command line interface definition for cargo xtask command.
§cargo-xtask(1)
Rust project automation command
Usage: cargo xtask [OPTIONS] [COMMAND]
Commands:
build `cargo build` with options useful for testing and continuous integration
clippy `cargo clippy` with options useful for tesing and continuous integration
dist Build the artifacs and create the archive file for distribution
dist-archive Create the archive file for distribution
dist-build Build all artifacts for distribution
dist-build-bin Build the release binaries for distribution
dist-build-completion Build the shell completion files for distribution
dist-build-doc Build the documentation for distribution
dist-build-license Build the license files for distribution
dist-build-man Build the man pages for distribution
dist-build-readme Build the readme files for distribution
dist-clean Remove the artifacts and archives for distribution
doc `cargo doc` with options useful for testing and continuous integration
docsrs `cargo doc` with docs.rs specific options
exec Run commands on all workspaces in the current directory and subdirectories
fmt `cargo fmt` with options useful for testing and continuous integration
lint Run lint commands at once
pre-release Run pre-release checks
sync-rdme `cargo sync-rdme` with options useful for testing and continuous integration
test `cargo test` with options useful for testing and continuous integration
tidy Fix the package problems
udeps `cargo udeps` with options useful for testing and continuous integration
help Print this message or the help of the given subcommand(s)
Options:
-v, --verbose... More output per occurrence
-q, --quiet... Less output per occurrence
-h, --help Print help
§Examples
Use the premade entry point function with default configuration (main
feature is required):
use cli_xtask::{Result, Xtask};
fn main() -> Result<()> {
<Xtask>::main()
}
Use the premade entry point function and custom configuration (main
feature is required):
use cli_xtask::{config::Config, Result, Xtask};
fn main() -> Result<()> {
<Xtask>::main_with_config(|| Ok(Config::new()))
}
If you don’t want to use the main
feature, write the main function as
follows:
use cli_xtask::{clap::Parser, config::Config, error_handler, logger, Result, Xtask};
fn main() -> Result<()> {
// Parse command line arguments
let command = <Xtask>::parse();
// Setup error handler and logger
error_handler::install()?; // `error-handler` feature is required
logger::install(command.verbosity.get())?; // `logger` feature is required
// Run the subcommand specified by the command line arguments
command.run(&Config::new())?;
Ok(())
}
If you want to define your own subcommands, declare the type that implements
clap::Subcommand
and Run
, then use Xtask<YourOwnSubcommand>
instead of Xtask
.
use cli_xtask::{
clap::{self, Parser},
config::Config,
subcommand, Result, Run, Xtask,
};
// Define your own subcommand arguments
#[derive(Debug, clap::Subcommand)]
enum YourOwnSubcommand {
#[clap(flatten)]
Predefined(subcommand::Subcommand),
/// Run foo function.
Foo,
/// Run bar function
Bar,
}
impl Run for YourOwnSubcommand {
fn run(&self, config: &Config) -> Result<()> {
match self {
Self::Predefined(subcommand) => subcommand.run(config)?,
Self::Foo => println!("foo!"),
Self::Bar => println!("bar!"),
}
Ok(())
}
fn into_any(self: Box<Self>) -> Box<dyn std::any::Any> {
self
}
fn as_any(&self) -> &dyn std::any::Any {
self
}
fn as_any_mut(&mut self) -> &mut dyn std::any::Any {
self
}
}
fn main() -> Result<()> {
Xtask::<YourOwnSubcommand>::main()
}
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.verbosity: Verbosity
Verbosity level
subcommand: Option<Subcommand>
Subcommand to run
Implementations§
Source§impl<Subcommand> Xtask<Subcommand>where
Subcommand: Subcommand + Run,
impl<Subcommand> Xtask<Subcommand>where
Subcommand: Subcommand + Run,
Sourcepub fn main() -> Result<()>
Available on crate feature main
only.
pub fn main() -> Result<()>
main
only.Entry point for xtask crate.
This function initializes error handler and logger, then runs the subcommand. Default configuration will be passed to subcommand.
§Examples
use cli_xtask::{Result, Xtask};
fn main() -> Result<()> {
<Xtask>::main()
}
Sourcepub fn main_with_config<'a>(
config: impl FnOnce() -> Result<Config<'a>>,
) -> Result<()>
Available on crate feature main
only.
pub fn main_with_config<'a>( config: impl FnOnce() -> Result<Config<'a>>, ) -> Result<()>
main
only.Entry point for xtask crate.
This function initializes error handler and logger, then runs the
subcommand. Generated configuration by config
argument will be
passed to subcommand.
§Examples
use cli_xtask::{config::Config, Result, Xtask};
fn main() -> Result<()> {
<Xtask>::main_with_config(|| Ok(Config::new()))
}
Source§impl<Subcommand> Xtask<Subcommand>where
Subcommand: Subcommand,
impl<Subcommand> Xtask<Subcommand>where
Subcommand: Subcommand,
Sourcepub fn run(&self, config: &Config<'_>) -> Result<()>where
Subcommand: Run,
pub fn run(&self, config: &Config<'_>) -> Result<()>where
Subcommand: Run,
Runs the subcommand specified by the command line arguments.
§Examples
use cli_xtask::{clap::Parser, config::Config, error_handler, logger, Result, Xtask};
fn main() -> Result<()> {
// Parse command line arguments
let command = <Xtask>::parse();
// Setup error handler and logger
error_handler::install()?; // `error-handler` feature is required
logger::install(command.verbosity.get())?; // `logger` feature is required
// Run the subcommand specified by the command line arguments
command.run(&Config::new())?;
Ok(())
}
Trait Implementations§
Source§impl<Subcommand> Args for Xtask<Subcommand>where
Subcommand: Subcommand,
impl<Subcommand> Args for Xtask<Subcommand>where
Subcommand: Subcommand,
Source§fn augment_args<'b>(__clap_app: Command) -> Command
fn augment_args<'b>(__clap_app: Command) -> Command
Source§fn augment_args_for_update<'b>(__clap_app: Command) -> Command
fn augment_args_for_update<'b>(__clap_app: Command) -> Command
Command
so it can instantiate self
via
FromArgMatches::update_from_arg_matches_mut
Read moreSource§impl<Subcommand> CommandFactory for Xtask<Subcommand>where
Subcommand: Subcommand,
impl<Subcommand> CommandFactory for Xtask<Subcommand>where
Subcommand: Subcommand,
Source§impl<Subcommand> FromArgMatches for Xtask<Subcommand>where
Subcommand: Subcommand,
impl<Subcommand> FromArgMatches for Xtask<Subcommand>where
Subcommand: Subcommand,
Source§fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
Source§fn from_arg_matches_mut(
__clap_arg_matches: &mut ArgMatches,
) -> Result<Self, Error>
fn from_arg_matches_mut( __clap_arg_matches: &mut ArgMatches, ) -> Result<Self, Error>
Source§fn update_from_arg_matches(
&mut self,
__clap_arg_matches: &ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches( &mut self, __clap_arg_matches: &ArgMatches, ) -> Result<(), Error>
ArgMatches
to self
.Source§fn update_from_arg_matches_mut(
&mut self,
__clap_arg_matches: &mut ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches_mut( &mut self, __clap_arg_matches: &mut ArgMatches, ) -> Result<(), Error>
ArgMatches
to self
.Source§impl<Subcommand> Parser for Xtask<Subcommand>where
Subcommand: Subcommand,
impl<Subcommand> Parser for Xtask<Subcommand>where
Subcommand: Subcommand,
Source§fn parse_from<I, T>(itr: I) -> Self
fn parse_from<I, T>(itr: I) -> Self
Source§fn try_parse_from<I, T>(itr: I) -> Result<Self, Error>
fn try_parse_from<I, T>(itr: I) -> Result<Self, Error>
Source§fn update_from<I, T>(&mut self, itr: I)
fn update_from<I, T>(&mut self, itr: I)
Auto Trait Implementations§
impl<Subcommand> Freeze for Xtask<Subcommand>where
Subcommand: Freeze,
impl<Subcommand> RefUnwindSafe for Xtask<Subcommand>where
Subcommand: RefUnwindSafe,
impl<Subcommand> Send for Xtask<Subcommand>where
Subcommand: Send,
impl<Subcommand> Sync for Xtask<Subcommand>where
Subcommand: Sync,
impl<Subcommand> Unpin for Xtask<Subcommand>where
Subcommand: Unpin,
impl<Subcommand> UnwindSafe for Xtask<Subcommand>where
Subcommand: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg
or
a color-specific method, such as OwoColorize::green
, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg
or
a color-specific method, such as OwoColorize::on_yellow
, Read more