progenitor/progenitor-impl/tests/output/keeper-cli.out

377 lines
11 KiB
Plaintext

pub struct Cli<T: CliOverride = ()> {
client: sdk::Client,
over: T,
}
impl Cli {
pub fn new(client: sdk::Client) -> Self {
Self { client, over: () }
}
pub fn get_command(cmd: CliCommand) -> clap::Command {
match cmd {
CliCommand::Enrol => Self::cli_enrol(),
CliCommand::GlobalJobs => Self::cli_global_jobs(),
CliCommand::Ping => Self::cli_ping(),
CliCommand::ReportFinish => Self::cli_report_finish(),
CliCommand::ReportOutput => Self::cli_report_output(),
CliCommand::ReportStart => Self::cli_report_start(),
}
}
pub fn cli_enrol() -> clap::Command {
clap::Command::new("")
.arg(
clap::Arg::new("authorization")
.long("authorization")
.required(true)
.value_parser(clap::value_parser!(String))
.help("Authorization header (bearer token)"),
)
.arg(
clap::Arg::new("host")
.long("host")
.required(true)
.value_parser(clap::value_parser!(String)),
)
.arg(
clap::Arg::new("key")
.long("key")
.required(true)
.value_parser(clap::value_parser!(String)),
)
}
pub fn cli_global_jobs() -> clap::Command {
clap::Command::new("").arg(
clap::Arg::new("authorization")
.long("authorization")
.required(true)
.value_parser(clap::value_parser!(String))
.help("Authorization header (bearer token)"),
)
}
pub fn cli_ping() -> clap::Command {
clap::Command::new("").arg(
clap::Arg::new("authorization")
.long("authorization")
.required(true)
.value_parser(clap::value_parser!(String))
.help("Authorization header (bearer token)"),
)
}
pub fn cli_report_finish() -> clap::Command {
clap::Command::new("")
.arg(
clap::Arg::new("authorization")
.long("authorization")
.required(true)
.value_parser(clap::value_parser!(String))
.help("Authorization header (bearer token)"),
)
.arg(
clap::Arg::new("duration-millis")
.long("duration-millis")
.required(true)
.value_parser(clap::value_parser!(i32)),
)
.arg(
clap::Arg::new("end-time")
.long("end-time")
.required(true)
.value_parser(clap::value_parser!(chrono::DateTime<chrono::offset::Utc>)),
)
.arg(
clap::Arg::new("exit-status")
.long("exit-status")
.required(true)
.value_parser(clap::value_parser!(i32)),
)
}
pub fn cli_report_output() -> clap::Command {
clap::Command::new("").arg(
clap::Arg::new("authorization")
.long("authorization")
.required(true)
.value_parser(clap::value_parser!(String))
.help("Authorization header (bearer token)"),
)
}
pub fn cli_report_start() -> clap::Command {
clap::Command::new("")
.arg(
clap::Arg::new("authorization")
.long("authorization")
.required(true)
.value_parser(clap::value_parser!(String))
.help("Authorization header (bearer token)"),
)
.arg(
clap::Arg::new("script")
.long("script")
.required(true)
.value_parser(clap::value_parser!(String)),
)
.arg(
clap::Arg::new("start-time")
.long("start-time")
.required(true)
.value_parser(clap::value_parser!(chrono::DateTime<chrono::offset::Utc>)),
)
}
}
impl<T: CliOverride> Cli<T> {
pub fn new_with_override(client: sdk::Client, over: T) -> Self {
Self { client, over }
}
pub async fn execute(&self, cmd: CliCommand, matches: &clap::ArgMatches) {
match cmd {
CliCommand::Enrol => {
self.execute_enrol(matches).await;
}
CliCommand::GlobalJobs => {
self.execute_global_jobs(matches).await;
}
CliCommand::Ping => {
self.execute_ping(matches).await;
}
CliCommand::ReportFinish => {
self.execute_report_finish(matches).await;
}
CliCommand::ReportOutput => {
self.execute_report_output(matches).await;
}
CliCommand::ReportStart => {
self.execute_report_start(matches).await;
}
}
}
pub async fn execute_enrol(&self, matches: &clap::ArgMatches) {
let mut request = self.client.enrol();
if let Some(value) = matches.get_one::<String>("authorization") {
request = request.authorization(value.clone());
}
if let Some(value) = matches.get_one::<String>("host") {
request = request.body_map(|body| body.host(value.clone()))
}
if let Some(value) = matches.get_one::<String>("key") {
request = request.body_map(|body| body.key(value.clone()))
}
self.over.execute_enrol(matches, &mut request).unwrap();
let result = request.send().await;
match result {
Ok(r) => {
println!("success\n{:#?}", r)
}
Err(r) => {
println!("success\n{:#?}", r)
}
}
}
pub async fn execute_global_jobs(&self, matches: &clap::ArgMatches) {
let mut request = self.client.global_jobs();
if let Some(value) = matches.get_one::<String>("authorization") {
request = request.authorization(value.clone());
}
self.over
.execute_global_jobs(matches, &mut request)
.unwrap();
let result = request.send().await;
match result {
Ok(r) => {
println!("success\n{:#?}", r)
}
Err(r) => {
println!("success\n{:#?}", r)
}
}
}
pub async fn execute_ping(&self, matches: &clap::ArgMatches) {
let mut request = self.client.ping();
if let Some(value) = matches.get_one::<String>("authorization") {
request = request.authorization(value.clone());
}
self.over.execute_ping(matches, &mut request).unwrap();
let result = request.send().await;
match result {
Ok(r) => {
println!("success\n{:#?}", r)
}
Err(r) => {
println!("success\n{:#?}", r)
}
}
}
pub async fn execute_report_finish(&self, matches: &clap::ArgMatches) {
let mut request = self.client.report_finish();
if let Some(value) = matches.get_one::<String>("authorization") {
request = request.authorization(value.clone());
}
if let Some(value) = matches.get_one::<i32>("duration-millis") {
request = request.body_map(|body| body.duration_millis(value.clone()))
}
if let Some(value) = matches.get_one::<chrono::DateTime<chrono::offset::Utc>>("end-time") {
request = request.body_map(|body| body.end_time(value.clone()))
}
if let Some(value) = matches.get_one::<i32>("exit-status") {
request = request.body_map(|body| body.exit_status(value.clone()))
}
self.over
.execute_report_finish(matches, &mut request)
.unwrap();
let result = request.send().await;
match result {
Ok(r) => {
println!("success\n{:#?}", r)
}
Err(r) => {
println!("success\n{:#?}", r)
}
}
}
pub async fn execute_report_output(&self, matches: &clap::ArgMatches) {
let mut request = self.client.report_output();
if let Some(value) = matches.get_one::<String>("authorization") {
request = request.authorization(value.clone());
}
self.over
.execute_report_output(matches, &mut request)
.unwrap();
let result = request.send().await;
match result {
Ok(r) => {
println!("success\n{:#?}", r)
}
Err(r) => {
println!("success\n{:#?}", r)
}
}
}
pub async fn execute_report_start(&self, matches: &clap::ArgMatches) {
let mut request = self.client.report_start();
if let Some(value) = matches.get_one::<String>("authorization") {
request = request.authorization(value.clone());
}
if let Some(value) = matches.get_one::<String>("script") {
request = request.body_map(|body| body.script(value.clone()))
}
if let Some(value) = matches.get_one::<chrono::DateTime<chrono::offset::Utc>>("start-time")
{
request = request.body_map(|body| body.start_time(value.clone()))
}
self.over
.execute_report_start(matches, &mut request)
.unwrap();
let result = request.send().await;
match result {
Ok(r) => {
println!("success\n{:#?}", r)
}
Err(r) => {
println!("success\n{:#?}", r)
}
}
}
}
pub trait CliOverride {
fn execute_enrol(
&self,
matches: &clap::ArgMatches,
request: &mut builder::Enrol,
) -> Result<(), String> {
Ok(())
}
fn execute_global_jobs(
&self,
matches: &clap::ArgMatches,
request: &mut builder::GlobalJobs,
) -> Result<(), String> {
Ok(())
}
fn execute_ping(
&self,
matches: &clap::ArgMatches,
request: &mut builder::Ping,
) -> Result<(), String> {
Ok(())
}
fn execute_report_finish(
&self,
matches: &clap::ArgMatches,
request: &mut builder::ReportFinish,
) -> Result<(), String> {
Ok(())
}
fn execute_report_output(
&self,
matches: &clap::ArgMatches,
request: &mut builder::ReportOutput,
) -> Result<(), String> {
Ok(())
}
fn execute_report_start(
&self,
matches: &clap::ArgMatches,
request: &mut builder::ReportStart,
) -> Result<(), String> {
Ok(())
}
}
impl CliOverride for () {}
#[derive(Copy, Clone, Debug)]
pub enum CliCommand {
Enrol,
GlobalJobs,
Ping,
ReportFinish,
ReportOutput,
ReportStart,
}
impl CliCommand {
pub fn iter() -> impl Iterator<Item = CliCommand> {
vec![
CliCommand::Enrol,
CliCommand::GlobalJobs,
CliCommand::Ping,
CliCommand::ReportFinish,
CliCommand::ReportOutput,
CliCommand::ReportStart,
]
.into_iter()
}
}