mirror of
https://github.com/openai/codex.git
synced 2026-04-24 14:45:27 +00:00
feat(cli): auto-update command
This commit is contained in:
22
README.md
22
README.md
@@ -17,6 +17,7 @@
|
||||
|
||||
- [Quickstart](#quickstart)
|
||||
- [Installing and running Codex CLI](#installing-and-running-codex-cli)
|
||||
- [Updating](#updating)
|
||||
- [Using Codex with your ChatGPT plan](#using-codex-with-your-chatgpt-plan)
|
||||
- [Usage-based billing alternative: Use an OpenAI API key](#usage-based-billing-alternative-use-an-openai-api-key)
|
||||
- [Choosing Codex's level of autonomy](#choosing-codexs-level-of-autonomy)
|
||||
@@ -76,6 +77,16 @@ Then simply run `codex` to get started:
|
||||
codex
|
||||
```
|
||||
|
||||
### Updating
|
||||
|
||||
Upgrade an existing installation to the latest release:
|
||||
|
||||
```shell
|
||||
codex update
|
||||
```
|
||||
|
||||
The command checks for a newer version and will attempt to upgrade automatically if the CLI was installed via npm or Homebrew.
|
||||
|
||||
<details>
|
||||
<summary>You can also go to the <a href="https://github.com/openai/codex/releases/latest">latest GitHub Release</a> and download the appropriate binary for your platform.</summary>
|
||||
|
||||
@@ -340,11 +351,12 @@ Help us improve by filing issues or submitting PRs (see the section below for ho
|
||||
|
||||
## CLI reference
|
||||
|
||||
| Command | Purpose | Example |
|
||||
| ------------------ | ---------------------------------- | ------------------------------- |
|
||||
| `codex` | Interactive TUI | `codex` |
|
||||
| `codex "..."` | Initial prompt for interactive TUI | `codex "fix lint errors"` |
|
||||
| `codex exec "..."` | Non-interactive "automation mode" | `codex exec "explain utils.ts"` |
|
||||
| Command | Purpose | Example |
|
||||
| ------------------ | ------------------------------------- | ------------------------------- |
|
||||
| `codex` | Interactive TUI | `codex` |
|
||||
| `codex "..."` | Initial prompt for interactive TUI | `codex "fix lint errors"` |
|
||||
| `codex exec "..."` | Non-interactive "automation mode" | `codex exec "explain utils.ts"` |
|
||||
| `codex update` | Check for updates and upgrade the CLI | `codex update` |
|
||||
|
||||
Key flags: `--model/-m`, `--ask-for-approval/-a`.
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ enum Subcommand {
|
||||
#[clap(visible_alias = "a")]
|
||||
Apply(ApplyCommand),
|
||||
|
||||
/// Check for a newer Codex release.
|
||||
/// Check for a newer Codex release and upgrade automatically when possible.
|
||||
Update,
|
||||
}
|
||||
|
||||
@@ -226,6 +226,7 @@ fn print_completion(cmd: CompletionCommand) {
|
||||
async fn run_update() -> anyhow::Result<()> {
|
||||
use codex_tui::updates::check_for_update;
|
||||
use codex_tui::updates::get_upgrade_version;
|
||||
use std::process::Command;
|
||||
|
||||
let overrides = ConfigOverrides {
|
||||
model: None,
|
||||
@@ -256,11 +257,42 @@ async fn run_update() -> anyhow::Result<()> {
|
||||
let exe = std::env::current_exe()?;
|
||||
let managed_by_npm = std::env::var_os("CODEX_MANAGED_BY_NPM").is_some();
|
||||
if managed_by_npm {
|
||||
println!("Run `npm install -g @openai/codex@latest` to update.");
|
||||
println!("Updating via npm...");
|
||||
match Command::new("npm")
|
||||
.args(["install", "-g", "@openai/codex@latest"])
|
||||
.status()
|
||||
{
|
||||
Ok(status) if status.success() => {
|
||||
println!("Codex updated successfully.");
|
||||
}
|
||||
Ok(status) => {
|
||||
println!(
|
||||
"`npm install` exited with status {status}. Run `npm install -g @openai/codex@latest` manually if needed."
|
||||
);
|
||||
}
|
||||
Err(err) => {
|
||||
println!(
|
||||
"Failed to run npm: {err}. Run `npm install -g @openai/codex@latest` manually."
|
||||
);
|
||||
}
|
||||
}
|
||||
} else if cfg!(target_os = "macos")
|
||||
&& (exe.starts_with("/opt/homebrew") || exe.starts_with("/usr/local"))
|
||||
{
|
||||
println!("Run `brew upgrade codex` to update.");
|
||||
println!("Updating via Homebrew...");
|
||||
match Command::new("brew").args(["upgrade", "codex"]).status() {
|
||||
Ok(status) if status.success() => {
|
||||
println!("Codex updated successfully.");
|
||||
}
|
||||
Ok(status) => {
|
||||
println!(
|
||||
"`brew upgrade` exited with status {status}. Run `brew upgrade codex` manually if needed."
|
||||
);
|
||||
}
|
||||
Err(err) => {
|
||||
println!("Failed to run Homebrew: {err}. Run `brew upgrade codex` manually.");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
println!(
|
||||
"See https://github.com/openai/codex/releases/latest for the latest releases and installation options."
|
||||
|
||||
Reference in New Issue
Block a user