summaryrefslogtreecommitdiff
path: root/cli/lsp/sources.rs
diff options
context:
space:
mode:
authorKitson Kelly <me@kitsonkelly.com>2020-12-30 15:17:17 +1100
committerGitHub <noreply@github.com>2020-12-30 15:17:17 +1100
commit8011eced141e7bf0e1eac334daf326bd49504748 (patch)
tree3d2bdd36cc4f19285ba5292b9946cdabf466d25b /cli/lsp/sources.rs
parente8a81724bb3b3767edaddbe78edc52108ae78b5f (diff)
feat(lsp): add cache command (#8911)
Diffstat (limited to 'cli/lsp/sources.rs')
-rw-r--r--cli/lsp/sources.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/cli/lsp/sources.rs b/cli/lsp/sources.rs
index c6ab87f21..5ef16a876 100644
--- a/cli/lsp/sources.rs
+++ b/cli/lsp/sources.rs
@@ -10,16 +10,36 @@ use crate::http_cache;
use crate::http_cache::HttpCache;
use crate::import_map::ImportMap;
use crate::media_type::MediaType;
+use crate::module_graph::GraphBuilder;
+use crate::program_state::ProgramState;
+use crate::specifier_handler::FetchHandler;
use crate::text_encoding;
+use crate::Permissions;
+use deno_core::error::AnyError;
use deno_core::serde_json;
use deno_core::ModuleSpecifier;
use std::collections::HashMap;
use std::fs;
use std::path::Path;
use std::path::PathBuf;
+use std::sync::Arc;
+use std::sync::Mutex;
use std::time::SystemTime;
+pub async fn cache(
+ specifier: ModuleSpecifier,
+ maybe_import_map: Option<ImportMap>,
+) -> Result<(), AnyError> {
+ let program_state = Arc::new(ProgramState::new(Default::default())?);
+ let handler = Arc::new(Mutex::new(FetchHandler::new(
+ &program_state,
+ Permissions::allow_all(),
+ )?));
+ let mut builder = GraphBuilder::new(handler, maybe_import_map, None);
+ builder.add(&specifier, false).await
+}
+
#[derive(Debug, Clone, Default)]
struct Metadata {
dependencies: Option<HashMap<String, analysis::Dependency>>,