diff --git a/crates/pixi_config/src/lib.rs b/crates/pixi_config/src/lib.rs index f324b1d2f5..b4ae04e69d 100644 --- a/crates/pixi_config/src/lib.rs +++ b/crates/pixi_config/src/lib.rs @@ -120,25 +120,37 @@ pub fn get_cache_dir() -> miette::Result { } #[derive(Parser, Debug, Default, Clone)] pub struct ConfigCli { - /// Do not verify the TLS certificate of the server. - #[arg(long, action = ArgAction::SetTrue, help_heading = consts::CLAP_CONFIG_OPTIONS)] - tls_no_verify: bool, - /// Path to the file containing the authentication token. #[arg(long, help_heading = consts::CLAP_CONFIG_OPTIONS)] auth_file: Option, + /// Max concurrent network requests, default is `50` + #[arg(long, help_heading = consts::CLAP_CONFIG_OPTIONS)] + concurrent_downloads: Option, + + /// Max concurrent solves, default is the number of CPUs + #[arg(long, help_heading = consts::CLAP_CONFIG_OPTIONS)] + concurrent_solves: Option, + + /// Set pinning strategy + #[arg(long, help_heading = consts::CLAP_CONFIG_OPTIONS, value_enum)] + pinning_strategy: Option, + /// Specifies whether to use the keyring to look up credentials for PyPI. #[arg(long, help_heading = consts::CLAP_CONFIG_OPTIONS)] pypi_keyring_provider: Option, - /// Max concurrent solves, default is the number of CPUs + /// Run post-link scripts (insecure) #[arg(long, help_heading = consts::CLAP_CONFIG_OPTIONS)] - pub concurrent_solves: Option, + run_post_link_scripts: bool, - /// Max concurrent network requests, default is `50` + /// Do not verify the TLS certificate of the server. + #[arg(long, action = ArgAction::SetTrue, help_heading = consts::CLAP_CONFIG_OPTIONS)] + tls_no_verify: bool, + + /// Use environment activation cache (experimental) #[arg(long, help_heading = consts::CLAP_CONFIG_OPTIONS)] - pub concurrent_downloads: Option, + use_environment_activation_cache: bool, } #[derive(Parser, Debug, Clone, Default)] @@ -483,7 +495,7 @@ impl PyPIConfig { } /// The strategy for that will be used for pinning a version of a package. -#[derive(Serialize, Deserialize, Debug, Clone, Default, PartialEq, Eq, Copy)] +#[derive(Serialize, Deserialize, Debug, Clone, Default, PartialEq, Eq, Copy, clap::ValueEnum)] #[serde(rename_all = "kebab-case")] pub enum PinningStrategy { /// Default semver strategy e.g. "1.2.3" becomes ">=1.2.3, <2" but "0.1.0" @@ -767,6 +779,20 @@ impl From for Config { .concurrent_downloads .unwrap_or(ConcurrencyConfig::default().downloads), }, + tool_platform: None, + run_post_link_scripts: if cli.run_post_link_scripts { + Some(RunPostLinkScripts::Insecure) + } else { + None + }, + experimental: ExperimentalConfig { + use_environment_activation_cache: if cli.use_environment_activation_cache { + Some(true) + } else { + None + }, + }, + pinning_strategy: cli.pinning_strategy, ..Default::default() } } @@ -1262,10 +1288,13 @@ impl Config { pub fn get_keys(&self) -> &[&str] { &[ "authentication-override-file", + "concurrency", + "concurrency.downloads", + "concurrency.solves", "default-channels", "detached-environments", + "experimental", "experimental.use-environment-activation-cache", - "max-concurrent-solves", "mirrors", "pinning-strategy", "proxy-config", @@ -1282,6 +1311,7 @@ impl Config { "repodata-config.disable-jlap", "repodata-config.disable-sharded", "repodata-config.disable-zstd", + "run-post-link-scripts", "s3-options", "s3-options.", "s3-options..endpoint-url", @@ -1934,12 +1964,16 @@ UNUSED = "unused" #[test] fn test_config_from_cli() { + // Test with all CLI options enabled let cli = ConfigCli { tls_no_verify: true, auth_file: None, pypi_keyring_provider: Some(KeyringProvider::Subprocess), - concurrent_solves: None, - concurrent_downloads: None, + concurrent_solves: Some(8), + concurrent_downloads: Some(100), + run_post_link_scripts: true, + use_environment_activation_cache: true, + pinning_strategy: Some(PinningStrategy::Semver), }; let config = Config::from(cli); assert_eq!(config.tls_no_verify, Some(true)); @@ -1947,6 +1981,17 @@ UNUSED = "unused" config.pypi_config().keyring_provider, Some(KeyringProvider::Subprocess) ); + assert_eq!(config.concurrency.solves, 8); + assert_eq!(config.concurrency.downloads, 100); + assert_eq!( + config.run_post_link_scripts, + Some(RunPostLinkScripts::Insecure) + ); + assert_eq!( + config.experimental.use_environment_activation_cache, + Some(true) + ); + assert_eq!(config.pinning_strategy, Some(PinningStrategy::Semver)); let cli = ConfigCli { tls_no_verify: false, @@ -1954,6 +1999,9 @@ UNUSED = "unused" pypi_keyring_provider: None, concurrent_solves: None, concurrent_downloads: None, + run_post_link_scripts: false, + use_environment_activation_cache: false, + pinning_strategy: None, }; let config = Config::from(cli); @@ -1962,7 +2010,9 @@ UNUSED = "unused" config.authentication_override_file, Some(PathBuf::from("path.json")) ); - assert!(!config.experimental.use_environment_activation_cache()); + assert_eq!(config.run_post_link_scripts, None); + assert_eq!(config.experimental.use_environment_activation_cache, None); + assert_eq!(config.pinning_strategy, None); } #[test] @@ -2404,6 +2454,169 @@ UNUSED = "unused" assert!(s3_options.force_path_style); assert_eq!(s3_options.region, "auto"); + // Test tool-platform + config + .set("tool-platform", Some("linux-64".to_string())) + .unwrap(); + assert_eq!(config.tool_platform, Some(Platform::Linux64)); + + // Test run-post-link-scripts + config + .set("run-post-link-scripts", Some("insecure".to_string())) + .unwrap(); + assert_eq!( + config.run_post_link_scripts, + Some(RunPostLinkScripts::Insecure) + ); + + // Test shell.force-activate + config + .set("shell.force-activate", Some("true".to_string())) + .unwrap(); + assert_eq!(config.shell.force_activate, Some(true)); + + // Test shell.source-completion-scripts + config + .set("shell.source-completion-scripts", Some("false".to_string())) + .unwrap(); + assert_eq!(config.shell.source_completion_scripts, Some(false)); + + // Test experimental.use-environment-activation-cache + config + .set( + "experimental.use-environment-activation-cache", + Some("true".to_string()), + ) + .unwrap(); + assert_eq!( + config.experimental.use_environment_activation_cache, + Some(true) + ); + + // Test more repodata-config options + config + .set("repodata-config.disable-bzip2", Some("true".to_string())) + .unwrap(); + let repodata_config = config.repodata_config(); + assert_eq!(repodata_config.default.disable_bzip2, Some(true)); + + config + .set("repodata-config.disable-zstd", Some("false".to_string())) + .unwrap(); + let repodata_config = config.repodata_config(); + assert_eq!(repodata_config.default.disable_zstd, Some(false)); + + config + .set("repodata-config.disable-sharded", Some("true".to_string())) + .unwrap(); + let repodata_config = config.repodata_config(); + assert_eq!(repodata_config.default.disable_sharded, Some(true)); + + // Test pypi-config.allow-insecure-host + config + .set( + "pypi-config.allow-insecure-host", + Some(r#"["pypi.example.com"]"#.to_string()), + ) + .unwrap(); + assert_eq!(config.pypi_config().allow_insecure_host.len(), 1); + + // Test proxy-config + config + .set( + "proxy-config.http", + Some("http://proxy.example.com:8080".to_string()), + ) + .unwrap(); + assert_eq!( + config.proxy_config.http, + Some(Url::parse("http://proxy.example.com:8080").unwrap()) + ); + + config + .set( + "proxy-config.https", + Some("https://proxy.example.com:8080".to_string()), + ) + .unwrap(); + assert_eq!( + config.proxy_config.https, + Some(Url::parse("https://proxy.example.com:8080").unwrap()) + ); + + config + .set( + "proxy-config.non-proxy-hosts", + Some(r#"["localhost", "127.0.0.1"]"#.to_string()), + ) + .unwrap(); + assert_eq!(config.proxy_config.non_proxy_hosts.len(), 2); + + // Test s3-options with individual keys + config + .set( + "s3-options.test-bucket.endpoint-url", + Some("http://localhost:9000".to_string()), + ) + .unwrap(); + config + .set( + "s3-options.test-bucket.region", + Some("us-east-1".to_string()), + ) + .unwrap(); + config + .set( + "s3-options.test-bucket.force-path-style", + Some("false".to_string()), + ) + .unwrap(); + + // Test concurrency configuration + config + .set("concurrency.solves", Some("5".to_string())) + .unwrap(); + assert_eq!(config.concurrency.solves, 5); + + config + .set("concurrency.downloads", Some("25".to_string())) + .unwrap(); + assert_eq!(config.concurrency.downloads, 25); + + // Test max-concurrent-solves (legacy accessor) + assert_eq!(config.max_concurrent_solves(), 5); + assert_eq!(config.max_concurrent_downloads(), 25); + + // Test tls-no-verify + config + .set("tls-no-verify", Some("true".to_string())) + .unwrap(); + assert_eq!(config.tls_no_verify, Some(true)); + + // Test mirrors + config + .set( + "mirrors", + Some(r#"{"https://conda.anaconda.org/conda-forge": ["https://prefix.dev/conda-forge"]}"#.to_string()), + ) + .unwrap(); + assert_eq!(config.mirrors.len(), 1); + + // Test detached-environments + config + .set("detached-environments", Some("/custom/path".to_string())) + .unwrap(); + assert!(matches!( + config.detached_environments, + Some(DetachedEnvironments::Path(_)) + )); + + // Test pinning-strategy + config + .set("pinning-strategy", Some("semver".to_string())) + .unwrap(); + assert_eq!(config.pinning_strategy, Some(PinningStrategy::Semver)); + config.set("unknown-key", None).unwrap_err(); } diff --git a/docs/reference/cli/pixi/add.md b/docs/reference/cli/pixi/add.md index 9df239d7e8..b52b09c30c 100644 --- a/docs/reference/cli/pixi/add.md +++ b/docs/reference/cli/pixi/add.md @@ -30,17 +30,24 @@ pixi add [OPTIONS] ... : Whether the pypi requirement should be editable ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Git Options - `--git (-g) ` diff --git a/docs/reference/cli/pixi/build.md b/docs/reference/cli/pixi/build.md index ae43d07cdd..c36adfcf2f 100644 --- a/docs/reference/cli/pixi/build.md +++ b/docs/reference/cli/pixi/build.md @@ -24,17 +24,24 @@ pixi build [OPTIONS] : Whether to clean the build directory before building ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Global Options - `--manifest-path ` diff --git a/docs/reference/cli/pixi/exec.md b/docs/reference/cli/pixi/exec.md index 496fed2c7a..1179002afa 100644 --- a/docs/reference/cli/pixi/exec.md +++ b/docs/reference/cli/pixi/exec.md @@ -35,17 +35,24 @@ pixi exec [OPTIONS] [COMMAND]... : Before executing the command, list packages in the environment Specify `--list=some_regex` to filter the shown packages ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Description Run a command and install it in a temporary environment. diff --git a/docs/reference/cli/pixi/global/add.md b/docs/reference/cli/pixi/global/add.md index 2f54c80bc4..daf5551468 100644 --- a/docs/reference/cli/pixi/global/add.md +++ b/docs/reference/cli/pixi/global/add.md @@ -26,17 +26,24 @@ pixi global add [OPTIONS] --environment ...
May be provided more than once. ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Description Adds dependencies to an environment diff --git a/docs/reference/cli/pixi/global/expose/add.md b/docs/reference/cli/pixi/global/expose/add.md index f0dd8e9e5a..258a066ff4 100644 --- a/docs/reference/cli/pixi/global/expose/add.md +++ b/docs/reference/cli/pixi/global/expose/add.md @@ -22,17 +22,24 @@ pixi global expose add [OPTIONS] --environment [MAPPING]...
**required**: `true` ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Description Add exposed binaries from an environment to your global environment diff --git a/docs/reference/cli/pixi/global/expose/remove.md b/docs/reference/cli/pixi/global/expose/remove.md index d6900e0c9f..55ebce13ba 100644 --- a/docs/reference/cli/pixi/global/expose/remove.md +++ b/docs/reference/cli/pixi/global/expose/remove.md @@ -17,17 +17,24 @@ pixi global expose remove [OPTIONS] [EXPOSED_NAME]...
May be provided more than once. ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Description Remove exposed binaries from the global environment diff --git a/docs/reference/cli/pixi/global/install.md b/docs/reference/cli/pixi/global/install.md index e1f6981008..175f097d60 100644 --- a/docs/reference/cli/pixi/global/install.md +++ b/docs/reference/cli/pixi/global/install.md @@ -37,17 +37,24 @@ pixi global install [OPTIONS] ... : Specifies that no shortcuts should be created for the installed packages ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Description Installs the defined packages in a globally accessible location and exposes their command line applications. diff --git a/docs/reference/cli/pixi/global/list.md b/docs/reference/cli/pixi/global/list.md index 499b004522..0afd6a934e 100644 --- a/docs/reference/cli/pixi/global/list.md +++ b/docs/reference/cli/pixi/global/list.md @@ -24,17 +24,24 @@ pixi global list [OPTIONS] [REGEX]
**options**: `size`, `name` ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Description Lists all packages previously installed into a globally accessible location via `pixi global install`. diff --git a/docs/reference/cli/pixi/global/remove.md b/docs/reference/cli/pixi/global/remove.md index f03eda69e5..157eb2f77c 100644 --- a/docs/reference/cli/pixi/global/remove.md +++ b/docs/reference/cli/pixi/global/remove.md @@ -22,17 +22,24 @@ pixi global remove [OPTIONS] ... : Specifies the environment that the dependencies need to be removed from ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Description Removes dependencies from an environment diff --git a/docs/reference/cli/pixi/global/shortcut/add.md b/docs/reference/cli/pixi/global/shortcut/add.md index cca90829bd..55476edf20 100644 --- a/docs/reference/cli/pixi/global/shortcut/add.md +++ b/docs/reference/cli/pixi/global/shortcut/add.md @@ -22,16 +22,23 @@ pixi global shortcut add [OPTIONS] --environment [PACKAGE]...
**required**: `true` ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) --8<-- "docs/reference/cli/pixi/global/shortcut/add_extender:example" diff --git a/docs/reference/cli/pixi/global/shortcut/remove.md b/docs/reference/cli/pixi/global/shortcut/remove.md index 94baaa3d5f..6271f57f78 100644 --- a/docs/reference/cli/pixi/global/shortcut/remove.md +++ b/docs/reference/cli/pixi/global/shortcut/remove.md @@ -17,16 +17,23 @@ pixi global shortcut remove [OPTIONS] [SHORTCUT]...
May be provided more than once. ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) --8<-- "docs/reference/cli/pixi/global/shortcut/remove_extender:example" diff --git a/docs/reference/cli/pixi/global/sync.md b/docs/reference/cli/pixi/global/sync.md index e973d3a380..340acc9fdf 100644 --- a/docs/reference/cli/pixi/global/sync.md +++ b/docs/reference/cli/pixi/global/sync.md @@ -12,16 +12,23 @@ pixi global sync [OPTIONS] ``` ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) --8<-- "docs/reference/cli/pixi/global/sync_extender:example" diff --git a/docs/reference/cli/pixi/global/uninstall.md b/docs/reference/cli/pixi/global/uninstall.md index aee73d49ec..8242aa49a6 100644 --- a/docs/reference/cli/pixi/global/uninstall.md +++ b/docs/reference/cli/pixi/global/uninstall.md @@ -18,17 +18,24 @@ pixi global uninstall [OPTIONS] ...
**required**: `true` ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Description Uninstalls environments from the global environment. diff --git a/docs/reference/cli/pixi/global/update.md b/docs/reference/cli/pixi/global/update.md index 6fe5498255..8f46da796e 100644 --- a/docs/reference/cli/pixi/global/update.md +++ b/docs/reference/cli/pixi/global/update.md @@ -17,16 +17,23 @@ pixi global update [OPTIONS] [ENVIRONMENTS]...
May be provided more than once. ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) --8<-- "docs/reference/cli/pixi/global/update_extender:example" diff --git a/docs/reference/cli/pixi/global/upgrade-all.md b/docs/reference/cli/pixi/global/upgrade-all.md index 6728bbea1f..3d448b8434 100644 --- a/docs/reference/cli/pixi/global/upgrade-all.md +++ b/docs/reference/cli/pixi/global/upgrade-all.md @@ -20,16 +20,23 @@ pixi global upgrade-all [OPTIONS]
**default**: `current_platform` ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) --8<-- "docs/reference/cli/pixi/global/upgrade-all_extender:example" diff --git a/docs/reference/cli/pixi/import.md b/docs/reference/cli/pixi/import.md index e85243b1f5..a17891b948 100644 --- a/docs/reference/cli/pixi/import.md +++ b/docs/reference/cli/pixi/import.md @@ -29,17 +29,24 @@ pixi import [OPTIONS] : A name for the created feature ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Update Options - `--no-install` diff --git a/docs/reference/cli/pixi/install.md b/docs/reference/cli/pixi/install.md index c042ceb9f7..c897f0a641 100644 --- a/docs/reference/cli/pixi/install.md +++ b/docs/reference/cli/pixi/install.md @@ -19,17 +19,24 @@ pixi install [OPTIONS] : Install all environments ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Update Options - `--frozen` diff --git a/docs/reference/cli/pixi/reinstall.md b/docs/reference/cli/pixi/reinstall.md index 2e7f6026ea..adee3cab30 100644 --- a/docs/reference/cli/pixi/reinstall.md +++ b/docs/reference/cli/pixi/reinstall.md @@ -24,17 +24,24 @@ pixi reinstall [OPTIONS] [PACKAGE]... : Install all environments ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Update Options - `--frozen` diff --git a/docs/reference/cli/pixi/remove.md b/docs/reference/cli/pixi/remove.md index e99c10cccf..f18efb887c 100644 --- a/docs/reference/cli/pixi/remove.md +++ b/docs/reference/cli/pixi/remove.md @@ -28,17 +28,24 @@ pixi remove [OPTIONS] ...
**default**: `default` ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Git Options - `--git (-g) ` diff --git a/docs/reference/cli/pixi/run.md b/docs/reference/cli/pixi/run.md index 0e6adc3840..4e89c155f4 100644 --- a/docs/reference/cli/pixi/run.md +++ b/docs/reference/cli/pixi/run.md @@ -29,17 +29,24 @@ pixi run [OPTIONS] [TASK]... : ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) - `--force-activate` : Do not use the environment activation cache. (default: true except in experimental mode) - `--no-completions` diff --git a/docs/reference/cli/pixi/shell-hook.md b/docs/reference/cli/pixi/shell-hook.md index 2ecffea561..d25ae7ba6c 100644 --- a/docs/reference/cli/pixi/shell-hook.md +++ b/docs/reference/cli/pixi/shell-hook.md @@ -21,17 +21,24 @@ pixi shell-hook [OPTIONS]
**default**: `false` ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) - `--force-activate` : Do not use the environment activation cache. (default: true except in experimental mode) - `--no-completions` diff --git a/docs/reference/cli/pixi/shell.md b/docs/reference/cli/pixi/shell.md index 4dc002db7e..b849aa6b5c 100644 --- a/docs/reference/cli/pixi/shell.md +++ b/docs/reference/cli/pixi/shell.md @@ -16,17 +16,24 @@ pixi shell [OPTIONS] : The environment to activate in the shell ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) - `--change-ps1 ` : Do not change the PS1 variable when starting a prompt
**options**: `true`, `false` diff --git a/docs/reference/cli/pixi/update.md b/docs/reference/cli/pixi/update.md index a7b7511e02..b96e39c73b 100644 --- a/docs/reference/cli/pixi/update.md +++ b/docs/reference/cli/pixi/update.md @@ -31,17 +31,24 @@ pixi update [OPTIONS] [PACKAGES]... : Output the changes in JSON format ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Global Options - `--manifest-path ` diff --git a/docs/reference/cli/pixi/upgrade.md b/docs/reference/cli/pixi/upgrade.md index 9cf61ae3c9..bceddbbdb2 100644 --- a/docs/reference/cli/pixi/upgrade.md +++ b/docs/reference/cli/pixi/upgrade.md @@ -29,17 +29,24 @@ pixi upgrade [OPTIONS] [PACKAGES]... : Only show the changes that would be made, without actually updating the manifest, lock file, or environment ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Update Options - `--no-install` diff --git a/docs/reference/cli/pixi/workspace/channel/add.md b/docs/reference/cli/pixi/workspace/channel/add.md index 08ce5436f9..080475e1f0 100644 --- a/docs/reference/cli/pixi/workspace/channel/add.md +++ b/docs/reference/cli/pixi/workspace/channel/add.md @@ -26,17 +26,24 @@ pixi workspace channel add [OPTIONS] ... : The name of the feature to modify ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Update Options - `--no-install` diff --git a/docs/reference/cli/pixi/workspace/channel/remove.md b/docs/reference/cli/pixi/workspace/channel/remove.md index 41c0ce51f9..8cbc1615c4 100644 --- a/docs/reference/cli/pixi/workspace/channel/remove.md +++ b/docs/reference/cli/pixi/workspace/channel/remove.md @@ -26,17 +26,24 @@ pixi workspace channel remove [OPTIONS] ... : The name of the feature to modify ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Update Options - `--no-install` diff --git a/docs/reference/cli/pixi/workspace/export/conda-explicit-spec.md b/docs/reference/cli/pixi/workspace/export/conda-explicit-spec.md index d49c2dd7dc..1890b09476 100644 --- a/docs/reference/cli/pixi/workspace/export/conda-explicit-spec.md +++ b/docs/reference/cli/pixi/workspace/export/conda-explicit-spec.md @@ -31,17 +31,24 @@ pixi workspace export conda-explicit-spec [OPTIONS]
**default**: `false` ## Config Options -- `--tls-no-verify` -: Do not verify the TLS certificate of the server - `--auth-file ` : Path to the file containing the authentication token +- `--concurrent-downloads ` +: Max concurrent network requests, default is `50` +- `--concurrent-solves ` +: Max concurrent solves, default is the number of CPUs +- `--pinning-strategy ` +: Set pinning strategy +
**options**: `semver`, `minor`, `major`, `latest-up`, `exact-version`, `no-pin` - `--pypi-keyring-provider ` : Specifies whether to use the keyring to look up credentials for PyPI
**options**: `disabled`, `subprocess` -- `--concurrent-solves ` -: Max concurrent solves, default is the number of CPUs -- `--concurrent-downloads ` -: Max concurrent network requests, default is `50` +- `--run-post-link-scripts` +: Run post-link scripts (insecure) +- `--tls-no-verify` +: Do not verify the TLS certificate of the server +- `--use-environment-activation-cache` +: Use environment activation cache (experimental) ## Update Options - `--no-lockfile-update` diff --git a/tests/integration_python/test_main_cli.py b/tests/integration_python/test_main_cli.py index 2146bff633..7171e032cd 100644 --- a/tests/integration_python/test_main_cli.py +++ b/tests/integration_python/test_main_cli.py @@ -775,6 +775,58 @@ def test_concurrency_flags( ) +def test_cli_config_options( + pixi: Path, tmp_pixi_workspace: Path, multiple_versions_channel_1: str +) -> None: + manifest_path = tmp_pixi_workspace / "pixi.toml" + + # Create a new project + verify_cli_command([pixi, "init", "--channel", multiple_versions_channel_1, tmp_pixi_workspace]) + + # Test --pinning-strategy flag + verify_cli_command( + [pixi, "add", "--pinning-strategy=semver", "--manifest-path", manifest_path, "package"] + ) + verify_cli_command( + [pixi, "add", "--pinning-strategy=minor", "--manifest-path", manifest_path, "package2"] + ) + verify_cli_command( + [pixi, "add", "--pinning-strategy=major", "--manifest-path", manifest_path, "package3"] + ) + verify_cli_command( + [ + pixi, + "add", + "--pinning-strategy=latest-up", + "--manifest-path", + manifest_path, + "package==0.1.0", + ] + ) + + # Test other CLI config flags + verify_cli_command( + [pixi, "install", "--run-post-link-scripts", "--manifest-path", manifest_path] + ) + verify_cli_command([pixi, "install", "--tls-no-verify", "--manifest-path", manifest_path]) + verify_cli_command( + [pixi, "install", "--use-environment-activation-cache", "--manifest-path", manifest_path] + ) + verify_cli_command( + [pixi, "install", "--pypi-keyring-provider=disabled", "--manifest-path", manifest_path] + ) + verify_cli_command( + [pixi, "install", "--pypi-keyring-provider=subprocess", "--manifest-path", manifest_path] + ) + + # Test --auth-file flag + auth_file = tmp_pixi_workspace / "auth.json" + auth_file.write_text("{}") + verify_cli_command( + [pixi, "install", f"--auth-file={auth_file}", "--manifest-path", manifest_path] + ) + + def test_dont_add_broken_dep(pixi: Path, tmp_pixi_workspace: Path, dummy_channel_1: str) -> None: manifest_path = tmp_pixi_workspace / "pixi.toml"