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.