Overview - waffle-ops/waffle GitHub Wiki

Welcome to the overview page! This page describes some of the core features of Waffle.

Configuration

Waffle provides various ways to configure its behavior. Below is a high level list of the types of configuration and how they are used.

Global Scope

Global scope is limited and supports few configuration keys. Valid configuration items in global scope will be treated as defaults on your system.

Project Scope

Project scope is the bread and butter of Waffle. The .waffle.yml file is inteded to be checked into version control to share common configuration.

Anything defined in project scope take precedence over anything in the global scope.

Local Scope

Local scope is identical to project scope, but acts as a way to override the project scope when needed. The .waffle.local.yml is not intended to be tracked in version control and exists to allow developers to override systems for their own custom setups as needed.

Anything defined in local scope take precedence over anything in the project or global scopes.

Commands, Tasks, and Recipes

Waffle is mainly a task runner, of sorts. The goal is to allow projects to provide some sort of configuration that allows Waffle to take over the heavy lifting of everyday tasks such as setting up a local environment, or applying security updates.

Under the hood, Waffle uses Symfony Console. However, Waffle breaks things down into three categories: Commands, Tasks, and Recipes.

Commands

Commands provide core capabilities (such as the help or list commands) or can take effect globally on the system (such as the self-update or iterate commands).

Commands cannot be overidden

Tasks

Tasks are single units of work. The goal is to make tasks simple and reusable so that they can be chained together (see Recipes below).

Tasks can be overridden by custom tasks defined in configuration.

Recipes

Recipes are collections of Tasks. Recipes can use default or overridden tasks. Recipes can provide input arguments to tasks as well.

Recipes can be overridden by Tasks or custom recipes defined in configuration.