I’ve a script like the follwing
upgradeInven : Party → [InvenKey] → [Int] → Script ()
And, I hope to run this script
daml script --dar $(dar_path) --script-name Scripts.InitializeScript:upgradeInven --ledger-host $(ledger_host) --ledger-port $(ledger_port) --input-file exclude-keys.json
How can I build exclude-keys.json
to run the script?
Hi @star123good,
Please note this section from our documentation:
If the --input-file
flag is specified, the --script-name
flag must point to a function of one argument returning a Script
, and the function will be called with the result of parsing the input file as its argument. For example, we can initialize our ledger using the initialize
function defined above.
So to be able to use the --input-file
option, first you need to define a data type that encapsulates all your arguments. The easiest way to generate the json is to do it from another daml script which populates and returns an instance of that same data type, using the --output-file
option.
Hi, @Mate_Varga
data UpgradeData = UpgradeData with
operator : Party
invenkeys : [InvenKey]
nums: [Int]
upgradeInven : UpgradeData→ Script ()
And, in exclude-keys.json
{
“operator”: “Operator”,
“invenkeys”: ,
“nums”:
}
Is this correct?
Hi @star123good,
I recommend you run a script just to produce an example, but basically yes.
I have mocked up your type and ran it to produce an output:
data InvenKey = InvenKey with
keyAttr : Text
data UpgradeData = UpgradeData with
operator : Party
invenkeys : [InvenKey]
nums: [Int]
outputData : Script UpgradeData
outputData = do
let ik0 = (InvenKey "key0attr")
let ik1 = (InvenKey "key1attr")
party <- allocateParty "Party"
pure ( UpgradeData party [ik0,ik1] [0,1,2] )
The output produced when I ran this script with the --output-file
option:
{
"operator": "party-575096f2-7863-4a38-88d4-441642e61d23::1220c7f8a6da7b70b9daefea37d4d52b7114e5cedeb6df10e76467820af8410f9a9b",
"invenkeys": [{
"keyAttr": "key0attr"
}, {
"keyAttr": "key1attr"
}],
"nums": [0, 1, 2]
}