Skip to content

Latest commit

 

History

History
22 lines (17 loc) · 1.85 KB

modules.rst

File metadata and controls

22 lines (17 loc) · 1.85 KB

Modules

Chanterelle uses a notion of modules to determine which units of Solidity code to compile and create PureScript bindings for. Those coming from a Haskell background may notice the parallel to Cabal's exposed-modules. Simply adding a contract file within the source-dir does not mean it will be compiled, nor will there be a generated PureScript file. Instead, one must explicitly specify it in the project's chanterelle-json.

Chanterelle uses module namespacing for Solidity files similar to what's found in PureScript or Haskell, though here we enforce that the module name must mirror the filepath. A module named Some.Modular.Contract is expected to be in contracts/Some/Modular/Contract.sol, and its PureScript binding will have the same module name as well.

Solidity build artifacts are put into the build/ directory by default (see artifacts-dir in chanterelle-json). The full artifact filepath corresponds to the its relative location in the source-dir. For example, in the parking-dao the ParkingAuthority Solidity module is located at contracts/ParkingAuthority.sol. Thus the build artifact will be written to build/ParkingAuthority.json.

If a module-prefix is specified in the purescript-generator section, that module prefix will be prepended to the generated PureScript modules' names. In the parking-dao example, the module FoamCSR is expected to be located in contracts/FoamCSR.sol and will generate a PureScript module Contracts.FoamCSR with filepath src/Contracts/FoamCSR.purs. Likewise, Nested.SimpleStorage is expected to be located in contracts/Nested/SimpleStorage.sol and the generated PureScript module name will be Contracts.Nested.SimpleStorage with filepath src/Contracts/Nested/SimpleStorage.purs.