feat: implement core code review extension
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
import * as esbuild from 'esbuild';
|
||||
import { copyFileSync, mkdirSync, existsSync, cpSync } from 'fs';
|
||||
import { resolve, dirname } from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
const rootDir = resolve(__dirname, '..');
|
||||
const outDir = resolve(rootDir, 'out');
|
||||
|
||||
if (!existsSync(outDir)) {
|
||||
mkdirSync(outDir, { recursive: true });
|
||||
}
|
||||
|
||||
await esbuild.build({
|
||||
entryPoints: [resolve(rootDir, 'src', 'extension.ts')],
|
||||
bundle: true,
|
||||
outfile: resolve(outDir, 'extension.js'),
|
||||
external: [
|
||||
'vscode',
|
||||
'eslint',
|
||||
'stylelint',
|
||||
'child_process',
|
||||
'fs',
|
||||
'path',
|
||||
'url',
|
||||
'os',
|
||||
],
|
||||
format: 'cjs',
|
||||
platform: 'node',
|
||||
target: 'node22',
|
||||
minify: true,
|
||||
sourcemap: false,
|
||||
treeShaking: true,
|
||||
});
|
||||
|
||||
const jarsSrc = resolve(rootDir, 'jars');
|
||||
const jarsDest = resolve(outDir, 'jars');
|
||||
if (existsSync(jarsSrc)) {
|
||||
cpSync(jarsSrc, jarsDest, { recursive: true, force: true });
|
||||
}
|
||||
|
||||
console.log('Build complete.');
|
||||
@@ -0,0 +1,54 @@
|
||||
import { existsSync, mkdirSync, createWriteStream, unlinkSync } from 'fs';
|
||||
import { resolve, dirname } from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { get } from 'https';
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
const rootDir = resolve(__dirname, '..');
|
||||
const libDir = resolve(rootDir, 'jars', 'pmd', 'lib');
|
||||
|
||||
const PMD_VERSION = '7.26.0';
|
||||
const PMD_JARS = [
|
||||
`pmd-core-${PMD_VERSION}.jar`,
|
||||
`pmd-java-${PMD_VERSION}.jar`,
|
||||
`pmd-javascript-${PMD_VERSION}.jar`,
|
||||
`pmd-jsp-${PMD_VERSION}.jar`,
|
||||
];
|
||||
|
||||
const MAVEN_BASE = `https://repo1.maven.org/maven2/net/sourceforge/pmd`;
|
||||
|
||||
function downloadFile(url, dest) {
|
||||
return new Promise((resolvePromise, reject) => {
|
||||
const file = createWriteStream(dest);
|
||||
get(url, (response) => {
|
||||
if (response.statusCode === 302 || response.statusCode === 301) {
|
||||
downloadFile(response.headers.location, dest).then(resolvePromise).catch(reject);
|
||||
return;
|
||||
}
|
||||
response.pipe(file);
|
||||
file.on('finish', () => { file.close(); resolvePromise(); });
|
||||
file.on('error', (err) => { unlinkSync(dest); reject(err); });
|
||||
}).on('error', (err) => { unlinkSync(dest); reject(err); });
|
||||
});
|
||||
}
|
||||
|
||||
if (!existsSync(libDir)) {
|
||||
mkdirSync(libDir, { recursive: true });
|
||||
}
|
||||
|
||||
for (const jar of PMD_JARS) {
|
||||
const moduleName = jar.replace(`-${PMD_VERSION}.jar`, '').replace('pmd-', '');
|
||||
const url = `${MAVEN_BASE}/pmd-${moduleName}/${PMD_VERSION}/${jar}`;
|
||||
const dest = resolve(libDir, jar);
|
||||
|
||||
if (existsSync(dest)) {
|
||||
console.log(`Skip: ${jar} (exists)`);
|
||||
continue;
|
||||
}
|
||||
|
||||
console.log(`Downloading: ${url}`);
|
||||
await downloadFile(url, dest);
|
||||
console.log(`Done: ${jar}`);
|
||||
}
|
||||
|
||||
console.log('PMD JARs download complete.');
|
||||
@@ -0,0 +1,11 @@
|
||||
import { execSync } from 'child_process';
|
||||
import { resolve, dirname } from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
const rootDir = resolve(__dirname, '..');
|
||||
|
||||
execSync('node scripts/build.mjs', { cwd: rootDir, stdio: 'inherit' });
|
||||
execSync('npx vsce package', { cwd: rootDir, stdio: 'inherit' });
|
||||
|
||||
console.log('Production package complete.');
|
||||
Reference in New Issue
Block a user