librojo/cli/
fmt_project.rs1use std::path::PathBuf;
2
3use anyhow::Context;
4use clap::Parser;
5use memofs::Vfs;
6
7use crate::project::Project;
8
9use super::resolve_path;
10
11#[derive(Debug, Parser)]
13pub struct FmtProjectCommand {
14 #[clap(default_value = "")]
16 pub project: PathBuf,
17}
18
19impl FmtProjectCommand {
20 pub fn run(self) -> anyhow::Result<()> {
21 let vfs = Vfs::new_default();
22 vfs.set_watch_enabled(false);
23
24 let base_path = resolve_path(&self.project);
25 let project = Project::load_fuzzy(&vfs, &base_path)?
26 .context("A project file is required to run 'rojo fmt-project'")?;
27
28 let serialized = serde_json::to_string_pretty(&project)
29 .context("could not re-encode project file as JSON")?;
30
31 fs_err::write(&project.file_location, serialized)
32 .context("could not write back to project file")?;
33
34 Ok(())
35 }
36}