nifty_cli/commands/
lock.rs1use nifty_asset::instructions::Lock;
2
3use super::*;
4
5pub struct LockArgs {
6 pub keypair_path: Option<PathBuf>,
7 pub rpc_url: Option<String>,
8 pub asset: Pubkey,
9 pub signer_keypair_path: Option<PathBuf>,
10}
11
12pub fn handle_lock(args: LockArgs) -> Result<()> {
13 let config = CliConfig::new(args.keypair_path, args.rpc_url)?;
14
15 let payer_sk = Keypair::from_bytes(&config.keypair.to_bytes())?;
16
17 let signer_sk = if let Some(signer) = args.signer_keypair_path {
19 read_keypair_file(signer)
20 .map_err(|err| anyhow!("Failed to read signer keypair file: {}", err))?
21 } else {
22 Keypair::from_bytes(&config.keypair.to_bytes())?
23 };
24
25 let signer = signer_sk.pubkey();
26 let asset = args.asset;
27
28 let ix = Lock { asset, signer }.instruction();
29
30 let sig = send_and_confirm_tx(&config.client, &[&payer_sk, &signer_sk], &[ix])?;
31
32 println!("Locking asset {asset} in tx: {sig}");
33
34 Ok(())
35}