main.rs

 1mod tasks;
 2mod workspace;
 3
 4use anyhow::Result;
 5use clap::{Parser, Subcommand};
 6
 7#[derive(Parser)]
 8#[command(name = "cargo xtask")]
 9struct Args {
10    #[command(subcommand)]
11    command: CliCommand,
12}
13
14#[derive(Subcommand)]
15enum CliCommand {
16    /// Runs `cargo clippy`.
17    Clippy(tasks::clippy::ClippyArgs),
18    Compliance(tasks::compliance::ComplianceArgs),
19    Licenses(tasks::licenses::LicensesArgs),
20    /// Checks that packages conform to a set of standards.
21    PackageConformity(tasks::package_conformity::PackageConformityArgs),
22    /// Publishes GPUI and its dependencies to crates.io.
23    PublishGpui(tasks::publish_gpui::PublishGpuiArgs),
24    /// Builds GPUI web examples and serves them.
25    WebExamples(tasks::web_examples::WebExamplesArgs),
26    Workflows(tasks::workflows::GenerateWorkflowArgs),
27    CheckWorkflows(tasks::workflow_checks::WorkflowValidationArgs),
28}
29
30fn main() -> Result<()> {
31    let args = Args::parse();
32
33    match args.command {
34        CliCommand::Clippy(args) => tasks::clippy::run_clippy(args),
35        CliCommand::Compliance(args) => tasks::compliance::check_compliance(args),
36        CliCommand::Licenses(args) => tasks::licenses::run_licenses(args),
37        CliCommand::PackageConformity(args) => {
38            tasks::package_conformity::run_package_conformity(args)
39        }
40        CliCommand::PublishGpui(args) => tasks::publish_gpui::run_publish_gpui(args),
41        CliCommand::WebExamples(args) => tasks::web_examples::run_web_examples(args),
42        CliCommand::Workflows(args) => tasks::workflows::run_workflows(args),
43        CliCommand::CheckWorkflows(args) => tasks::workflow_checks::validate(args),
44    }
45}