Mountain/Environment/
MountainEnvironment.rs1#![allow(non_snake_case, non_camel_case_types)]
10
11use std::sync::Arc;
12
13use Common::{
14 Command::CommandExecutor::CommandExecutor,
15 Configuration::{ConfigurationInspector::ConfigurationInspector, ConfigurationProvider::ConfigurationProvider},
16 CustomEditor::CustomEditorProvider::CustomEditorProvider,
17 Debug::DebugService::DebugService,
18 Diagnostic::DiagnosticManager::DiagnosticManager,
19 Document::DocumentProvider::DocumentProvider,
20 Environment::{Environment::Environment, Requires::Requires},
21 Error::CommonError::CommonError,
22 ExtensionManagement::ExtensionManagementService::ExtensionManagementService,
23 FileSystem::{FileSystemReader::FileSystemReader, FileSystemWriter::FileSystemWriter},
24 IPC::IPCProvider::IPCProvider,
25 Keybinding::KeybindingProvider::KeybindingProvider,
26 LanguageFeature::LanguageFeatureProviderRegistry::LanguageFeatureProviderRegistry,
27 Output::OutputChannelManager::OutputChannelManager,
28 Search::SearchProvider::SearchProvider,
29 Secret::SecretProvider::SecretProvider,
30 SourceControlManagement::SourceControlManagementProvider::SourceControlManagementProvider,
31 StatusBar::StatusBarProvider::StatusBarProvider,
32 Storage::StorageProvider::StorageProvider,
33 Synchronization::SynchronizationProvider::SynchronizationProvider,
34 Terminal::TerminalProvider::TerminalProvider,
35 Testing::TestController::TestController,
36 TreeView::TreeViewProvider::TreeViewProvider,
37 UserInterface::UserInterfaceProvider::UserInterfaceProvider,
38 WebView::WebViewProvider::WebViewProvider,
39 WorkSpace::{WorkSpaceEditApplier::WorkSpaceEditApplier, WorkSpaceProvider::WorkSpaceProvider},
40};
41use async_trait::async_trait;
42use log::{info, warn};
43use serde_json::Value;
44use tauri::{AppHandle, Manager, Wry};
45
46use crate::ApplicationState::ApplicationState::ApplicationState;
47
48#[derive(Clone)]
50pub struct MountainEnvironment {
51 pub ApplicationHandle:AppHandle<Wry>,
52
53 pub ApplicationState:Arc<ApplicationState>,
54}
55
56impl MountainEnvironment {
57 pub fn Create(ApplicationHandle:AppHandle<Wry>) -> Self {
59 info!("[MountainEnvironment] New instance created.");
60
61 let ApplicationState = ApplicationHandle.state::<Arc<ApplicationState>>().inner().clone();
62
63 Self { ApplicationHandle, ApplicationState }
64 }
65}
66
67impl Environment for MountainEnvironment {}
68
69#[async_trait]
70impl ExtensionManagementService for MountainEnvironment {
71 async fn ScanForExtensions(&self) -> Result<(), CommonError> {
72 warn!("[ExtensionManagementService] ScanForExtensions is a stub.");
73
74 Err(CommonError::NotImplemented { FeatureName:"ScanForExtensions".into() })
75 }
76
77 async fn GetExtensions(&self) -> Result<Vec<Value>, CommonError> {
78 let ScannedExtensionsGuard = self
79 .ApplicationState
80 .ScannedExtensions
81 .lock()
82 .map_err(|Error| CommonError::StateLockPoisoned { Context:Error.to_string() })?;
83
84 let Extensions:Vec<Value> = ScannedExtensionsGuard
85 .values()
86 .map(|ext| serde_json::to_value(ext).unwrap_or(Value::Null))
87 .collect();
88
89 Ok(Extensions)
90 }
91
92 async fn GetExtension(&self, _id:String) -> Result<Option<Value>, CommonError> {
93 warn!("[ExtensionManagementService] GetExtension is a stub.");
94
95 Err(CommonError::NotImplemented { FeatureName:"GetExtension".into() })
96 }
97}
98
99impl Requires<dyn CommandExecutor> for MountainEnvironment {
102 fn Require(&self) -> Arc<dyn CommandExecutor> { Arc::new(self.clone()) }
103}
104
105impl Requires<dyn ConfigurationProvider> for MountainEnvironment {
106 fn Require(&self) -> Arc<dyn ConfigurationProvider> { Arc::new(self.clone()) }
107}
108
109impl Requires<dyn ConfigurationInspector> for MountainEnvironment {
110 fn Require(&self) -> Arc<dyn ConfigurationInspector> { Arc::new(self.clone()) }
111}
112
113impl Requires<dyn CustomEditorProvider> for MountainEnvironment {
114 fn Require(&self) -> Arc<dyn CustomEditorProvider> { Arc::new(self.clone()) }
115}
116
117impl Requires<dyn DiagnosticManager> for MountainEnvironment {
118 fn Require(&self) -> Arc<dyn DiagnosticManager> { Arc::new(self.clone()) }
119}
120
121impl Requires<dyn DocumentProvider> for MountainEnvironment {
122 fn Require(&self) -> Arc<dyn DocumentProvider> { Arc::new(self.clone()) }
123}
124
125impl Requires<dyn FileSystemReader> for MountainEnvironment {
126 fn Require(&self) -> Arc<dyn FileSystemReader> { Arc::new(self.clone()) }
127}
128
129impl Requires<dyn FileSystemWriter> for MountainEnvironment {
130 fn Require(&self) -> Arc<dyn FileSystemWriter> { Arc::new(self.clone()) }
131}
132
133impl Requires<dyn IPCProvider> for MountainEnvironment {
134 fn Require(&self) -> Arc<dyn IPCProvider> { Arc::new(self.clone()) }
135}
136
137impl Requires<dyn LanguageFeatureProviderRegistry> for MountainEnvironment {
138 fn Require(&self) -> Arc<dyn LanguageFeatureProviderRegistry> { Arc::new(self.clone()) }
139}
140
141impl Requires<dyn OutputChannelManager> for MountainEnvironment {
142 fn Require(&self) -> Arc<dyn OutputChannelManager> { Arc::new(self.clone()) }
143}
144
145impl Requires<dyn SourceControlManagementProvider> for MountainEnvironment {
146 fn Require(&self) -> Arc<dyn SourceControlManagementProvider> { Arc::new(self.clone()) }
147}
148
149impl Requires<dyn SecretProvider> for MountainEnvironment {
150 fn Require(&self) -> Arc<dyn SecretProvider> { Arc::new(self.clone()) }
151}
152
153impl Requires<dyn StatusBarProvider> for MountainEnvironment {
154 fn Require(&self) -> Arc<dyn StatusBarProvider> { Arc::new(self.clone()) }
155}
156
157impl Requires<dyn StorageProvider> for MountainEnvironment {
158 fn Require(&self) -> Arc<dyn StorageProvider> { Arc::new(self.clone()) }
159}
160
161impl Requires<dyn SynchronizationProvider> for MountainEnvironment {
162 fn Require(&self) -> Arc<dyn SynchronizationProvider> { Arc::new(self.clone()) }
163}
164
165impl Requires<dyn TerminalProvider> for MountainEnvironment {
166 fn Require(&self) -> Arc<dyn TerminalProvider> { Arc::new(self.clone()) }
167}
168
169impl Requires<dyn TestController> for MountainEnvironment {
170 fn Require(&self) -> Arc<dyn TestController> { Arc::new(self.clone()) }
171}
172
173impl Requires<dyn TreeViewProvider> for MountainEnvironment {
174 fn Require(&self) -> Arc<dyn TreeViewProvider> { Arc::new(self.clone()) }
175}
176
177impl Requires<dyn UserInterfaceProvider> for MountainEnvironment {
178 fn Require(&self) -> Arc<dyn UserInterfaceProvider> { Arc::new(self.clone()) }
179}
180
181impl Requires<dyn WebViewProvider> for MountainEnvironment {
182 fn Require(&self) -> Arc<dyn WebViewProvider> { Arc::new(self.clone()) }
183}
184
185impl Requires<dyn WorkSpaceProvider> for MountainEnvironment {
186 fn Require(&self) -> Arc<dyn WorkSpaceProvider> { Arc::new(self.clone()) }
187}
188
189impl Requires<dyn WorkSpaceEditApplier> for MountainEnvironment {
190 fn Require(&self) -> Arc<dyn WorkSpaceEditApplier> { Arc::new(self.clone()) }
191}
192
193impl Requires<dyn ExtensionManagementService> for MountainEnvironment {
194 fn Require(&self) -> Arc<dyn ExtensionManagementService> { Arc::new(self.clone()) }
195}
196
197impl Requires<dyn DebugService> for MountainEnvironment {
198 fn Require(&self) -> Arc<dyn DebugService> { Arc::new(self.clone()) }
199}
200
201impl Requires<dyn KeybindingProvider> for MountainEnvironment {
202 fn Require(&self) -> Arc<dyn KeybindingProvider> { Arc::new(self.clone()) }
203}
204
205impl Requires<dyn SearchProvider> for MountainEnvironment {
206 fn Require(&self) -> Arc<dyn SearchProvider> { Arc::new(self.clone()) }
207}