| // Copyright 2021 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. |
| |
| mod client_cpp; |
| mod client_fidl; |
| mod client_rust; |
| mod cvf; |
| mod validate_package; |
| |
| use anyhow::Error; |
| use argh::FromArgs; |
| use client_cpp::GenerateCppSource; |
| use client_fidl::GenerateFidlSource; |
| use client_rust::GenerateRustSource; |
| use cvf::GenerateValueFile; |
| use validate_package::ValidatePackage; |
| |
| #[derive(FromArgs, PartialEq, Debug)] |
| /// Tool for compiling structured configuration artifacts |
| struct Command { |
| #[argh(subcommand)] |
| sub: Subcommand, |
| } |
| |
| #[derive(FromArgs, PartialEq, Debug)] |
| #[argh(subcommand)] |
| enum Subcommand { |
| GenerateValueFile(GenerateValueFile), |
| GenerateFidlSource(GenerateFidlSource), |
| GenerateRustSource(GenerateRustSource), |
| GenerateCppSource(GenerateCppSource), |
| ValidatePackage(ValidatePackage), |
| } |
| |
| fn main() -> Result<(), Error> { |
| let command = argh::from_env::<Command>(); |
| |
| match command.sub { |
| Subcommand::GenerateValueFile(cmd) => cmd.generate(), |
| Subcommand::GenerateFidlSource(cmd) => cmd.generate(), |
| Subcommand::GenerateRustSource(cmd) => cmd.generate(), |
| Subcommand::GenerateCppSource(cmd) => cmd.generate(), |
| Subcommand::ValidatePackage(cmd) => cmd.validate(), |
| } |
| } |