Skip to content

Commit 9bab7b9

Browse files
committed
feat(rust): add open in terminal function for macOS
1 parent bf71eb7 commit 9bab7b9

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

crates/but-api/src/commands/open.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,3 +150,24 @@ pub fn show_in_finder(_app: &App, params: ShowInFinderParams) -> Result<(), Erro
150150

151151
Ok(())
152152
}
153+
154+
#[derive(Deserialize)]
155+
pub struct OpenInTerminalParams {
156+
pub app_name: String,
157+
pub path: String,
158+
}
159+
160+
pub fn open_in_terminal(_app: &App, params: OpenInTerminalParams) -> Result<(), Error> {
161+
#[cfg(target_os = "macos")]
162+
{
163+
use std::process::Command;
164+
Command::new("open")
165+
.arg("-a")
166+
.arg(&params.app_name)
167+
.arg(&params.path)
168+
.status()
169+
.with_context(|| format!("Failed to show '{}' in Finder", params.path))?;
170+
}
171+
172+
Ok(())
173+
}

crates/gitbutler-tauri/src/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ fn main() {
264264
modes::edit_changes_from_initial,
265265
open::open_url,
266266
open::show_in_finder,
267+
open::open_in_terminal,
267268
forge::pr_templates,
268269
forge::pr_template,
269270
settings::get_app_settings,

crates/gitbutler-tauri/src/open.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,9 @@ pub fn open_url(app: State<'_, App>, url: String) -> Result<(), Error> {
1515
pub fn show_in_finder(app: State<'_, App>, path: String) -> Result<(), Error> {
1616
open::show_in_finder(&app, open::ShowInFinderParams { path })
1717
}
18+
19+
#[tauri::command(async)]
20+
#[instrument(skip(app), err(Debug))]
21+
pub fn open_in_terminal(app: State<'_, App>, app_name: String, path: String) -> Result<(), Error> {
22+
open::open_in_terminal(&app, open::OpenInTerminalParams { app_name, path })
23+
}

0 commit comments

Comments
 (0)