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
		Add a link
		
	
		Reference in a new issue