init project
This commit is contained in:
+82
@@ -0,0 +1,82 @@
|
||||
import { z } from 'zod';
|
||||
import { config } from '../../config.js';
|
||||
import { hasComposerDependency, readComposerJson } from '../../lib/frameworks/composer.js';
|
||||
import { runCommand } from '../../lib/runCommand.js';
|
||||
import { pascalCase } from '../../lib/strings.js';
|
||||
import { errorResult, jsonResult, toErrorMessage } from '../shared.js';
|
||||
import { requireLaravel } from './requireLaravel.js';
|
||||
export function registerGenerateFilamentResourceTool(server) {
|
||||
server.registerTool('generate_filament_resource', {
|
||||
title: 'Generate Filament Resource',
|
||||
description: 'Generate a Filament admin resource via `php artisan make:filament-resource`. Requires filament/filament to be installed.',
|
||||
inputSchema: {
|
||||
name: z.string().min(1).describe('Resource/model name, e.g. "Post".'),
|
||||
generate: z
|
||||
.boolean()
|
||||
.optional()
|
||||
.default(true)
|
||||
.describe('Pass --generate to Filament when true (default).'),
|
||||
},
|
||||
}, async ({ name, generate }) => {
|
||||
try {
|
||||
const laravel = requireLaravel();
|
||||
const composer = readComposerJson(laravel.root);
|
||||
if (!hasComposerDependency(composer, 'filament/filament')) {
|
||||
return errorResult('filament/filament is not installed. Run composer_require with package "filament/filament" first ' +
|
||||
'(or `composer require filament/filament`).');
|
||||
}
|
||||
const resource = pascalCase(name);
|
||||
const args = ['artisan', 'make:filament-resource', resource, '--no-interaction'];
|
||||
if (generate !== false)
|
||||
args.push('--generate');
|
||||
const result = await runCommand('php', args, {
|
||||
cwd: laravel.root,
|
||||
timeoutMs: config.scaffoldCommandTimeoutMs,
|
||||
});
|
||||
return jsonResult({
|
||||
package: 'filament/filament',
|
||||
resource,
|
||||
exitCode: result.exitCode,
|
||||
failed: result.failed,
|
||||
output: result.output,
|
||||
});
|
||||
}
|
||||
catch (error) {
|
||||
return errorResult(toErrorMessage(error));
|
||||
}
|
||||
});
|
||||
}
|
||||
export function registerGenerateNovaResourceTool(server) {
|
||||
server.registerTool('generate_nova_resource', {
|
||||
title: 'Generate Nova Resource',
|
||||
description: 'Generate a Laravel Nova resource via `php artisan nova:resource`. Requires laravel/nova to be installed.',
|
||||
inputSchema: {
|
||||
name: z.string().min(1).describe('Resource name, e.g. "Post".'),
|
||||
},
|
||||
}, async ({ name }) => {
|
||||
try {
|
||||
const laravel = requireLaravel();
|
||||
const composer = readComposerJson(laravel.root);
|
||||
if (!hasComposerDependency(composer, 'laravel/nova')) {
|
||||
return errorResult('laravel/nova is not installed. Install Nova (license required) then re-run this tool. ' +
|
||||
'See https://nova.laravel.com/docs for installation.');
|
||||
}
|
||||
const resource = pascalCase(name);
|
||||
const result = await runCommand('php', ['artisan', 'nova:resource', resource, '--no-interaction'], {
|
||||
cwd: laravel.root,
|
||||
timeoutMs: config.scaffoldCommandTimeoutMs,
|
||||
});
|
||||
return jsonResult({
|
||||
package: 'laravel/nova',
|
||||
resource,
|
||||
exitCode: result.exitCode,
|
||||
failed: result.failed,
|
||||
output: result.output,
|
||||
});
|
||||
}
|
||||
catch (error) {
|
||||
return errorResult(toErrorMessage(error));
|
||||
}
|
||||
});
|
||||
}
|
||||
//# sourceMappingURL=generateAdminResources.js.map
|
||||
Reference in New Issue
Block a user