From 9f981c934aa39090bea58c39a4cae3046ae92999 Mon Sep 17 00:00:00 2001 From: adisbladis Date: Sat, 28 Sep 2024 16:03:45 +0000 Subject: [PATCH] Add `UV_NO_SYNC` environment variable (#7752) ## Summary I have a workflow where I want use `uv` as a dependency solver only, and manage my environments with external tooling (Nix). ## Test Plan Manually tested. Automated testing seems excessive for such a trivial change. ## Problems It's still not as useful as I'd like it to be. `uv` uncondtionally creates a virtual environment, something I would expect that `--no-sync` should disable. This looks a bit more tricky to achieve and I'm not sure about how to best structure it. --- crates/uv-cli/src/lib.rs | 6 +++--- docs/configuration/environment.md | 2 ++ docs/reference/cli.md | 3 +++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/crates/uv-cli/src/lib.rs b/crates/uv-cli/src/lib.rs index 039ad985c815..c57522ac47ba 100644 --- a/crates/uv-cli/src/lib.rs +++ b/crates/uv-cli/src/lib.rs @@ -2534,7 +2534,7 @@ pub struct RunArgs { /// /// Implies `--frozen`, as the project dependencies will be ignored (i.e., the lockfile will not /// be updated, since the environment will not be synced regardless). - #[arg(long, conflicts_with = "frozen")] + #[arg(long, env = "UV_NO_SYNC", value_parser = clap::builder::BoolishValueParser::new(), conflicts_with = "frozen")] pub no_sync: bool, /// Assert that the `uv.lock` will remain unchanged. @@ -2850,7 +2850,7 @@ pub struct AddArgs { pub extra: Option>, /// Avoid syncing the virtual environment. - #[arg(long, conflicts_with = "frozen")] + #[arg(long, env = "UV_NO_SYNC", value_parser = clap::builder::BoolishValueParser::new(), conflicts_with = "frozen")] pub no_sync: bool, /// Assert that the `uv.lock` will remain unchanged. @@ -2919,7 +2919,7 @@ pub struct RemoveArgs { pub optional: Option, /// Avoid syncing the virtual environment after re-locking the project. - #[arg(long, conflicts_with = "frozen")] + #[arg(long, env = "UV_NO_SYNC", value_parser = clap::builder::BoolishValueParser::new(), conflicts_with = "frozen")] pub no_sync: bool, /// Assert that the `uv.lock` will remain unchanged. diff --git a/docs/configuration/environment.md b/docs/configuration/environment.md index f744bfa1b8a4..917ebd1649cd 100644 --- a/docs/configuration/environment.md +++ b/docs/configuration/environment.md @@ -71,6 +71,8 @@ uv accepts the following command-line arguments as environment variables: set, uv will use this username for publishing. - `UV_PUBLISH_PASSWORD`: Equivalent to the `--password` command-line argument in `uv publish`. If set, uv will use this password for publishing. +- `UV_NO_SYNC`: Equivalent to the `--no-sync` command-line argument. If set, uv will skip updating + the environment. In each case, the corresponding command-line argument takes precedence over an environment variable. diff --git a/docs/reference/cli.md b/docs/reference/cli.md index 9e92c6d841ca..4b0c56f3071c 100644 --- a/docs/reference/cli.md +++ b/docs/reference/cli.md @@ -283,6 +283,7 @@ uv run [OPTIONS]

Implies --frozen, as the project dependencies will be ignored (i.e., the lockfile will not be updated, since the environment will not be synced regardless).

+

May also be set with the UV_NO_SYNC environment variable.

--offline

Disable network access.

When disabled, uv will only use locally cached data and locally available files.

@@ -796,6 +797,7 @@ uv add [OPTIONS] >
--no-sync

Avoid syncing the virtual environment

+

May also be set with the UV_NO_SYNC environment variable.

--offline

Disable network access.

When disabled, uv will only use locally cached data and locally available files.

@@ -1112,6 +1114,7 @@ uv remove [OPTIONS] ...
--no-sync

Avoid syncing the virtual environment after re-locking the project

+

May also be set with the UV_NO_SYNC environment variable.

--offline

Disable network access.

When disabled, uv will only use locally cached data and locally available files.