blob: 42d260bf54482496d676938b95fda6084baf6b80 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#![deny(warnings)]
use cm_json::Error;
use std::fs;
use std::path::PathBuf;
use std::process;
use structopt::StructOpt;
mod cml;
mod compile;
mod format;
mod merge;
mod opts;
mod validate;
fn main() {
if let Err(msg) = run_cmc() {
eprintln!("{}", msg);
process::exit(1);
}
}
fn run_cmc() -> Result<(), Error> {
let opt = opts::Opt::from_args();
match opt.cmd {
opts::Commands::Validate { files } => validate::validate(files)?,
opts::Commands::Merge { files, output } => merge::merge(files, output)?,
opts::Commands::Format {
file,
pretty,
output,
} => format::format(&file, pretty, output)?,
opts::Commands::Compile {
file,
pretty,
output,
} => compile::compile(&file, pretty, output)?,
}
if let Some(stamp_path) = opt.stamp {
stamp(stamp_path)?;
}
Ok(())
}
fn stamp(stamp_path: PathBuf) -> Result<(), Error> {
fs::File::create(stamp_path)?;
Ok(())
}