global [generator.rust.file = "src/generated.rs"] global [generator.rust.uses = ("anyhow::Result")] global [generator.rust.no_error_type = true] global [generator.rust.async = true] global [generator.rust.async_trait = true] struct Feature { status: bool } struct Config { settings: FeatureSettings features: Features // global settings run_at_start_up?: bool detect_lidchange?: bool } struct Features { wp: Feature } struct FeatureSettings { wp: WpSetting sshpm: SshpmSetting } struct WpSetting { // Resolution: 3840(4k), 1920, 1366 res_w?: u32 // market: en-US mkt?: string } struct SshpmSetting { // local port mappings lpmappings?: SshLocalPortMapping[] } struct SshLocalPortMapping { local_port: u32 jump_host: string jump_host_port?: u32 jump_host_user?: string jump_host_pwd?: string target_host: string target_host_user?: string target_host_pwd?: string target_host_port?: u32 auto_connect?: bool auto_reconnect?: bool // target and jump host are sharing the same password same_pwd?: bool } usecase feature { toggleFeature { in { feature: string } out { status: bool } } getFeatures { out { features: Features } } getFeatureStatus { in { feature: string } out { status: bool } } updateConfig { in { config: Config } out { config: Config } } getConfig { out { config: Config } } } // Wallpaper usecase // feature is automatically refresh wallpaper usecase wallpaper { getWallpaper { in { res_w: u32 mkt: string } out { id: string data: string } } setWallpaper { in { id: string } } } // SSH port mapping usecase usecase sshpm { }