init project

This commit is contained in:
root
2026-07-31 13:12:54 -04:00
parent 0da92d5e02
commit f3863f760c
7215 changed files with 1860260 additions and 1 deletions
+46
View File
@@ -0,0 +1,46 @@
import path from 'node:path';
import { readComposerJson, vendorBinExists } from './composer.js';
/**
* Shared behaviour for Composer-based PHP frameworks (Laravel, CodeIgniter).
* Subclasses only need to override the bits that actually differ: the CLI
* used for scaffolding/migrations (artisan vs spark), the dev-server "ready"
* line, and which test runner is used.
*/
export class PhpFrameworkAdapter {
root;
packageManager = 'composer';
composerJson;
constructor(root) {
this.root = root;
this.composerJson = readComposerJson(root);
}
installCommand() {
return { command: 'composer', args: ['install'], cwd: this.root };
}
buildCommand() {
return { command: 'composer', args: ['install', '--no-dev', '--optimize-autoloader'], cwd: this.root };
}
testCommand(extraArgs = []) {
if (vendorBinExists(this.root, 'pest')) {
return { command: this.vendorBin('pest'), args: extraArgs, cwd: this.root };
}
if (vendorBinExists(this.root, 'phpunit')) {
return { command: this.vendorBin('phpunit'), args: extraArgs, cwd: this.root };
}
return null;
}
lintCommand(fix = false) {
if (vendorBinExists(this.root, 'pint')) {
return { command: this.vendorBin('pint'), args: fix ? [] : ['--test'], cwd: this.root };
}
if (vendorBinExists(this.root, 'phpcs')) {
return { command: this.vendorBin(fix ? 'phpcbf' : 'phpcs'), args: [], cwd: this.root };
}
return null;
}
vendorBin(bin) {
const suffix = process.platform === 'win32' ? '.bat' : '';
return path.join(this.root, 'vendor', 'bin', `${bin}${suffix}`);
}
}
//# sourceMappingURL=phpBase.js.map