Terminology
-
Plugin: A plugin is a collection of resources. A default plugin is automatically loaded and handles the most popular macOS packages like homebrew and python.
-
Resource: A resource represents a piece of software like a CLI tool, or GUI application that can be managed. A resource can be uniquely identified within a package using it’s
type
. -
Config: A config is a JSON declaration of a resource. A config is declared inside the top-level json array in a
codify.json
file. Every config must contain the propertytype
which specifies the resource type. A special"type": "project"
can be used to add a project config. -
Plan: A plan is a total change set of the operations needed to configure the environment to meet the desired configs. The plan is always displayed to the user for confirmation before Codify will apply it.
-
Stateless Mode: Codify by default is in stateless mode. This means that Codify does not keep a state file tracking which resources were added. In stateless mode, the CLI can only add or modify resources but not destroy.
-
Resource Operations: A resource operation represents the changes that a resource can make. Resource operations include:
create
,destroy
,modify
,recreate
, andno-op
. -
Parameter Operations: Depending on the resource, individual parameters can be changed. Parameter operations include:
add
,remove
,modify
.