https://github.com/boxuk/dictator
Dictator controls the State of WordPress
https://github.com/boxuk/dictator
Last synced: 10 months ago
JSON representation
Dictator controls the State of WordPress
- Host: GitHub
- URL: https://github.com/boxuk/dictator
- Owner: boxuk
- License: mit
- Created: 2021-03-22T14:51:31.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-12-01T09:59:37.000Z (over 3 years ago)
- Last Synced: 2025-04-02T00:34:58.481Z (over 1 year ago)
- Language: PHP
- Homepage:
- Size: 184 KB
- Stars: 32
- Watchers: 9
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Dictator
[](https://github.com/boxuk/dictator/actions/workflows/linting.yml)
[](https://github.com/boxuk/dictator/actions/workflows/testing.yml)
## Attribution
- This package was forked from
[Dictator](https://danielbachhuber.com/2014/03/31/introducing-dictator/)
with permission due to it seemingly falling into abandonment.
## Overview
Dictator controls the State of WordPress. Strongly influenced by [Salt](http://www.saltstack.com/), Dictator permits configuration attributes stored in YAML state files to be *imposed* upon WordPress.
Dictator's primary concern is to permit the expression of how WordPress is configured as YAML state files. It understands WordPress in terms of *states*. States are collections of *regions*. Each state file has the state declaration, and any tracked configuration details for each region.
For example, the `site` state includes the `settings`, `users`, and `terms` regions. Running `wp dictator export site site-state.yml` against production data will export the production state into a human-readable state file:
state: site
settings:
title: Dictator
description: Just another WordPress site controlled by Dictator
date_format: F j, Y
time_format: g:i a
active_theme: twentyfourteen
Apply the state file locally with `wp dictator impose site-state.yml` and you've replicated production without having to download the database.
## Installation
### WP-CLI package
`wp package install boxuk/dictator`
### Composer package
`composer req boxuk/dictator`
## Usage
Dictator comprises these WP-CLI commands:
* `wp dictator compare ` - Compare a given state file to the State of WordPress. Produces a colorized diff if differences, otherwise empty output.
* `wp dictator export [--regions=] [--force]` - Export the State of WordPress to a state file.
* `wp dictator impose [--regions=]` - Impose a given state file onto WordPress.
* `wp dictator validate ` - Validate the provided state file against each region's schema.
First time user? Try Dictator out by calling `wp dictator export site site-state.yml`, making a change to the state file, and seeing a colorized diff of how it compares with `wp dictator compare site-state.yml`.
## Extending
Even though Dictator is in its infancy, it was written with extensibility in mind. New states can be registered with `Dictator::addState();`, and can comprise a selection of existing or custom regions. Write a state / region for your plugin / theme to make it easy for your users to export / impose settings.
### Existing extensions
* [Dictator WooCommerce](https://github.com/boxuk/dictator-woocommerce)