mod tasks; mod workspace; use anyhow::Result; use clap::{Parser, Subcommand}; #[derive(Parser)] #[command(name = "cargo xtask")] struct Args { #[command(subcommand)] command: CliCommand, } #[derive(Subcommand)] enum CliCommand { /// Runs `cargo clippy`. Clippy(tasks::clippy::ClippyArgs), Compliance(tasks::compliance::ComplianceArgs), Licenses(tasks::licenses::LicensesArgs), /// Checks that packages conform to a set of standards. PackageConformity(tasks::package_conformity::PackageConformityArgs), /// Publishes GPUI and its dependencies to crates.io. PublishGpui(tasks::publish_gpui::PublishGpuiArgs), /// Downloads the pinned `webrtc-sys` release and configures `LK_CUSTOM_WEBRTC`. SetupWebrtc(tasks::setup_webrtc::SetupWebrtcArgs), /// Builds GPUI web examples and serves them. WebExamples(tasks::web_examples::WebExamplesArgs), Workflows(tasks::workflows::GenerateWorkflowArgs), CheckWorkflows(tasks::workflow_checks::WorkflowValidationArgs), } fn main() -> Result<()> { let args = Args::parse(); match args.command { CliCommand::Clippy(args) => tasks::clippy::run_clippy(args), CliCommand::Compliance(args) => tasks::compliance::check_compliance(args), CliCommand::Licenses(args) => tasks::licenses::run_licenses(args), CliCommand::PackageConformity(args) => { tasks::package_conformity::run_package_conformity(args) } CliCommand::PublishGpui(args) => tasks::publish_gpui::run_publish_gpui(args), CliCommand::SetupWebrtc(args) => tasks::setup_webrtc::run_setup_webrtc(args), CliCommand::WebExamples(args) => tasks::web_examples::run_web_examples(args), CliCommand::Workflows(args) => tasks::workflows::run_workflows(args), CliCommand::CheckWorkflows(args) => tasks::workflow_checks::validate(args), } }