21 lines
2.8 KiB
JavaScript
21 lines
2.8 KiB
JavaScript
import fs from 'node:fs';import path from 'node:path';import {pathToFileURL} from 'node:url';import crypto from 'node:crypto';
|
|
const s=JSON.parse(fs.readFileSync('C:/laragon/data/sgf-tempo/run/modular-regression-current.json','utf8')),tag=process.argv[2];if(s.port!==55439||!/^[a-f0-9]{12}$/.test(tag||''))throw Error('Wrong QA app');
|
|
const root=path.join(s.root,'private','stock-receipt-'+tag),app=path.join(root,'app'),state=JSON.parse(fs.readFileSync(path.join(root,'state.json'),'utf8'));
|
|
if(path.resolve(state.app)!==path.resolve(app)||state.database!=='compras_receipts_test_'+tag)throw Error('Unexpected isolated build target');
|
|
const native=path.resolve('../compras');if(!fs.existsSync(path.join(app,'node_modules')))fs.symlinkSync(path.join(native,'node_modules'),path.join(app,'node_modules'),'junction');
|
|
fs.copyFileSync(path.join(native,'artisan'),path.join(app,'artisan'));
|
|
const config=path.join(app,'vite.return-qa.config.ts');
|
|
fs.writeFileSync(config,`import inertia from '@inertiajs/vite';
|
|
import {wayfinder} from '@laravel/vite-plugin-wayfinder';
|
|
import tailwindcss from '@tailwindcss/vite';
|
|
import react from '@vitejs/plugin-react';
|
|
import laravel from 'laravel-vite-plugin';
|
|
import {defineConfig} from 'vite-plus';
|
|
export default defineConfig({build:{emptyOutDir:false},cacheDir:${JSON.stringify(path.join(root,'vite-full-return-cache'))},plugins:[laravel({input:['resources/css/app.css','resources/js/app.tsx'],refresh:false}),inertia(),react(),tailwindcss(),wayfinder({formVariants:true})],resolve:{alias:{'@':${JSON.stringify(path.join(app,'resources/js'))}}}});
|
|
`);
|
|
process.env.PATH='C:/laragon/tools/sgf-tempo/php-8.4.27;C:/laragon/tools/sgf-tempo/node-v24.22.1-win-arm64;'+process.env.PATH;process.env.APP_ENV='testing';process.env.APP_BASE_PATH=app;process.env.SGF_ISOLATED_REGRESSION_RUN=s.id;process.chdir(app);
|
|
const {build}=await import(pathToFileURL(path.join(native,'node_modules/vite-plus/dist/index.js')));await build({root:app,configFile:config});
|
|
const file=path.join(app,'public/build/manifest.json'),manifest=JSON.parse(fs.readFileSync(file,'utf8'));if(!manifest['resources/js/pages/stock/returns.tsx'])throw Error('Return page absent from full QA manifest');
|
|
const proof={kind:'private_application_asset_build_with_qa_configuration',passed:true,app_path_private:true,manifest_sha256:crypto.createHash('sha256').update(fs.readFileSync(file)).digest('hex'),return_page_in_manifest:true,configuration_difference:'Font downloading and optional React compiler omitted in QA; application entries, Inertia, React JSX, Tailwind and Wayfinder built. Does not validate the default optimized build.',native_public_build_touched:false,demo_assets_touched:false,visual_review:false};
|
|
fs.writeFileSync(path.join(root,'return-private-build.json'),JSON.stringify(proof,null,2)+'\n');console.log(JSON.stringify(proof));
|