Skip to content

Commit f2732f7

Browse files
normal unwrapping
1 parent ddcfdfc commit f2732f7

File tree

3 files changed

+22
-12
lines changed

3 files changed

+22
-12
lines changed

src/main.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,21 @@ fn main() -> Result<()> {
8787

8888
if path.ends_with(".tsx") {
8989
let code = fs::read_to_string(entry)?;
90-
let imported_css = extract_default_css_imports(&code);
90+
let imported_css = extract_default_css_imports(&code).unwrap_or_else(|e| {
91+
eprintln!("Could not parse file: {}\n{}", entry, e);
92+
process::exit(1);
93+
});
9194

9295
for (mut style_path, class_names) in imported_css {
9396
process_relative_import(Path::new(entry), &mut style_path)?;
9497
replace_aliases(&mut style_path, tsconfig.compiler_options.paths.clone());
9598

96-
let used_fields = extract_used_classes(&code, &class_names, path.clone());
99+
let used_fields = extract_used_classes(&code, &class_names, path.clone())
100+
.unwrap_or_else(|e| {
101+
eprintln!("Could not parse file: {}\n{}", entry, e);
102+
process::exit(1);
103+
});
104+
97105
used_classnames
98106
.entry(style_path)
99107
.or_insert_with(HashSet::new)

src/tsx_parser.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use swc_ecma_ast::{ImportSpecifier, Module, ModuleDecl};
44
use swc_ecma_parser::{Parser, StringInput, Syntax, TsSyntax};
55
use swc_ecma_visit::{Visit, VisitWith};
66

7-
pub fn module_parser(tsx_code: &str) -> (Module, Lrc<SourceMap>) {
7+
pub fn module_parser(tsx_code: &str) -> anyhow::Result<(Module, Lrc<SourceMap>)> {
88
let cm: Lrc<SourceMap> = Default::default();
99
let fm = cm.new_source_file(FileName::Custom("input.tsx".into()).into(), tsx_code.into());
1010

@@ -18,7 +18,10 @@ pub fn module_parser(tsx_code: &str) -> (Module, Lrc<SourceMap>) {
1818

1919
let mut parser = Parser::new(syntax, StringInput::from(&*fm), None);
2020

21-
(parser.parse_module().expect("Failed to parse"), cm)
21+
let parse_res = parser
22+
.parse_module()
23+
.map_err(|e| anyhow::Error::msg(e.kind().msg()))?;
24+
Ok((parse_res, cm))
2225
}
2326

2427
#[derive(Eq, PartialEq, Hash, Debug)]
@@ -60,8 +63,8 @@ pub fn extract_used_classes(
6063
tsx_code: &str,
6164
variable_name: &str,
6265
file_name: String,
63-
) -> HashSet<UsedClassName> {
64-
let (module, source_map) = module_parser(tsx_code);
66+
) -> anyhow::Result<HashSet<UsedClassName>> {
67+
let (module, source_map) = module_parser(tsx_code)?;
6568

6669
let mut finder = PropertyFinder {
6770
variable_name: variable_name.to_string(),
@@ -72,7 +75,7 @@ pub fn extract_used_classes(
7275

7376
module.visit_with(&mut finder);
7477

75-
finder.properties
78+
Ok(finder.properties)
7679
}
7780

7881
struct DefaultCssImportFinder {
@@ -98,14 +101,14 @@ impl Visit for DefaultCssImportFinder {
98101
}
99102
}
100103

101-
pub fn extract_default_css_imports(tsx_code: &str) -> HashSet<(String, String)> {
102-
let (module, _) = module_parser(tsx_code);
104+
pub fn extract_default_css_imports(tsx_code: &str) -> anyhow::Result<HashSet<(String, String)>> {
105+
let (module, _) = module_parser(tsx_code)?;
103106

104107
let mut finder = DefaultCssImportFinder {
105108
imported_variables: HashSet::new(),
106109
};
107110

108111
module.visit_with(&mut finder);
109112

110-
finder.imported_variables
113+
Ok(finder.imported_variables)
111114
}

src/utils.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ pub fn replace_aliases(s: &mut String, aliases: HashMap<String, Vec<String>>) {
1010
if to.is_empty() {
1111
continue;
1212
}
13-
let replacement = to.get(0).unwrap();
14-
*s = s.replace(&from.replace('*', ""), &replacement.replace('*', ""));
13+
*s = s.replace(&from.replace('*', ""), &to[0].replace('*', ""));
1514
}
1615
}
1716

0 commit comments

Comments
 (0)