theme_importer: Add `--output` flag for outputting the theme to a file (#7486)

d1y and Marshall Bowers created

```bash
cargo run -p theme_importer -- dark-plus-syntax-color-theme.json --output output.json
```

Release Notes:

- N/A

---------

Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>

Change summary

crates/theme_importer/README.md   |  4 ++++
crates/theme_importer/src/main.rs | 12 +++++++++++-
2 files changed, 15 insertions(+), 1 deletion(-)

Detailed changes

crates/theme_importer/README.md 🔗

@@ -1 +1,5 @@
 # Zed Theme Importer
+
+```sh
+cargo run -p theme_importer -- dark-plus-syntax-color-theme.json --output output-theme.json
+```

crates/theme_importer/src/main.rs 🔗

@@ -4,6 +4,7 @@ mod util;
 mod vscode;
 
 use std::fs::File;
+use std::io::Write;
 use std::path::PathBuf;
 
 use anyhow::{Context, Result};
@@ -75,6 +76,10 @@ struct Args {
     #[arg(long)]
     warn_on_missing: bool,
 
+    /// The path to write the output to.
+    #[arg(long, short)]
+    output: Option<PathBuf>,
+
     #[command(subcommand)]
     command: Option<Command>,
 }
@@ -146,7 +151,12 @@ fn main() -> Result<()> {
 
     let theme_json = serde_json::to_string_pretty(&theme).unwrap();
 
-    println!("{}", theme_json);
+    if let Some(output) = args.output {
+        let mut file = File::create(output)?;
+        file.write_all(theme_json.as_bytes())?;
+    } else {
+        println!("{}", theme_json);
+    }
 
     log::info!("Done!");