Skip to main content

Cadence Boilerplate Generation

info

For Cadence 0.42 go to Legacy Docs

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
_11
Usage:
_11
flow generate [command]
_11
_11
Aliases:
_11
generate, g
_11
_11
Available 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.


_10
flow generate contract [ContractName]

Usage Example


_10
> flow generate contract HelloWorld

This command creates a file cadence/contracts/HelloWorld.cdc with the following content:


_10
access(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.


_10
flow generate transaction [TransactionName]

Usage Example


_10
> flow generate transaction SayHello

This command creates a file cadence/transactions/SayHello.cdc with the following content:


_10
transaction() {
_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.


_10
flow generate script [ScriptName]

Usage Example


_10
> flow generate script ReadHello

This command creates a file cadence/scripts/ReadHello.cdc with the following content:


_10
access(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/contracts directory.

  • Transactions are generated in the cadence/transactions directory.

  • Scripts are generated in the cadence/scripts directory.

  • 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.