⛏️ mason

pub mason

A template generator which helps teams generate files quickly and consistently.

Mason allows developers to create and consume resuable templates call bricks.

Quick Start

Activate Mason

$ pub global activate mason

Initialize Mason

$ mason init

mason init initializes the Mason CLI in the current directory.

Running mason init generates a mason.yaml and an example brick so that you can get started immediately.

bricks:
  hello:
    path: bricks/hello

Then you can use mason make to generate your first file:

mason make hello

Command Line Variables

Any variables can be passed as command line args.

$ mason make hello -- --name Felix

Variable Prompts

Any variables which aren't specified as command line args will be prompted.

$ mason make hello
name: Felix

JSON Input Variables

Any variables can be passed via json file:

$ mason make hello --json hello.json

where hello.json is:

{
  "name": "Felix"
}

The above commands will all generate HELLO.md in the current directory with the following content:

# Hello Felix!

Creating New Bricks

Create a new brick using the mason new command.

$ mason new <BRICK_NAME>

The above command will generate a new brick in the bricks directory with an example brick.yaml and __brick__ template directory.

Brick YAML

The brick.yaml contains metadata for a brick template.

name: greetings
description: A Simple Greetings Brick
vars:
  - name

Brick Template

Write your brick template in the __brick__ directory using mustache templates. See the mustache manual for detailed usage information.

__brick__/greetings.md

# Greetings {{name}}!

Note: __brick__ can contain multiple files and subdirectories

File Resolution

It is possible to resolve files based on path input variables using the <% %> tag.

For example, given the following brick.yaml:

name: app_icon
description: Create an app_icon file from a URL
vars:
  - url

And the following brick template:

__brick__/<% url %>

Running mason make app_icon -- --url path/to/icon.png will generate icon.png with the contents of path/to/icon.png where the path/to/icon.png can be either a local or remote path.

Usage

$ mason --help
⛏️  mason • lay the foundation!

Usage: mason <command> [arguments]

Global options:
-h, --help       Print this usage information.
    --version    Print the current version.

Available commands:
  init   Initialize mason in the current directory.
  make   Generate code using an existing brick template.
  new    Creates a new brick template.

Libraries

mason
A Dart template generator which helps teams generate files quickly and consistently. [...]