feat: allow to update vcs changed files info for current project
This commit is contained in:
parent
8d0fa9a355
commit
fdf2b6d376
3 changed files with 20 additions and 0 deletions
|
|
@ -2174,6 +2174,8 @@ pub fn query_git(self: *Self) void {
|
||||||
self.state.status = .failed;
|
self.state.status = .failed;
|
||||||
};
|
};
|
||||||
// TODO: This needs to be invoked when there are identified changes in the fs
|
// TODO: This needs to be invoked when there are identified changes in the fs
|
||||||
|
for (self.new_or_modified_files.items) |file| self.allocator.free(file.path);
|
||||||
|
self.new_or_modified_files.clearRetainingCapacity();
|
||||||
self.state.vcs_new_or_modified_files = .running;
|
self.state.vcs_new_or_modified_files = .running;
|
||||||
git.new_or_modified_files(@intFromPtr(self)) catch {
|
git.new_or_modified_files(@intFromPtr(self)) catch {
|
||||||
self.state.vcs_new_or_modified_files = .failed;
|
self.state.vcs_new_or_modified_files = .failed;
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,13 @@ pub fn request_new_or_modified_files(max: usize) (ProjectManagerError || Project
|
||||||
return send(.{ "request_new_or_modified_files", project, max });
|
return send(.{ "request_new_or_modified_files", project, max });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn request_sync_with_vcs() (ProjectManagerError || ProjectError)!void {
|
||||||
|
const project = tp.env.get().str("project");
|
||||||
|
if (project.len == 0)
|
||||||
|
return error.NoProject;
|
||||||
|
return send(.{ "sync_with_vcs", project });
|
||||||
|
}
|
||||||
|
|
||||||
pub fn request_recent_projects() (ProjectManagerError || ProjectError)!void {
|
pub fn request_recent_projects() (ProjectManagerError || ProjectError)!void {
|
||||||
const project = tp.env.get().str("project");
|
const project = tp.env.get().str("project");
|
||||||
return send(.{ "request_recent_projects", project });
|
return send(.{ "request_recent_projects", project });
|
||||||
|
|
@ -386,6 +393,8 @@ const Process = struct {
|
||||||
self.request_recent_files(from, project_directory, max) catch |e| return from.forward_error(e, @errorReturnTrace()) catch error.ClientFailed;
|
self.request_recent_files(from, project_directory, max) catch |e| return from.forward_error(e, @errorReturnTrace()) catch error.ClientFailed;
|
||||||
} else if (try cbor.match(m.buf, .{ "request_new_or_modified_files", tp.extract(&project_directory), tp.extract(&max) })) {
|
} else if (try cbor.match(m.buf, .{ "request_new_or_modified_files", tp.extract(&project_directory), tp.extract(&max) })) {
|
||||||
self.request_new_or_modified_files(from, project_directory, max) catch |e| return from.forward_error(e, @errorReturnTrace()) catch error.ClientFailed;
|
self.request_new_or_modified_files(from, project_directory, max) catch |e| return from.forward_error(e, @errorReturnTrace()) catch error.ClientFailed;
|
||||||
|
} else if (try cbor.match(m.buf, .{ "sync_with_vcs", tp.extract(&project_directory) })) {
|
||||||
|
self.request_sync_with_vcs(from, project_directory) catch |e| return from.forward_error(e, @errorReturnTrace()) catch error.ClientFailed;
|
||||||
} else if (try cbor.match(m.buf, .{ "request_recent_projects", tp.extract(&project_directory) })) {
|
} else if (try cbor.match(m.buf, .{ "request_recent_projects", tp.extract(&project_directory) })) {
|
||||||
self.request_recent_projects(from, project_directory) catch |e| return from.forward_error(e, @errorReturnTrace()) catch error.ClientFailed;
|
self.request_recent_projects(from, project_directory) catch |e| return from.forward_error(e, @errorReturnTrace()) catch error.ClientFailed;
|
||||||
} else if (try cbor.match(m.buf, .{ "query_recent_files", tp.extract(&project_directory), tp.extract(&max), tp.extract(&query) })) {
|
} else if (try cbor.match(m.buf, .{ "query_recent_files", tp.extract(&project_directory), tp.extract(&max), tp.extract(&query) })) {
|
||||||
|
|
@ -486,6 +495,11 @@ const Process = struct {
|
||||||
return project.request_recent_files(from, max);
|
return project.request_recent_files(from, max);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn request_sync_with_vcs(self: *Process, _: tp.pid_ref, project_directory: []const u8) (ProjectError || Project.ClientError)!void {
|
||||||
|
const project = self.projects.get(project_directory) orelse return error.NoProject;
|
||||||
|
return project.query_git();
|
||||||
|
}
|
||||||
|
|
||||||
fn request_new_or_modified_files(self: *Process, from: tp.pid_ref, project_directory: []const u8, max: usize) (ProjectError || Project.ClientError)!void {
|
fn request_new_or_modified_files(self: *Process, from: tp.pid_ref, project_directory: []const u8, max: usize) (ProjectError || Project.ClientError)!void {
|
||||||
const project = self.projects.get(project_directory) orelse return error.NoProject;
|
const project = self.projects.get(project_directory) orelse return error.NoProject;
|
||||||
return project.request_new_or_modified_files(from, max);
|
return project.request_new_or_modified_files(from, max);
|
||||||
|
|
|
||||||
|
|
@ -1370,6 +1370,10 @@ pub fn mainview() ?*MainView {
|
||||||
return if (current().mainview_) |*mv| mv.dynamic_cast(MainView) else null;
|
return if (current().mainview_) |*mv| mv.dynamic_cast(MainView) else null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn sync_with_vcs() !void {
|
||||||
|
try project_manager.request_sync_with_vcs();
|
||||||
|
}
|
||||||
|
|
||||||
pub fn mainview_widget() Widget {
|
pub fn mainview_widget() Widget {
|
||||||
return current().mainview_ orelse @panic("tui main view not found");
|
return current().mainview_ orelse @panic("tui main view not found");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue