rustyclaw_core/canvas/
config.rs1use serde::{Deserialize, Serialize};
4use std::path::PathBuf;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct CanvasConfig {
9 #[serde(default = "default_enabled")]
11 pub enabled: bool,
12
13 #[serde(default = "default_port")]
15 pub port: u16,
16
17 #[serde(default)]
19 pub root: Option<PathBuf>,
20
21 #[serde(default = "default_a2ui")]
23 pub a2ui: bool,
24}
25
26fn default_enabled() -> bool {
27 true
28}
29
30fn default_port() -> u16 {
31 18789 }
33
34fn default_a2ui() -> bool {
35 true
36}
37
38impl Default for CanvasConfig {
39 fn default() -> Self {
40 Self {
41 enabled: true,
42 port: 18789,
43 root: None,
44 a2ui: true,
45 }
46 }
47}
48
49impl CanvasConfig {
50 pub fn canvas_root(&self, workspace: &std::path::Path) -> PathBuf {
52 self.root
53 .clone()
54 .unwrap_or_else(|| workspace.join("canvas"))
55 }
56
57 pub fn session_dir(&self, workspace: &std::path::Path, session: &str) -> PathBuf {
59 self.canvas_root(workspace).join(session)
60 }
61}