Currently, import C "canister:name" requires the following entry in mops.toml
[[canister]]
name = "name"
canister_id = "..."
But this doesn't quite work when deploying to different networks/instances. We need some mechanism to extract named canister from deployment, so that canister_id becomes an optional field.
"canister:name" is probably not a good design, as it ties the build process with deployment: you have to deploy the dependency before you can build the current file.
Another option is to only import the actor type, and pass in the canister id as init args. This also makes module hash more stable, i.e., changing the canister id doesn't affect the module hash.
I assume you don't want to add an implicit argument to the low level canister argument, but just let users reference the type in the explicit argument?
Currently,
import C "canister:name"
requires the following entry inmops.toml
But this doesn't quite work when deploying to different networks/instances. We need some mechanism to extract named canister from deployment, so that
canister_id
becomes an optional field."canister:name" is probably not a good design, as it ties the build process with deployment: you have to deploy the dependency before you can build the current file.
Another option is to only import the actor type, and pass in the canister id as init args. This also makes module hash more stable, i.e., changing the canister id doesn't affect the module hash.