Cadence Boilerplate Generation
Introduction
Flow CLI now includes a feature to automatically generate boilerplate code for contracts, transactions, and scripts. This feature enhances the development experience by simplifying the initial setup of various components in Flow.
_11> flow generate_11Usage:_11 flow generate [command]_11_11Aliases:_11 generate, g_11_11Available Commands:_11 contract Generate a new contract_11 script Generate a new script_11 transaction Generate a new transaction
Generate Contract
To create a new contract with basic structure, use the contract command. It creates a new Cadence file with a template contract definition.
_10flow generate contract [ContractName]
Usage Example
_10> flow generate contract HelloWorld
This command creates a file cadence/contracts/HelloWorld.cdc with the following content:
_10access(all) contract HelloWorld {_10 init() {}_10}
Generate Transaction
For initializing a transaction, use the transaction command. It sets up a new Cadence file with a template transaction structure.
_10flow generate transaction [TransactionName]
Usage Example
_10> flow generate transaction SayHello
This command creates a file cadence/transactions/SayHello.cdc with the following content:
_10transaction() {_10 prepare() {}_10_10 execute {}_10}
Generate Script
Similarly, to start a new script, the script command generates a Cadence file with a basic script structure.
_10flow generate script [ScriptName]
Usage Example
_10> flow generate script ReadHello
This command creates a file cadence/scripts/ReadHello.cdc with the following content:
_10access(all) fun main() {}
Optional --dir Flag
The --dir flag is an optional feature in the Flow CLI generate commands, allowing you to specify a custom directory for the generated contract, transaction, or script files. If this flag is not provided, the CLI adheres to the recommended project setup:
-
Contracts are generated in the
cadence/contractsdirectory. -
Transactions are generated in the
cadence/transactionsdirectory. -
Scripts are generated in the
cadence/scriptsdirectory. -
Usage:
--dir=<directory_name> -
Example:
flow generate contract HelloWorld --dir=custom_contracts
Use the --dir flag only if your project requires a different organizational structure than the default.