Initialize prettier_server.js wrapper along with default prettier

Kirill Bulatov created

Change summary

crates/prettier/prettier_server/.gitignore         |  1 -
crates/prettier/prettier_server/.zed/settings.json |  7 -------
crates/prettier/prettier_server/package-lock.json  | 12 ------------
crates/prettier/prettier_server/package.json       | 14 --------------
crates/prettier/src/prettier.rs                    |  2 ++
crates/prettier/src/prettier_server.js             |  0 
crates/project/src/project.rs                      | 10 +++++-----
7 files changed, 7 insertions(+), 39 deletions(-)

Detailed changes

crates/prettier/prettier_server/package.json 🔗

@@ -1,14 +0,0 @@
-{
-    "name": "prettier_server",
-    "version": "1.0.0",
-    "description": "",
-    "main": "src/index.js",
-    "scripts": {
-        "start": "node src/index.js",
-        "test": "echo \"Error: no test specified\" && exit 1"
-    },
-    "author": "Zed Industries",
-    "dev-dependencies": {
-        "prettier": "^3.0"
-    }
-}

crates/prettier/src/prettier.rs 🔗

@@ -18,6 +18,8 @@ pub struct LocateStart {
     pub starting_path: Arc<Path>,
 }
 
+pub const PRETTIER_SERVER_JS: &str = include_str!("./prettier_server.js");
+
 impl Prettier {
     // This was taken from the prettier-vscode extension.
     pub const CONFIG_FILE_NAMES: &'static [&'static str] = &[

crates/project/src/project.rs 🔗

@@ -79,7 +79,7 @@ use std::{
     time::{Duration, Instant},
 };
 use terminals::Terminals;
-use text::Anchor;
+use text::{Anchor, LineEnding, Rope};
 use util::{
     debug_panic, defer,
     http::HttpClient,
@@ -8350,10 +8350,10 @@ impl Project {
         let fs = Arc::clone(&self.fs);
         cx.background()
             .spawn(async move {
-                let prettier_dir_metadata = fs.metadata(default_prettier_dir).await.with_context(|| format!("fetching FS metadata for prettier default dir {default_prettier_dir:?}"))?;
-                if prettier_dir_metadata.is_none() {
-                    fs.create_dir(default_prettier_dir).await.with_context(|| format!("creating prettier default dir {default_prettier_dir:?}"))?;
-                }
+                let prettier_wrapper_path = default_prettier_dir.join("prettier_server.js");
+                // method creates parent directory if it doesn't exist
+                fs.save(&prettier_wrapper_path, &Rope::from(prettier::PRETTIER_SERVER_JS), LineEnding::Unix).await
+                .with_context(|| format!("writing prettier_server.js file at {prettier_wrapper_path:?}"))?;
 
                 let packages_to_versions = future::try_join_all(
                     prettier_plugins