Artisan Commands

Acorn MilliRules provides Artisan commands for managing rules from the CLI. All commands use the rules: prefix.

Listing Commands#Copied!

rules:list#Copied!

List all registered rules across loaded packages.

 1wp acorn rules:list
+--------------------+---------+-------+---------+-------+------------+---------+
| ID                 | Package | Order | Enabled | Match | Conditions | Actions |
+--------------------+---------+-------+---------+-------+------------+---------+
| security-headers   | Acorn   | 10    | Yes     | all   | 1          | 2       |
| docs-redirect      | Acorn   | 10    | Yes     | all   | 1          | 1       |
+--------------------+---------+-------+---------+-------+------------+---------+

Options

Option Description
--package=<name> Filter by package name (e.g., --package=Acorn)
--id=<pattern> Filter by rule ID substring (e.g., --id=docs)
 1# Only Acorn rules
 2wp acorn rules:list --package=Acorn
 3
 4# Rules containing "docs" in the ID
 5wp acorn rules:list --id=docs

rules:show#Copied!

Show detailed information about a specific rule.

 1wp acorn rules:show security-headers
Rule ID ................................... security-headers
Package ............................................. Acorn
Order .................................................. 10
Enabled ............................................... Yes
Match Type ............................................ all

Conditions (1)
  route_name LIKE docs.*

Actions (2)
  set_header {"name":"X-Content-Type-Options","value":"nosniff"}
  set_header {"name":"X-Frame-Options","value":"DENY"}

Arguments

Argument Description
id The rule ID to display (required)

rules:packages#Copied!

List all registered MilliRules packages with their availability and rule counts.

 1wp acorn rules:packages
+-------+-----------+--------+--------------+-------+
| Name  | Available | Loaded | Dependencies | Rules |
+-------+-----------+--------+--------------+-------+
| PHP   | Yes       | Yes    | -            | 0     |
| Acorn | Yes       | Yes    | PHP          | 2     |
+-------+-----------+--------+--------------+-------+

rules:actions#Copied!

List all registered action types across loaded packages.

 1wp acorn rules:actions
+------------+------------------+---------+------------------------------------------------------+
| Type       | Builder          | Package | Class                                                |
+------------+------------------+---------+------------------------------------------------------+
| redirect   | ->redirect()     | Acorn   | MilliRulesAcorn...ActionsRedirect      |
| set_header | ->setHeader()    | Acorn   | MilliRulesAcorn...ActionsSetHeader     |
+------------+------------------+---------+------------------------------------------------------+

Options

Option Description
--package=<name> Filter by package name
 1wp acorn rules:actions --package=Acorn

rules:conditions#Copied!

List all registered condition types across loaded packages.

 1wp acorn rules:conditions
+------------------+----------------------+---------+------------------------------------------------------+
| Type             | Builder              | Package | Class                                                |
+------------------+----------------------+---------+------------------------------------------------------+
| route_name       | ->routeName()        | Acorn   | MilliRulesAcorn...ConditionsRouteName  |
| route_parameter  | ->routeParameter()   | Acorn   | MilliRulesAcorn...ConditionsRoute...   |
| route_controller | ->routeController()  | Acorn   | MilliRulesAcorn...ConditionsRoute...   |
+------------------+----------------------+---------+------------------------------------------------------+

Options

Option Description
--package=<name> Filter by package name
 1wp acorn rules:conditions --package=Acorn

Scaffolding Commands#Copied!

rules:make:rule#Copied!

Scaffold a new rule class in app/Rules/.

 1wp acorn rules:make:rule SecurityHeaders
Rule created successfully.
 ⇂ Rule ID: security-headers
 ⇂ Package: Acorn
 ⇂ Auto-discovered on next request

The class name is converted to a kebab-case rule ID: SecurityHeaderssecurity-headers.

Arguments and Options

Argument / Option Description
name The rule class name (e.g., SecurityHeaders)
--package=Acorn Target package name (default: Acorn)
--force Overwrite the file if it already exists
Tip: rules:make is an alias for rules:make:rule.

rules:make:action#Copied!

Scaffold a new action class in app/Rules/Actions/.

 1wp acorn rules:make:action CorsHeaders
Action created successfully.
 ⇂ Action type: cors_headers
 ⇂ Builder: ->corsHeaders(...)
 ⇂ Auto-discovered via AppRulesActions namespace

The class name determines the action type (CorsHeaderscors_headers) and builder method (->corsHeaders()).

Arguments and Options

Argument / Option Description
name The action class name (e.g., CorsHeaders)
--force Overwrite the file if it already exists

rules:make:condition#Copied!

Scaffold a new condition class in app/Rules/Conditions/.

 1wp acorn rules:make:condition IsAdmin
Condition created successfully.
 ⇂ Condition type: is_admin
 ⇂ Builder: ->isAdmin(...)
 ⇂ Auto-discovered via AppRulesConditions namespace

The class name determines the condition type (IsAdminis_admin) and builder method (->isAdmin()).

Arguments and Options

Argument / Option Description
name The condition class name (e.g., IsAdmin)
--force Overwrite the file if it already exists

Customizing Stubs#Copied!

All scaffolding commands use stub templates that you can customize after publishing:

 1wp acorn vendor:publish --tag=millirules

This copies the stubs to stubs/millirules/ in your project root:

Stub Used by
stubs/millirules/rule.stub rules:make:rule
stubs/millirules/action.stub rules:make:action
stubs/millirules/condition.stub rules:make:condition

Published stubs take priority over the package defaults. Edit them to match your project's coding style or add boilerplate code.

Next Steps#Copied!