@prolaxu/galaxy-api-tool
Version:
CLI tool for generating Galaxy API files (Controllers, Resources, Vue components)
210 lines (163 loc) ⢠5.83 kB
Markdown
# @prolaxu/galaxy-api-tool
A powerful CLI tool for generating Galaxy API files and Vue.js CRUD components. This tool replaces bash scripts with a robust, cross-platform Node.js solution.
## š Quick Start
Use with npx (no installation required):
```bash
# Generate API files with Request validation
npx /galaxy-api-tool gen:api User
# Generate API files without Request (uses EmptyRequest)
npx /galaxy-api-tool gen:api-empty Category
# Generate Vue.js CRUD views
npx /galaxy-api-tool gen:views admin/User
# Generate everything (API + Views)
npx /galaxy-api-tool gen:all inventory/Product
```
## š¦ Installation
### Global Installation
```bash
npm install -g /galaxy-api-tool
```
### Local Installation
```bash
npm install /galaxy-api-tool
npx galaxy-api-tool --help
```
## š ļø Commands
### `gen:api <ModelName>`
Generates complete Galaxy API files with Request validation.
```bash
npx /galaxy-api-tool gen:api User
```
**Generated files:**
- `src/GalaxyAPI/Controllers/UserController.php`
- `src/GalaxyAPI/Requests/UserRequest.php`
- `src/GalaxyAPI/Resources/UserResource.php`
### `gen:api-empty <ModelName>`
Generates Galaxy API files without Request validation (uses EmptyRequest).
```bash
npx /galaxy-api-tool gen:api-empty Category
```
**Generated files:**
- `src/GalaxyAPI/Controllers/CategoryController.php`
- `src/GalaxyAPI/Resources/CategoryResource.php`
### `gen:views <ModelInput>`
Generates Vue.js CRUD components and Pinia store. Supports grouping.
```bash
# Simple model
npx /galaxy-api-tool gen:views User
# Grouped model
npx /galaxy-api-tool gen:views admin/User
# Nested grouping
npx /galaxy-api-tool gen:views inventory/Product
```
**Generated files:**
- `resources/assets/spa/stores/modules/[path]/use[Model]Store.js`
- `resources/assets/spa/modules/[path]/[Model]Form.vue`
- `resources/assets/spa/modules/[path]/[Model]ListComponent.vue`
- `resources/assets/spa/modules/[path]/[Model]Select.vue`
### `gen:all <ModelInput>`
Generates both API files and Vue.js CRUD components.
```bash
# Generate everything with Request validation
npx /galaxy-api-tool gen:all admin/User
# Generate everything without Request validation
npx /galaxy-api-tool gen:all admin/User --empty
```
## šÆ Options
### Custom Output Path
All commands support a custom output path:
```bash
npx /galaxy-api-tool gen:api User --path /custom/project/path
```
### Empty Request
Use `--empty` flag with `gen:all` to generate API without Request validation:
```bash
npx /galaxy-api-tool gen:all User --empty
```
## š Output Structure
### API Files
```
src/
āāā GalaxyAPI/
āāā Controllers/
ā āāā UserController.php
āāā Requests/
ā āāā UserRequest.php
āāā Resources/
āāā UserResource.php
```
### Vue.js CRUD Files
```
resources/
āāā assets/
āāā spa/
āāā modules/
ā āāā admin/
ā āāā user/
ā āāā UserForm.vue
ā āāā UserListComponent.vue
ā āāā UserSelect.vue
āāā stores/
āāā modules/
āāā admin/
āāā user/
āāā useUserStore.js
```
## š§ Model Input Formats
The tool supports various model input formats:
| Input | Output Path | API Endpoint |
|-------|-------------|--------------|
| `User` | `user/` | `v2/tenant/user` |
| `admin/User` | `admin/user/` | `v2/tenant/admin/user` |
| `inventory/Product` | `inventory/product/` | `v2/tenant/inventory/product` |
## š Examples
### Generate User Management
```bash
# Generate complete user management system
npx /galaxy-api-tool gen:all User
# Output:
# ā
Generated all files:
# API Files:
# - Controller: src/GalaxyAPI/Controllers/UserController.php
# - Request: src/GalaxyAPI/Requests/UserRequest.php
# - Resource: src/GalaxyAPI/Resources/UserResource.php
# CRUD Files:
# š Store: resources/assets/spa/stores/modules/user/useUserStore.js
# š Form: resources/assets/spa/modules/user/UserForm.vue
# š List: resources/assets/spa/modules/user/UserListComponent.vue
# š½ Select: resources/assets/spa/modules/user/UserSelect.vue
```
### Generate Admin Panel Components
```bash
# Generate admin-specific components
npx /galaxy-api-tool gen:views admin/Dashboard
# Output:
# ā
Generated CRUD files for Dashboard:
# š Group: admin
# š Store: resources/assets/spa/stores/modules/admin/dashboard/useDashboardStore.js
# š Form: resources/assets/spa/modules/admin/dashboard/DashboardForm.vue
# š List: resources/assets/spa/modules/admin/dashboard/DashboardListComponent.vue
# š½ Select: resources/assets/spa/modules/admin/dashboard/DashboardSelect.vue
#
# š Next steps:
# 1. Update the columns array in DashboardListComponent.vue
# 2. Add form fields to DashboardForm.vue
# 3. Import and use components in your routes/pages
# 4. API endpoint: v2/tenant/admin/dashboard
```
### Generate Inventory System
```bash
# Generate inventory management with empty request
npx /galaxy-api-tool gen:all inventory/Product --empty
# Output includes both API and CRUD files for inventory/product
```
## š¦ Error Handling
The tool includes comprehensive error handling:
- **Model name validation**: Ensures valid model names
- **Path validation**: Checks for valid file paths
- **Directory creation**: Automatically creates necessary directories
- **Template validation**: Validates template syntax
```bash
# Invalid model name
npx /galaxy-api-tool gen:api ""
# ā Error: Model name