diff --git a/CHANGELOG.md b/CHANGELOG.md index 387ae30..c2ea5cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +## [0.4.4] - 2024-03-21 + +- Fixed `quill sns make-proposal` setting some fields to null. + ## [0.4.3] - 2024-01-29 - Updated dependencies. diff --git a/Cargo.lock b/Cargo.lock index 60b1d99..7b83b05 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -616,9 +616,9 @@ dependencies = [ [[package]] name = "candid" -version = "0.10.2" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39be580be172631a35cac2fc6c765f365709de459edb88121b3e7a80cce6c1ec" +checksum = "088c2e3d22a0fb1ada78b968946b0f7b96027ac8669973fe7c0815a98e8d13ef" dependencies = [ "anyhow", "binread", @@ -639,9 +639,9 @@ dependencies = [ [[package]] name = "candid_derive" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "970c220da8aa2fa6f7ef5dbbf3ea5b620a59eb3ac107cfb95ae8c6eebdfb7a08" +checksum = "3de398570c386726e7a59d9887b68763c481477f9a043fb998a2e09d428df1a9" dependencies = [ "lazy_static", "proc-macro2", @@ -651,9 +651,9 @@ dependencies = [ [[package]] name = "candid_parser" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36381de3ba8a312deb028552c0d63f7c7fe6e204f44bae4c58a3643308cfa9d5" +checksum = "48a3da76f989cd350b7342c64c6c6008341bb6186f6832ef04e56dc50ba0fd76" dependencies = [ "anyhow", "candid", @@ -4477,7 +4477,7 @@ checksum = "4339fc7a1021c9c1621d87f5e3505f2805c8c105420ba2f2a4df86814590c142" [[package]] name = "quill" -version = "0.4.3" +version = "0.4.4" dependencies = [ "anyhow", "atty", diff --git a/Cargo.toml b/Cargo.toml index 089ab5f..b910894 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "quill" -version = "0.4.3" +version = "0.4.4" authors = ["DFINITY Team"] edition = "2021" rust-version = "1.75.0" diff --git a/src/commands/sns/make_proposal.rs b/src/commands/sns/make_proposal.rs index 86b4322..37470f3 100644 --- a/src/commands/sns/make_proposal.rs +++ b/src/commands/sns/make_proposal.rs @@ -8,7 +8,7 @@ use crate::{ AnyhowResult, }; use anyhow::Error; -use candid::{Decode, Encode}; +use candid::{CandidType, Decode, Encode, TypeEnv}; use candid_parser::parse_idl_args; use clap::Parser; use ic_sns_governance::pb::v1::{manage_neuron, ManageNeuron, Proposal}; @@ -85,6 +85,6 @@ pub fn exec( fn parse_proposal_from_candid_string(proposal_candid: String) -> AnyhowResult { let args = parse_idl_args(&proposal_candid)?; - let args: Vec = args.to_bytes()?; + let args: Vec = args.to_bytes_with_types(&TypeEnv::default(), &[Proposal::ty()])?; Decode!(args.as_slice(), Proposal).map_err(Error::msg) } diff --git a/tests/output/default/sns/make_proposal/with_blob.txt b/tests/output/default/sns/make_proposal/with_blob.txt new file mode 100644 index 0000000..eb55a6e --- /dev/null +++ b/tests/output/default/sns/make_proposal/with_blob.txt @@ -0,0 +1,29 @@ +Sending message with + + Call type: update + Sender: fdsgv-62ihb-nbiqv-xgic5-iefsv-3cscz-tmbzv-63qd5-vh43v-dqfrt-pae + Canister id: rrkah-fqaaa-aaaaa-aaaaq-cai + Method name: manage_neuron + Arguments: ( + record { + subaccount = blob "\83\a7\d2\b1\2f\65\4f\f5\83\35\e5\a2\51\2c\ca\e0\d7\83\9c\74\4b\18\07\a4\7c\96\f5\b9\f3\96\90\69"; + command = opt variant { + MakeProposal = record { + url = "example.com"; + title = "Transfer ICP from SNS treasury."; + action = opt variant { + TransferSnsTreasuryFunds = record { + from_treasury = 1 : int32; + to_principal = opt principal "rrkah-fqaaa-aaaaa-aaaaq-cai"; + to_subaccount = opt record { + subaccount = blob "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01"; + }; + memo = null; + amount_e8s = 1_000_000_000 : nat64; + } + }; + summary = ""; + } + }; + }, +) diff --git a/tests/output/sns.rs b/tests/output/sns.rs index 233de83..8049ad7 100644 --- a/tests/output/sns.rs +++ b/tests/output/sns.rs @@ -110,6 +110,23 @@ fn make_proposal() { "sns make-proposal {NEURON_ID} --proposal '{proposal}'" )) .diff("sns/make_proposal/simple.txt"); + let proposal_with_blob = r#" + ( record { + title = "Transfer ICP from SNS treasury."; + url = "example.com"; + summary = ""; + action = opt variant { TransferSnsTreasuryFunds = record { + from_treasury = 1 : int32; + to_principal = opt principal "rrkah-fqaaa-aaaaa-aaaaq-cai"; + to_subaccount = opt record { subaccount = vec {0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1} }; + memo = null; + amount_e8s = 1_000_000_000: nat64 + } }; + } )"#; + quill_sns_send(&format!( + "sns make-proposal {NEURON_ID} --proposal '{proposal_with_blob}'" + )) + .diff("sns/make_proposal/with_blob.txt"); let proposal_bin = asset("sns_proposal.bin"); quill_sns_send(&format!( "sns make-proposal {NEURON_ID} --proposal-path '{proposal_bin}'",