Skip to content

Commit

Permalink
feat(cli): add --token option to self update command
Browse files Browse the repository at this point in the history
Signed-off-by: Frost Ming <me@frostming.com>
  • Loading branch information
frostming committed Sep 11, 2024
1 parent 77d278f commit cdb8497
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 3 deletions.
4 changes: 4 additions & 0 deletions crates/uv-cli/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,10 @@ pub enum SelfCommand {
pub struct SelfUpdateArgs {
/// Update to the specified version. If not provided, uv will update to the latest version.
pub target_version: Option<String>,

/// Specify a github token for authentication during the update process.
#[arg(long, env = "UV_GITHUB_TOKEN")]
pub token: Option<String>,
}

#[derive(Args)]
Expand Down
10 changes: 9 additions & 1 deletion crates/uv/src/commands/self_update.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,18 @@ use crate::commands::ExitStatus;
use crate::printer::Printer;

/// Attempt to update the uv binary.
pub(crate) async fn self_update(version: Option<String>, printer: Printer) -> Result<ExitStatus> {
pub(crate) async fn self_update(
version: Option<String>,
token: Option<String>,
printer: Printer,
) -> Result<ExitStatus> {
let mut updater = AxoUpdater::new_for("uv");
updater.disable_installer_output();

if let Some(token) = token {
updater.set_github_token(&token);
}

// Load the "install receipt" for the current binary. If the receipt is not found, then
// uv was likely installed via a package manager.
let Ok(updater) = updater.load_receipt() else {
Expand Down
8 changes: 6 additions & 2 deletions crates/uv/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -766,8 +766,12 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
}
#[cfg(feature = "self-update")]
Commands::Self_(SelfNamespace {
command: SelfCommand::Update(SelfUpdateArgs { target_version }),
}) => commands::self_update(target_version, printer).await,
command:
SelfCommand::Update(SelfUpdateArgs {
target_version,
token,
}),
}) => commands::self_update(target_version, token, printer).await,
Commands::Version { output_format } => {
commands::version(output_format, &mut stdout())?;
Ok(ExitStatus::Success)
Expand Down

0 comments on commit cdb8497

Please sign in to comment.