Module CLI Commands

AutoCom provides a comprehensive set of Artisan commands for managing modules from the command line. These commands help you create new modules, manage their state, and debug issues.

Available Commands

Command Description
module:make Generate a new module with proper structure
module:list List all modules and their status
module:enable Enable a disabled module
module:disable Disable an enabled module
module:packages Check and install package dependencies

Creating Modules

module:make

Generate a new module with the complete directory structure, service provider, routes, and frontend scaffolding.

php artisan module:make ModuleName [options]

Options

Option Description Default
--type= Module type (core, store, shipping, channel, payment, ai, reseller, standard) standard
--core Mark as core module (cannot be disabled) false
--priority= Loading priority (lower = earlier) 50
--description= Module description Auto-generated
--depends= Module dependencies (repeatable) ['Core']

Examples

Basic module:

php artisan module:make Inventory

Store integration module:

php artisan module:make StoreWooCommerce --type=store --depends=Core --depends=Orders

Core module with high priority:

php artisan module:make Analytics --type=core --core --priority=5

Module with custom description:

php artisan module:make Reports --description="Advanced reporting and analytics"

Generated Structure

When you run module:make, it creates:

modules/ModuleName/
├── module.json                    # Module configuration
├── backend/
│   ├── ModuleNameServiceProvider.php
│   ├── App/
│   │   ├── Controllers/
│   │   ├── Models/
│   │   └── Services/
│   ├── routes/
│   │   └── api.php
│   └── database/
│       └── migrations/
└── frontend/
    ├── pages/
    │   └── index.tsx
    ├── components/
    ├── hooks/
    ├── types/
    │   └── index.ts
    └── index.ts

Listing Modules

module:list

Display all discovered modules with their status, type, priority, and dependencies.

php artisan module:list [options]

Options

Option Description
--type= Filter by module type
--graph Show dependency graph
--json Output as JSON

Examples

List all modules:

php artisan module:list

Output:

Discovered Modules

+----------------+--------------+----------+----------+---------+-----------------+
| Name           | Alias        | Type     | Priority | Status  | Dependencies    |
+----------------+--------------+----------+----------+---------+-----------------+
| Core           | core         | core     | 0        | CORE    | -               |
| CoreDashboard  | dashboard    | core     | 5        | CORE    | Core            |
| Orders         | orders       | core     | 10       | LOADED  | Core            |
| Products       | products     | core     | 15       | LOADED  | Core            |
| Customers      | customers    | core     | 20       | LOADED  | Core            |
| StoreShopify   | store-shopify| store    | 50       | DISABLED| Core, Orders    |
| Workflows      | workflows    | automation| 30       | LOADED  | Core            |
+----------------+--------------+----------+----------+---------+-----------------+

Total: 7 modules, 5 loaded

Filter by type:

php artisan module:list --type=store

Show dependency graph:

php artisan module:list --graph

Output:

Dependency Graph:

  Core
    └── (no dependencies)
  Orders
    └── Core
  StoreShopify
    └── Core, Orders

Reverse Dependencies (dependents):

  Core
    └── used by: Orders, Products, Customers, StoreShopify, Workflows
  Orders
    └── used by: StoreShopify

Export as JSON (useful for CI/CD):

php artisan module:list --json > modules.json

Enabling Modules

module:enable

Enable a module, check package dependencies, and optionally install them.

php artisan module:enable ModuleName [options]

Options

Option Description
--with-deps Automatically enable all module dependencies
--install-packages Automatically install missing Composer/npm packages
--skip-packages Skip package dependency check entirely

Examples

Enable a single module:

php artisan module:enable StoreShopify

If dependencies are missing, you'll be prompted:

Module 'StoreShopify' has disabled dependencies: Orders
Enable dependencies as well? (yes/no) [yes]:

Enable with all dependencies automatically:

php artisan module:enable StoreShopify --with-deps

Output:

Enabling dependency: Orders
Module 'StoreShopify' has been enabled
Run 'php artisan module:list' to see all modules

Disabling Modules

module:disable

Disable a module. Core modules cannot be disabled.

php artisan module:disable ModuleName [options]

Options

Option Description
--force Force disable even if other modules depend on it

Examples

Disable a module:

php artisan module:disable StoreShopify

Force disable with dependents warning:

php artisan module:disable Orders --force

Output:

The following enabled modules depend on 'Orders':
  - StoreShopify
Disable anyway? (dependent modules may break) (yes/no) [no]:

Attempting to disable a core module:

php artisan module:disable Core

Output:

Module 'Core' is a core module and cannot be disabled

Managing Package Dependencies

module:packages

Check and install Composer and npm package dependencies for all enabled modules.

php artisan module:packages [options]

Options

Option Description
--module= Check a specific module only
--install Automatically install all missing packages
--json Output results as JSON

Examples

Check all enabled modules:

php artisan module:packages

Output:

Package Dependency Report

PHP Version: 8.2.15

+----------------+-----+------------------+-------------+--------+
| Module         | PHP | Composer Missing | npm Missing | Status |
+----------------+-----+------------------+-------------+--------+
| Core           | ✓   | 0                | 0           | OK     |
| Orders         | ✓   | 0                | 0           | OK     |
| StoreShopify   | ✓   | 1                | 1           | MISSING|
+----------------+-----+------------------+-------------+--------+

Missing Packages:

StoreShopify:
  composer: guzzlehttp/guzzle
  npm: @shopify/polaris

To install all missing packages:
  composer require guzzlehttp/guzzle
  cd frontend && npm install @shopify/polaris

Or run: php artisan module:packages --install

Install all missing packages:

php artisan module:packages --install

Check a specific module:

php artisan module:packages --module=StoreShopify

Export as JSON (useful for CI/CD):

php artisan module:packages --json

Module Status File

Module states are persisted in modules/modules_statuses.json:

{
  "ChannelLiveChatWidget": true,
  "Core": true,
  "CoreDashboard": true,
  "Customers": true,
  "Orders": true,
  "Products": true,
  "ResellerCatalog": false,
  "ResellerFinance": false,
  "ResellerOrders": false,
  "StoreShopify": false,
  "Workflows": true
}

Note: Core modules (isCore: true in module.json) are always loaded regardless of this file.


Troubleshooting

Module not loading

  1. Check if the module is enabled:

    php artisan module:list
    
  2. Look for errors in the log:

    tail -f storage/logs/laravel.log | grep ModuleLoader
    
  3. Verify module.json is valid JSON:

    cat modules/ModuleName/module.json | jq .
    

Dependency errors

If you see dependency errors:

Module 'StoreShopify' requires module 'Orders' which is not available or not enabled

Enable the dependency first:

php artisan module:enable Orders
php artisan module:enable StoreShopify

Or use --with-deps:

php artisan module:enable StoreShopify --with-deps

Circular dependency detected

If you see:

Circular dependency detected: ModuleA -> ModuleB -> ModuleC -> ModuleA

Review your module.json files and remove the circular reference. Use the dependency graph to visualize:

php artisan module:list --graph

Next Steps