Add extensions to the remote server (#20049)
TODO: - [x] Double check strange PHP env detection - [x] Clippy & etc. Release Notes: - Added support for extension languages on the remote server --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
This commit is contained in:
parent
0e62b6dddd
commit
a03770837e
11 changed files with 606 additions and 4 deletions
|
@ -29,6 +29,7 @@ chrono.workspace = true
|
|||
clap.workspace = true
|
||||
client.workspace = true
|
||||
env_logger.workspace = true
|
||||
extension_host.workspace = true
|
||||
fs.workspace = true
|
||||
futures.workspace = true
|
||||
git.workspace = true
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
use anyhow::{anyhow, Result};
|
||||
use extension_host::headless_host::HeadlessExtensionStore;
|
||||
use fs::Fs;
|
||||
use gpui::{AppContext, AsyncAppContext, Context as _, Model, ModelContext, PromptLevel};
|
||||
use http_client::HttpClient;
|
||||
|
@ -37,6 +38,7 @@ pub struct HeadlessProject {
|
|||
pub settings_observer: Model<SettingsObserver>,
|
||||
pub next_entry_id: Arc<AtomicUsize>,
|
||||
pub languages: Arc<LanguageRegistry>,
|
||||
pub extensions: Model<HeadlessExtensionStore>,
|
||||
}
|
||||
|
||||
pub struct HeadlessAppState {
|
||||
|
@ -147,6 +149,15 @@ impl HeadlessProject {
|
|||
)
|
||||
.detach();
|
||||
|
||||
let extensions = HeadlessExtensionStore::new(
|
||||
fs.clone(),
|
||||
http_client.clone(),
|
||||
languages.clone(),
|
||||
paths::remote_extensions_dir().to_path_buf(),
|
||||
node_runtime,
|
||||
cx,
|
||||
);
|
||||
|
||||
let client: AnyProtoClient = session.clone().into();
|
||||
|
||||
session.subscribe_to_entity(SSH_PROJECT_ID, &worktree_store);
|
||||
|
@ -173,6 +184,15 @@ impl HeadlessProject {
|
|||
client.add_model_request_handler(BufferStore::handle_update_buffer);
|
||||
client.add_model_message_handler(BufferStore::handle_close_buffer);
|
||||
|
||||
client.add_request_handler(
|
||||
extensions.clone().downgrade(),
|
||||
HeadlessExtensionStore::handle_sync_extensions,
|
||||
);
|
||||
client.add_request_handler(
|
||||
extensions.clone().downgrade(),
|
||||
HeadlessExtensionStore::handle_install_extension,
|
||||
);
|
||||
|
||||
BufferStore::init(&client);
|
||||
WorktreeStore::init(&client);
|
||||
SettingsObserver::init(&client);
|
||||
|
@ -190,6 +210,7 @@ impl HeadlessProject {
|
|||
task_store,
|
||||
next_entry_id: Default::default(),
|
||||
languages,
|
||||
extensions,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue