feat(project): add --no-persist
to prevent new project persisting
This commit is contained in:
parent
88ca1cd343
commit
910331868e
3 changed files with 9 additions and 0 deletions
|
@ -20,6 +20,7 @@ open_time: i64,
|
||||||
language_servers: std.StringHashMap(LSP),
|
language_servers: std.StringHashMap(LSP),
|
||||||
file_language_server: std.StringHashMap(LSP),
|
file_language_server: std.StringHashMap(LSP),
|
||||||
tasks: std.ArrayList(Task),
|
tasks: std.ArrayList(Task),
|
||||||
|
persistent: bool = false,
|
||||||
|
|
||||||
const Self = @This();
|
const Self = @This();
|
||||||
|
|
||||||
|
@ -130,6 +131,7 @@ pub fn restore_state(self: *Self, data: []const u8) !void {
|
||||||
error.InvalidType => return self.restore_state_v0(data),
|
error.InvalidType => return self.restore_state_v0(data),
|
||||||
else => return tp.trace(tp.channel.debug, .{ "restore_state", "unknown format", data }),
|
else => return tp.trace(tp.channel.debug, .{ "restore_state", "unknown format", data }),
|
||||||
};
|
};
|
||||||
|
self.persistent = true;
|
||||||
return self.restore_state_v1(data);
|
return self.restore_state_v1(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@ pub fn main() anyerror!void {
|
||||||
|
|
||||||
pub const descriptions = .{
|
pub const descriptions = .{
|
||||||
.project = "Set project directory (default: cwd)",
|
.project = "Set project directory (default: cwd)",
|
||||||
|
.no_persist = "Do not persist new projects",
|
||||||
.frame_rate = "Set target frame rate (default: 60)",
|
.frame_rate = "Set target frame rate (default: 60)",
|
||||||
.debug_wait = "Wait for key press before starting UI",
|
.debug_wait = "Wait for key press before starting UI",
|
||||||
.debug_dump_on_error = "Dump stack traces on errors",
|
.debug_dump_on_error = "Dump stack traces on errors",
|
||||||
|
@ -76,6 +77,7 @@ pub fn main() anyerror!void {
|
||||||
|
|
||||||
pub const switches = .{
|
pub const switches = .{
|
||||||
.project = 'p',
|
.project = 'p',
|
||||||
|
.no_persist = 'N',
|
||||||
.frame_rate = 'f',
|
.frame_rate = 'f',
|
||||||
.trace_level = 't',
|
.trace_level = 't',
|
||||||
.language = 'l',
|
.language = 'l',
|
||||||
|
@ -85,6 +87,7 @@ pub fn main() anyerror!void {
|
||||||
};
|
};
|
||||||
|
|
||||||
project: ?[]const u8,
|
project: ?[]const u8,
|
||||||
|
no_persist: bool,
|
||||||
frame_rate: ?usize,
|
frame_rate: ?usize,
|
||||||
debug_wait: bool,
|
debug_wait: bool,
|
||||||
debug_dump_on_error: bool,
|
debug_dump_on_error: bool,
|
||||||
|
@ -202,6 +205,7 @@ pub fn main() anyerror!void {
|
||||||
log.set_std_log_pid(log_proc.ref());
|
log.set_std_log_pid(log_proc.ref());
|
||||||
defer log.set_std_log_pid(null);
|
defer log.set_std_log_pid(null);
|
||||||
|
|
||||||
|
env.set("no-persist", args.no_persist);
|
||||||
env.set("restore-session", args.restore_session);
|
env.set("restore-session", args.restore_session);
|
||||||
env.set("no-alternate", args.no_alternate);
|
env.set("no-alternate", args.no_alternate);
|
||||||
env.set("show-input", args.show_input);
|
env.set("show-input", args.show_input);
|
||||||
|
|
|
@ -423,6 +423,7 @@ const Process = struct {
|
||||||
fn close(self: *Process, project_directory: []const u8) error{}!void {
|
fn close(self: *Process, project_directory: []const u8) error{}!void {
|
||||||
if (self.projects.fetchRemove(project_directory)) |kv| {
|
if (self.projects.fetchRemove(project_directory)) |kv| {
|
||||||
self.allocator.free(kv.key);
|
self.allocator.free(kv.key);
|
||||||
|
self.persist_project(kv.value) catch {};
|
||||||
kv.value.deinit();
|
kv.value.deinit();
|
||||||
self.allocator.destroy(kv.value);
|
self.allocator.destroy(kv.value);
|
||||||
self.logger.print("closed: {s}", .{project_directory});
|
self.logger.print("closed: {s}", .{project_directory});
|
||||||
|
@ -629,6 +630,8 @@ const Process = struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn persist_project(self: *Process, project: *Project) !void {
|
fn persist_project(self: *Process, project: *Project) !void {
|
||||||
|
const no_persist = tp.env.get().is("no-persist");
|
||||||
|
if (no_persist and !project.persistent) return;
|
||||||
tp.trace(tp.channel.debug, .{ "persist_project", project.name });
|
tp.trace(tp.channel.debug, .{ "persist_project", project.name });
|
||||||
self.logger.print("saving: {s}", .{project.name});
|
self.logger.print("saving: {s}", .{project.name});
|
||||||
const file_name = try get_project_state_file_path(self.allocator, project);
|
const file_name = try get_project_state_file_path(self.allocator, project);
|
||||||
|
|
Loading…
Add table
Reference in a new issue