diff --git a/README.md b/README.md index 8defe9ca..50fa2af6 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,7 @@ Just run `topgrade`. It will run the following steps: * Run Cargo [install-update](https://github.com/nabijaczleweli/cargo-update) * Upgrade Emacs packages (You'll get a better output if you have [Paradox](https://github.com/Malabarba/paradox) installed) * Upgrade [OCaml packages](https://opam.ocaml.org/) +* Upgrade [R globally installed packages](https://github.com/ankane/jetpack) * Upgrade Vim/Neovim packages. Works with the following plugin frameworks: * [NeoBundle](https://github.com/Shougo/neobundle.vim) * [Vundle](https://github.com/VundleVim/Vundle.vim) diff --git a/src/generic.rs b/src/generic.rs index bf8ca54b..4d46d412 100644 --- a/src/generic.rs +++ b/src/generic.rs @@ -124,6 +124,26 @@ pub fn run_rustup(base_dirs: &BaseDirs, terminal: &mut Terminal, dry_run: bool) None } +#[must_use] +pub fn run_jetpack(terminal: &mut Terminal, dry_run: bool) -> Option<(&'static str, bool)> { + if let Some(jetpack) = utils::which("jetpack") { + terminal.print_separator("Jetpack"); + + let success = || -> Result<(), Error> { + Executor::new(&jetpack, dry_run) + .args(&["global", "update"]) + .spawn()? + .wait()? + .check()?; + Ok(()) + }().is_ok(); + + return Some(("Jetpack", success)); + } + + None +} + #[must_use] pub fn run_opam_update(terminal: &mut Terminal, dry_run: bool) -> Option<(&'static str, bool)> { if let Some(opam) = utils::which("opam") { diff --git a/src/main.rs b/src/main.rs index 891c6155..2fef5c3a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -265,6 +265,10 @@ fn run() -> Result<(), Error> { |terminal| generic::run_opam_update(terminal, opt.dry_run), &mut execution_context, )?); + report.push_result(execute( + |terminal| generic::run_jetpack(terminal, opt.dry_run), + &mut execution_context, + )?); report.push_result(execute( |terminal| vim::upgrade_vim(&base_dirs, terminal, opt.dry_run), &mut execution_context,