diff --git a/src/config.rs b/src/config.rs index 05d3622b..2fcd619a 100644 --- a/src/config.rs +++ b/src/config.rs @@ -94,6 +94,7 @@ pub enum Step { GnomeShellExtensions, HomeManager, Jetpack, + Kakoune, Krew, Macports, Mas, diff --git a/src/main.rs b/src/main.rs index c0f72796..d50adbdf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -308,6 +308,7 @@ fn run() -> Result<()> { runner.execute(Step::Vim, "vim", || vim::upgrade_vim(&base_dirs, &ctx))?; runner.execute(Step::Vim, "Neovim", || vim::upgrade_neovim(&base_dirs, &ctx))?; runner.execute(Step::Vim, "voom", || vim::run_voom(&base_dirs, run_type))?; + runner.execute(Step::Kakoune, "Kakoune", || kakoune::upgrade_kak_plug(&ctx))?; runner.execute(Step::Node, "npm", || node::run_npm_upgrade(&ctx))?; runner.execute(Step::Pnpm, "pnpm", || node::pnpm_global_update(&ctx))?; runner.execute(Step::Deno, "deno", || node::deno_upgrade(&ctx))?; diff --git a/src/steps/kakoune.rs b/src/steps/kakoune.rs new file mode 100644 index 00000000..d2fd4609 --- /dev/null +++ b/src/steps/kakoune.rs @@ -0,0 +1,31 @@ +use crate::error::TopgradeError; +use crate::terminal::print_separator; +use crate::utils::require; +use anyhow::Result; + +use crate::execution_context::ExecutionContext; +use crate::executor::ExecutorOutput; + +const UPGRADE_KAK: &str = include_str!("upgrade.kak"); + +pub fn upgrade_kak_plug(ctx: &ExecutionContext) -> Result<()> { + let kak = require("kak")?; + + print_separator("Kakoune"); + + let mut command = ctx.run_type().execute(&kak); + command.args(&["-ui", "dummy", "-e", UPGRADE_KAK]); + + let output = command.output()?; + + if let ExecutorOutput::Wet(output) = output { + let status = output.status; + if !status.success() { + return Err(TopgradeError::ProcessFailed(status).into()); + } else { + println!("Plugins upgraded") + } + } + + Ok(()) +} diff --git a/src/steps/mod.rs b/src/steps/mod.rs index 96801ae5..512dca95 100644 --- a/src/steps/mod.rs +++ b/src/steps/mod.rs @@ -1,6 +1,7 @@ pub mod emacs; pub mod generic; pub mod git; +pub mod kakoune; pub mod node; pub mod os; pub mod powershell; diff --git a/src/steps/upgrade.kak b/src/steps/upgrade.kak new file mode 100644 index 00000000..95d6f707 --- /dev/null +++ b/src/steps/upgrade.kak @@ -0,0 +1,6 @@ +try %{ + set global plug_block_ui true; + plug-update; +} + +quit 0;