use std::path::PathBuf;
use clap::{Parser, Subcommand};
#[derive(Parser)]
#[clap(version, about, long_about = None)]
#[clap(propagate_version = true)]
pub enum Args {
#[clap(subcommand)]
Datum(DatumArgs),
#[clap(subcommand)]
State(StateArgs),
#[clap(subcommand)]
Redeemer(RedeemerArgs),
#[clap(subcommand)]
Contract(ContractArgs),
}
#[derive(Subcommand)]
pub enum PlutusArgs {
ConvertCborHexToJson {
cborhex: String,
},
ConvertCborHexFileToJson {
path: String,
}
}
#[derive(clap::ValueEnum, Clone)]
pub enum ContractOutputInfoType {
CborHex, MarloweDSL, JSON, ExpectedActions,
ExtendedMarloweParams
}
#[derive(clap::ValueEnum, Clone)]
pub enum ContractInputEncoding {
CborHex,
MarloweDSL,
JSON
}
#[derive(clap::ValueEnum, Clone)]
pub enum RedeemerOutputEncoding {
Json,
CborHex,
MarloweDSL
}
#[derive(clap::ValueEnum, Clone)]
pub enum RedeemerInputEncoding {
CborHex
}
#[derive(clap::ValueEnum, Clone)]
pub enum DatumInputEncoding {
CborHex
}
#[derive(clap::ValueEnum, Clone)]
pub enum DatumOutputEncoding {
CborHex,
JSON,
SimpleText
}
#[derive(Subcommand)]
pub enum DatumArgs {
FromFile {
file_path: PathBuf,
#[clap(value_enum)]
input_encoding: DatumInputEncoding,
#[clap(value_enum)]
output_encoding: DatumOutputEncoding,
},
FromString {
input: String,
#[clap(value_enum)]
input_encoding: DatumInputEncoding,
#[clap(value_enum)]
output_encoding: DatumOutputEncoding,
}
}
#[derive(Subcommand)]
pub enum RedeemerArgs {
FromFile {
file_path: PathBuf,
#[clap(value_enum)]
input_encoding: RedeemerInputEncoding,
#[clap(value_enum)]
output_encoding: RedeemerOutputEncoding,
},
FromString {
input: String,
#[clap(value_enum)]
input_encoding: RedeemerInputEncoding,
#[clap(value_enum)]
output_encoding: RedeemerOutputEncoding,
}
}
#[derive(Subcommand)]
pub enum ContractArgs {
FromFile {
file_path: PathBuf,
#[clap(value_enum)]
input_encoding: ContractInputEncoding,
#[clap(value_enum)]
output_type: ContractOutputInfoType,
#[clap(short = 'i')]
init: Option<String>,
},
FromString {
input: String,
#[clap(value_enum)]
input_encoding: ContractInputEncoding,
#[clap(value_enum)]
output_type: ContractOutputInfoType,
#[clap(short = 'i')]
init: Option<String>,
}
}
#[derive(Subcommand)]
pub enum StateArgs {
InitUsingRole {
creator_role: String,
initial_lovelace: i128
},
InitUsingAddr {
creator_addr: String,
initial_lovelace: i128
}
}
impl Default for Args {
fn default() -> Self {
Self::parse()
}
}