pact_broker_cli/cli/
pactflow_client.rs

1use clap::{ArgMatches, Command};
2use tracing::error;
3
4use crate::cli::{
5    pact_broker::main::utils::handle_error,
6    pactflow::main::{provider_contracts, subcommands::add_publish_provider_contract_subcommand},
7};
8pub fn add_pactflow_client_command() -> Command {
9    Command::new("pactflow")
10        .about("PactFlow specific commands")
11        .arg_required_else_help(true)
12        .subcommand(add_publish_provider_contract_subcommand())
13}
14
15pub fn run(args: &ArgMatches, raw_args: Vec<String>) -> Result<serde_json::Value, i32> {
16    match args.subcommand() {
17        Some(("publish-provider-contract", args)) => {
18            let res = provider_contracts::publish::publish(args);
19            if let Err(err) = res {
20                handle_error(err);
21                Err(1)
22            } else {
23                Ok(serde_json::to_value(res.unwrap()).unwrap())
24            }
25        }
26        _ => {
27            error!("⚠️ No option provided, try running --help");
28            Err(1)
29        }
30    }
31}