Skip to content

Commit 24ab82e

Browse files
committed
chore: open
1 parent a2dcafe commit 24ab82e

12 files changed

+1129
-1144
lines changed
File renamed without changes.

build.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::process::Command;
2+
13
use prost_build::Config;
24

35
fn main() {
@@ -7,4 +9,8 @@ fn main() {
79
.out_dir("src/pb")
810
.compile_protos(&["embedded_sass.proto"], &["."])
911
.unwrap();
12+
Command::new("rustfmt")
13+
.arg("./src/pb/sass_embedded_protocol.rs")
14+
.spawn()
15+
.unwrap();
1016
}

src/compile.rs

Lines changed: 6 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ pub fn compile_sync(
1616
mut options: Options,
1717
) -> Result<CompileResult> {
1818
let exe = exe_path(&options);
19-
let mut importers =
19+
let importers =
2020
ImporterRegistry::new(options.importers.take(), options.load_paths.take());
2121
let logger = LoggerRegistry::new(options.logger.take());
2222

23-
let request = CompileRequest::with_path(path, &mut importers, &options);
23+
let request = CompileRequest::with_path(path, &importers, &options);
2424
let rt = tokio::runtime::Runtime::new().unwrap();
2525
let response = rt.block_on(async {
2626
let embedded = Embedded::new(exe);
@@ -62,11 +62,11 @@ pub async fn compile(
6262
mut options: Options,
6363
) -> Result<CompileResult> {
6464
let exe = exe_path(&options);
65-
let mut importers =
65+
let importers =
6666
ImporterRegistry::new(options.importers.take(), options.load_paths.take());
6767
let logger = LoggerRegistry::new(options.logger.take());
6868

69-
let request = CompileRequest::with_path(path, &mut importers, &options);
69+
let request = CompileRequest::with_path(path, &importers, &options);
7070
let embedded = Embedded::new(exe);
7171
let response = embedded.compile(request, &importers, &logger).await?;
7272

@@ -98,9 +98,8 @@ pub async fn compile_string(
9898
fn exe_path(options: &Options) -> String {
9999
options
100100
.exe_path
101-
.as_ref()
102-
.unwrap_or(&compiler_path::compiler_path().unwrap())
103-
.to_string()
101+
.clone()
102+
.unwrap_or_else(|| compiler_path::compiler_path().unwrap())
104103
}
105104

106105
fn handle_response(response: CompileResponse) -> Result<CompileResult> {
@@ -116,33 +115,3 @@ fn handle_response(response: CompileResponse) -> Result<CompileResult> {
116115
}
117116
}
118117
}
119-
120-
#[cfg(test)]
121-
mod tests {
122-
use crate::api::WithoutImporter;
123-
124-
use super::*;
125-
126-
#[tokio::test]
127-
async fn test_compile_string() {
128-
let res = compile_string(
129-
".foo {a: b}".to_string(),
130-
Options::default(),
131-
StringOptions::WithoutImporter(WithoutImporter::default()),
132-
)
133-
.await
134-
.unwrap();
135-
assert_eq!(res.css, ".foo {\n a: b;\n}");
136-
}
137-
138-
#[test]
139-
fn test_compile_string_sync() {
140-
let res = compile_string_sync(
141-
".foo {a: b}".to_string(),
142-
Options::default(),
143-
StringOptions::WithoutImporter(WithoutImporter::default()),
144-
)
145-
.unwrap();
146-
assert_eq!(res.css, ".foo {\n a: b;\n}");
147-
}
148-
}

src/compiler.rs

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use futures::{future, pin_mut, stream, StreamExt, TryStreamExt};
44
use prost::Message;
55
use tokio::{
66
io::BufReader,
7-
process::{ChildStdin, ChildStdout, Command},
7+
process::{Child, Command},
88
};
99
use tokio_util::io::ReaderStream;
1010

@@ -21,8 +21,7 @@ use crate::{
2121
};
2222

2323
pub struct Embedded {
24-
stdout: ChildStdout,
25-
stdin: ChildStdin,
24+
child: Child,
2625
}
2726

2827
impl Embedded {
@@ -34,32 +33,28 @@ impl Embedded {
3433
.spawn()
3534
.unwrap();
3635

37-
Self {
38-
stdout: child.stdout.unwrap(),
39-
stdin: child.stdin.unwrap(),
40-
}
36+
Self { child }
4137
}
4238

4339
pub async fn compile(
44-
self,
40+
mut self,
4541
request: CompileRequest,
4642
importers: &ImporterRegistry,
4743
logger: &LoggerRegistry,
4844
) -> Result<CompileResponse> {
49-
let stdin = self.stdin;
50-
let mut dispatcher = Dispatcher::new(stdin, &importers, &logger);
45+
let stdin = self.child.stdin.take().unwrap();
46+
let mut dispatcher = Dispatcher::new(stdin, importers, logger);
5147
dispatcher.send_compile_request(request).await?;
5248

53-
let stdout = self.stdout;
49+
let stdout = self.child.stdout.take().unwrap();
5450
let mut pt = PacketTransformer::default();
55-
// TODO: refactor these shits
5651
let reader = ReaderStream::new(BufReader::new(stdout))
57-
.map_err(|io_err| Error::from(io_err))
52+
.map_err(Error::from)
5853
.flat_map(|res| match res {
5954
Ok(buf) => stream::iter(
6055
pt.decode(buf.to_vec())
6156
.into_iter()
62-
.map(|b| Ok(b))
57+
.map(Ok)
6358
.collect::<Vec<Result<Vec<u8>>>>(),
6459
),
6560
Err(e) => stream::iter(vec![Err(e)]),

src/compiler_path.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use std::env;
22

33
pub fn compiler_path() -> Option<String> {
4-
// env::var("SASS_EMBEDDED_PATH").ok()
5-
Some(String::from("/Users/bytedance/Codes/sass-embedded-host-rust/dart-sass-embedded/dart-sass-embedded"))
4+
env::var("SASS_EMBEDDED_PATH").ok()
65
}

src/dispatcher.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ impl<'i, 'l> Dispatcher<'i, 'l> {
8181
};
8282
let inbound = InboundMessage::new(message);
8383
let buf = inbound.encode_length_delimited_to_vec();
84-
self.stdin.lock().unwrap().write(&buf).await?;
84+
self.stdin.lock().unwrap().write_all(&buf).await?;
8585
Ok(())
8686
}
8787

@@ -129,8 +129,7 @@ impl<'i, 'l> Dispatcher<'i, 'l> {
129129
}
130130
outbound_message::Message::FunctionCallRequest(request) => {
131131
self.pending_outbound_requests.add(request.id);
132-
// TODO
133-
Ok(None)
132+
unimplemented!("Not supported yet");
134133
}
135134
outbound_message::Message::Error(e) => Err(Error::Host(e.message)),
136135
outbound_message::Message::LogEvent(e) => {

src/error.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ pub type Result<T> = std::result::Result<T, Error>;
55
#[derive(Debug)]
66
pub enum Error {
77
Compile(String),
8-
Mandatory(String),
98
Host(String),
109
Value(String),
1110
SassException(Exception),
@@ -18,7 +17,6 @@ impl std::fmt::Display for Error {
1817
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1918
match self {
2019
Error::Compile(m) => write!(f, "Compiler caused error: {}", m),
21-
Error::Mandatory(m) => write!(f, "Missing mandatory field: {}", m),
2220
Error::Host(m) => write!(f, "Compiler reported error: {}", m),
2321
Error::Value(m) => write!(f, "{}", m),
2422
Error::SassException(e) => write!(f, "{}", e),

src/importer_registry.rs

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,7 @@ impl ImporterRegistry {
7373
}
7474
};
7575
self.id += 1;
76-
let mut proto = compile_request::Importer::default();
77-
proto.importer = Some(i);
78-
proto
76+
compile_request::Importer { importer: Some(i) }
7977
}
8078

8179
/// Handles a canonicalization request.
@@ -107,12 +105,10 @@ impl ImporterRegistry {
107105
};
108106
Ok(proto)
109107
}
110-
Err(e) => {
111-
let mut proto = CanonicalizeResponse::default();
112-
proto.result =
113-
Some(canonicalize_response::Result::Error(e.to_string()));
114-
Ok(proto)
115-
}
108+
Err(e) => Ok(CanonicalizeResponse {
109+
result: Some(canonicalize_response::Result::Error(e.to_string())),
110+
..Default::default()
111+
}),
116112
}
117113
}
118114

@@ -132,8 +128,10 @@ impl ImporterRegistry {
132128
Ok(result) => {
133129
let mut proto = ImportResponse::default();
134130
if let Some(result) = result {
135-
let mut success = import_response::ImportSuccess::default();
136-
success.contents = result.contents;
131+
let mut success = import_response::ImportSuccess {
132+
contents: result.contents,
133+
..Default::default()
134+
};
137135
success.set_syntax(result.syntax);
138136
if let Some(source_map_url) = result.source_map_url {
139137
success.source_map_url = source_map_url;
@@ -142,11 +140,10 @@ impl ImporterRegistry {
142140
};
143141
Ok(proto)
144142
}
145-
Err(e) => {
146-
let mut proto = ImportResponse::default();
147-
proto.result = Some(import_response::Result::Error(e.to_string()));
148-
Ok(proto)
149-
}
143+
Err(e) => Ok(ImportResponse {
144+
result: Some(import_response::Result::Error(e.to_string())),
145+
..Default::default()
146+
}),
150147
}
151148
}
152149

@@ -184,11 +181,10 @@ impl ImporterRegistry {
184181
};
185182
Ok(proto)
186183
}
187-
Err(e) => {
188-
let mut proto = FileImportResponse::default();
189-
proto.result = Some(file_import_response::Result::Error(e.to_string()));
190-
Ok(proto)
191-
}
184+
Err(e) => Ok(FileImportResponse {
185+
result: Some(file_import_response::Result::Error(e.to_string())),
186+
..Default::default()
187+
}),
192188
}
193189
}
194190
}

src/main.rs

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/packet_transformer.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
use prost::Message;
2-
31
#[derive(Debug, Default)]
42
pub struct PacketTransformer {
53
packet: Packet,

0 commit comments

Comments
 (0)