Skip to content

Commit 0d2844e

Browse files
committed
Refactor cli args
1 parent c446dbf commit 0d2844e

File tree

2 files changed

+18
-40
lines changed

2 files changed

+18
-40
lines changed

src/main.rs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,17 @@ struct CliArgs {
1515
#[clap(short, long)]
1616
minify: bool,
1717
/// Enable parsing CSS nesting
18-
#[clap(short, long)]
18+
#[clap(long)]
1919
nesting: bool,
20-
/// Enable CSS modules in output
21-
#[clap(short, long, group = "css_modules")]
22-
css_modules: bool,
23-
/// Default: <output_file>.json
24-
#[clap(long, requires = "css_modules")]
25-
css_modules_output_file: Option<String>,
20+
/// Enable parsing custom media queries
21+
#[clap(long)]
22+
custom_media: bool,
23+
/// Enable CSS modules in output.
24+
/// If no filename is provided, <output_file>.json will be used.
25+
#[clap(long, group = "css_modules", requires = "output_file")]
26+
css_modules: Option<Option<String>>,
2627
/// Enable sourcemap, at <output_file>.map
27-
#[clap(short, long, requires = "output_file")]
28+
#[clap(long, requires = "output_file")]
2829
sourcemap: bool,
2930
}
3031

@@ -53,7 +54,8 @@ pub fn main() -> Result<(), std::io::Error> {
5354
&source,
5455
ParserOptions {
5556
nesting: cli_args.nesting,
56-
css_modules: cli_args.css_modules,
57+
css_modules: cli_args.css_modules.is_some(),
58+
custom_media: cli_args.custom_media,
5759
..ParserOptions::default()
5860
},
5961
)
@@ -105,21 +107,19 @@ pub fn main() -> Result<(), std::io::Error> {
105107

106108
fs::write(output_file, code.as_bytes())?;
107109

108-
if cli_args.css_modules {
109-
let css_modules_filename = cli_args
110-
.css_modules_output_file
111-
.unwrap_or(infer_css_modules_filename(&output_file)?);
110+
if let Some(css_modules) = cli_args.css_modules {
111+
let css_modules_filename = if let Some(name) = css_modules {
112+
name
113+
} else {
114+
infer_css_modules_filename(&output_file)?
115+
};
112116
if let Some(exports) = res.exports {
113117
let css_modules_json = serde_json::to_string(&exports)?;
114118
fs::write(css_modules_filename, css_modules_json)?;
115119
}
116120
}
117121
} else {
118122
println!("{}", res.code);
119-
if cli_args.css_modules {
120-
let css_modules_json = serde_json::to_string(&res.exports)?;
121-
println!("{}", css_modules_json);
122-
}
123123
}
124124

125125
Ok(())

tests/cli_integration_tests.rs

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -236,27 +236,6 @@ fn nesting_option() -> Result<(), Box<dyn std::error::Error>> {
236236
Ok(())
237237
}
238238

239-
#[test]
240-
fn css_modules_stdout() -> Result<(), Box<dyn std::error::Error>> {
241-
let (input, output, exports) = css_module_test_vals();
242-
let infile = assert_fs::NamedTempFile::new("test.css")?;
243-
infile.write_str(&input)?;
244-
let mut cmd = Command::cargo_bin("parcel_css")?;
245-
cmd.current_dir(infile.path().parent().unwrap());
246-
cmd.arg(infile.path());
247-
cmd.arg("--css-modules");
248-
cmd.assert().success().stdout(predicate::str::contains(output));
249-
250-
let assert = cmd.assert();
251-
let output = String::from_utf8(assert.get_output().stdout.clone())?;
252-
let module_json_line = output.lines().next_back().unwrap();
253-
let expected: serde_json::Value = serde_json::from_str(&exports)?;
254-
let actual: serde_json::Value = serde_json::from_str(&module_json_line)?;
255-
assert_eq!(expected, actual);
256-
257-
Ok(())
258-
}
259-
260239
#[test]
261240
fn css_modules_infer_output_file() -> Result<(), Box<dyn std::error::Error>> {
262241
let (input, _, exports) = css_module_test_vals();
@@ -289,8 +268,7 @@ fn css_modules_output_target_option() -> Result<(), Box<dyn std::error::Error>>
289268
cmd.current_dir(infile.path().parent().unwrap());
290269
cmd.arg(infile.path());
291270
cmd.arg("-o").arg(outfile.path());
292-
cmd.arg("--css-modules");
293-
cmd.arg("--css-modules-output-file").arg(modules_file.path());
271+
cmd.arg("--css-modules").arg(modules_file.path());
294272
cmd.assert().success();
295273

296274
let expected: serde_json::Value = serde_json::from_str(&exports)?;

0 commit comments

Comments
 (0)