mirror of
https://github.com/astral-sh/uv.git
synced 2025-08-04 10:58:28 +00:00

## Summary Implementation referenced in https://github.com/astral-sh/uv/pull/12239#issuecomment-2744880003 Closes #12919 #12901 This makes the sysconfig replacements mappings dynamically generated from https://github.com/astral-sh/python-build-standalone/blob/main/cpython-unix/targets.yml ## Test Plan cargo dev tests, and tested scenario from https://github.com/astral-sh/uv/issues/12901#issuecomment-2822107454
74 lines
3 KiB
Rust
74 lines
3 KiB
Rust
use std::env;
|
|
|
|
use anyhow::Result;
|
|
use clap::Parser;
|
|
use tracing::instrument;
|
|
|
|
use crate::clear_compile::ClearCompileArgs;
|
|
use crate::compile::CompileArgs;
|
|
use crate::generate_all::Args as GenerateAllArgs;
|
|
use crate::generate_cli_reference::Args as GenerateCliReferenceArgs;
|
|
use crate::generate_env_vars_reference::Args as GenerateEnvVarsReferenceArgs;
|
|
use crate::generate_json_schema::Args as GenerateJsonSchemaArgs;
|
|
use crate::generate_options_reference::Args as GenerateOptionsReferenceArgs;
|
|
use crate::generate_sysconfig_mappings::Args as GenerateSysconfigMetadataArgs;
|
|
#[cfg(feature = "render")]
|
|
use crate::render_benchmarks::RenderBenchmarksArgs;
|
|
use crate::wheel_metadata::WheelMetadataArgs;
|
|
|
|
mod clear_compile;
|
|
mod compile;
|
|
mod generate_all;
|
|
mod generate_cli_reference;
|
|
mod generate_env_vars_reference;
|
|
mod generate_json_schema;
|
|
mod generate_options_reference;
|
|
mod generate_sysconfig_mappings;
|
|
mod render_benchmarks;
|
|
mod wheel_metadata;
|
|
|
|
const ROOT_DIR: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/../../");
|
|
|
|
#[derive(Parser)]
|
|
enum Cli {
|
|
/// Display the metadata for a `.whl` at a given URL.
|
|
WheelMetadata(WheelMetadataArgs),
|
|
/// Compile all `.py` to `.pyc` files in the tree.
|
|
Compile(CompileArgs),
|
|
/// Remove all `.pyc` in the tree.
|
|
ClearCompile(ClearCompileArgs),
|
|
/// Run all code and documentation generation steps.
|
|
GenerateAll(GenerateAllArgs),
|
|
/// Generate JSON schema for the TOML configuration file.
|
|
GenerateJSONSchema(GenerateJsonSchemaArgs),
|
|
/// Generate the options reference for the documentation.
|
|
GenerateOptionsReference(GenerateOptionsReferenceArgs),
|
|
/// Generate the CLI reference for the documentation.
|
|
GenerateCliReference(GenerateCliReferenceArgs),
|
|
/// Generate the environment variables reference for the documentation.
|
|
GenerateEnvVarsReference(GenerateEnvVarsReferenceArgs),
|
|
/// Generate the sysconfig metadata from derived targets.
|
|
GenerateSysconfigMetadata(GenerateSysconfigMetadataArgs),
|
|
#[cfg(feature = "render")]
|
|
/// Render the benchmarks.
|
|
RenderBenchmarks(RenderBenchmarksArgs),
|
|
}
|
|
|
|
#[instrument] // Anchor span to check for overhead
|
|
pub async fn run() -> Result<()> {
|
|
let cli = Cli::parse();
|
|
match cli {
|
|
Cli::WheelMetadata(args) => wheel_metadata::wheel_metadata(args).await?,
|
|
Cli::Compile(args) => compile::compile(args).await?,
|
|
Cli::ClearCompile(args) => clear_compile::clear_compile(&args)?,
|
|
Cli::GenerateAll(args) => generate_all::main(&args).await?,
|
|
Cli::GenerateJSONSchema(args) => generate_json_schema::main(&args)?,
|
|
Cli::GenerateOptionsReference(args) => generate_options_reference::main(&args)?,
|
|
Cli::GenerateCliReference(args) => generate_cli_reference::main(&args)?,
|
|
Cli::GenerateEnvVarsReference(args) => generate_env_vars_reference::main(&args)?,
|
|
Cli::GenerateSysconfigMetadata(args) => generate_sysconfig_mappings::main(&args).await?,
|
|
#[cfg(feature = "render")]
|
|
Cli::RenderBenchmarks(args) => render_benchmarks::render_benchmarks(&args)?,
|
|
}
|
|
Ok(())
|
|
}
|