Skip to content
20 changes: 20 additions & 0 deletions src-tauri/src/bin/codex_monitor_daemon.rs
Original file line number Diff line number Diff line change
Expand Up @@ -890,6 +890,26 @@ impl DaemonState {
git_ui_core::get_git_status_core(&self.workspaces, workspace_id).await
}

async fn init_git_repo(
&self,
workspace_id: String,
branch: String,
force: bool,
) -> Result<Value, String> {
git_ui_core::init_git_repo_core(&self.workspaces, workspace_id, branch, force).await
}

async fn create_github_repo(
&self,
workspace_id: String,
repo: String,
visibility: String,
branch: Option<String>,
) -> Result<Value, String> {
git_ui_core::create_github_repo_core(&self.workspaces, workspace_id, repo, visibility, branch)
.await
}

async fn list_git_roots(
&self,
workspace_id: String,
Expand Down
32 changes: 32 additions & 0 deletions src-tauri/src/bin/codex_monitor_daemon/rpc/git.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,38 @@ pub(super) async fn try_handle(
};
Some(state.get_git_status(workspace_id).await)
}
"init_git_repo" => {
let workspace_id = match parse_string(params, "workspaceId") {
Ok(value) => value,
Err(err) => return Some(Err(err)),
};
let branch = match parse_string(params, "branch") {
Ok(value) => value,
Err(err) => return Some(Err(err)),
};
let force = parse_optional_bool(params, "force").unwrap_or(false);
Some(state.init_git_repo(workspace_id, branch, force).await)
}
"create_github_repo" => {
let workspace_id = match parse_string(params, "workspaceId") {
Ok(value) => value,
Err(err) => return Some(Err(err)),
};
let repo = match parse_string(params, "repo") {
Ok(value) => value,
Err(err) => return Some(Err(err)),
};
let visibility = match parse_string(params, "visibility") {
Ok(value) => value,
Err(err) => return Some(Err(err)),
};
let branch = parse_optional_string(params, "branch");
Some(
state
.create_github_repo(workspace_id, repo, visibility, branch)
.await,
)
}
"list_git_roots" => {
let workspace_id = match parse_string(params, "workspaceId") {
Ok(value) => value,
Expand Down
37 changes: 37 additions & 0 deletions src-tauri/src/git/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,43 @@ pub(crate) async fn get_git_status(
git_ui_core::get_git_status_core(&state.workspaces, workspace_id).await
}

#[tauri::command]
pub(crate) async fn init_git_repo(
workspace_id: String,
branch: String,
force: Option<bool>,
state: State<'_, AppState>,
app: AppHandle,
) -> Result<Value, String> {
try_remote_value!(
state,
app,
"init_git_repo",
json!({ "workspaceId": &workspace_id, "branch": &branch, "force": force })
);
git_ui_core::init_git_repo_core(&state.workspaces, workspace_id, branch, force.unwrap_or(false))
.await
}

#[tauri::command]
pub(crate) async fn create_github_repo(
workspace_id: String,
repo: String,
visibility: String,
branch: Option<String>,
state: State<'_, AppState>,
app: AppHandle,
) -> Result<Value, String> {
try_remote_value!(
state,
app,
"create_github_repo",
json!({ "workspaceId": &workspace_id, "repo": &repo, "visibility": &visibility, "branch": branch })
);
git_ui_core::create_github_repo_core(&state.workspaces, workspace_id, repo, visibility, branch)
.await
}

#[tauri::command]
pub(crate) async fn stage_git_file(
workspace_id: String,
Expand Down
2 changes: 2 additions & 0 deletions src-tauri/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,8 @@ pub fn run() {
codex::collaboration_mode_list,
workspaces::connect_workspace,
git::get_git_status,
git::init_git_repo,
git::create_github_repo,
git::list_git_roots,
git::get_git_diffs,
git::get_git_log,
Expand Down
19 changes: 19 additions & 0 deletions src-tauri/src/shared/git_ui_core.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,25 @@ pub(crate) async fn get_git_status_core(
diff::get_git_status_inner(workspaces, workspace_id).await
}

pub(crate) async fn init_git_repo_core(
workspaces: &Mutex<HashMap<String, WorkspaceEntry>>,
workspace_id: String,
branch: String,
force: bool,
) -> Result<Value, String> {
commands::init_git_repo_inner(workspaces, workspace_id, branch, force).await
}

pub(crate) async fn create_github_repo_core(
workspaces: &Mutex<HashMap<String, WorkspaceEntry>>,
workspace_id: String,
repo: String,
visibility: String,
branch: Option<String>,
) -> Result<Value, String> {
commands::create_github_repo_inner(workspaces, workspace_id, repo, visibility, branch).await
}

pub(crate) async fn list_git_roots_core(
workspaces: &Mutex<HashMap<String, WorkspaceEntry>>,
workspace_id: String,
Expand Down
Loading
Loading