MCPcopy Create free account
hub / github.com/clockwork-xyz/clockwork / parse_bpf_command

Function parse_bpf_command

cli/src/parser.rs:40–93  ·  view source on GitHub ↗

Command parsers

(matches: &ArgMatches)

Source from the content-addressed store, hash-verified

38
39// Command parsers
40fn parse_bpf_command(matches: &ArgMatches) -> Result<CliCommand, CliError> {
41 let mut program_infos = Vec::<ProgramInfo>::new();
42 let mut clone_addresses = Vec::<Pubkey>::new();
43
44 if let Some(values) = matches.values_of("bpf_program") {
45 let values: Vec<&str> = values.collect::<Vec<_>>();
46 for address_program in values.chunks(2) {
47 match address_program {
48 [address, program] => {
49 let address = address
50 .parse::<Pubkey>()
51 .or_else(|_| read_keypair_file(address).map(|keypair| keypair.pubkey()));
52
53 if address.is_err() {
54 return Err(CliError::InvalidAddress);
55 }
56
57 let program_path = PathBuf::from(program);
58
59 if !program_path.exists() {
60 return Err(CliError::InvalidProgramFile);
61 }
62
63 program_infos.push(ProgramInfo {
64 program_id: address.unwrap(),
65 program_path,
66 });
67 }
68 _ => unreachable!(),
69 }
70 }
71 }
72
73 if let Some(values) = matches.values_of("clone") {
74 let values: Vec<&str> = values.collect::<Vec<_>>();
75 for value in values {
76 let address = value
77 .parse::<Pubkey>()
78 .map_err(|_| CliError::InvalidAddress)
79 .unwrap();
80 clone_addresses.push(address);
81 }
82 }
83
84 Ok(CliCommand::Localnet {
85 clone_addresses,
86 network_url: parse_string("url", matches).ok(),
87 program_infos,
88 force_init: matches.is_present("force_init"),
89 solana_archive: parse_string("solana_archive", matches).ok(),
90 clockwork_archive: parse_string("clockwork_archive", matches).ok(),
91 dev: matches.is_present("dev"),
92 })
93}
94
95fn parse_config_command(matches: &ArgMatches) -> Result<CliCommand, CliError> {
96 match matches.subcommand() {

Callers 1

try_fromMethod · 0.85

Calls 2

parse_stringFunction · 0.85
pubkeyMethod · 0.45

Tested by

no test coverage detected