typescript-assistant
Version:
Combines and integrates professional Typescript tools into your project
69 lines (66 loc) • 2.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.filterTsFiles = exports.packageJsonChanged = exports.npmInstall = exports.findChangedFiles = void 0;
const child_process_1 = require("child_process");
const fs_1 = require("fs");
function findChangedFiles(refA, refB) {
if (refA === undefined) {
refA = "HEAD";
}
if (refB === undefined) {
refB = "";
}
let output = (0, child_process_1.execSync)(`git diff --name-only --diff-filter=ACMR ${refA} ${refB}`, { encoding: "utf-8" });
return output.split("\n").filter((fileName) => fileName.length > 0);
}
exports.findChangedFiles = findChangedFiles;
function npmInstall() {
let scriptPath = `${process.cwd()}/build/npm-install.js`;
let currentDir = process.cwd().replace(/\\/g, "\\\\");
(0, fs_1.writeFileSync)(scriptPath, `
var fs = require('fs');
var tryNpmInstall = function() {
if (fs.existsSync('.git/index.lock')) {
return false;
}
console.log('Updating dependencies, please wait...');
const child_process = require('child_process');
try {
try {
child_process.execSync('npm install --no-package-lock', { encoding: 'UTF-8', stdio: [0, 1, 2] });
} catch (installError) {
console.error('Retrying npm install');
child_process.execSync('npm install --no-package-lock', { encoding: 'UTF-8', stdio: [0, 1, 2] });
}
} catch (secondError) {
console.error('npm install failed');
console.log('Press enter to continue');
process.stdin.once('data', function(){
process.exit(1);
});
}
process.exit(0);
}
fs.watch('.git', {persistent: true}, tryNpmInstall);
if (!tryNpmInstall()) {
console.log('waiting for git before running npm install');
}
`);
let install = (0, child_process_1.spawn)("node", ["./build/npm-install.js"], {
stdio: "ignore",
shell: true,
detached: true,
cwd: currentDir,
});
install.unref();
}
exports.npmInstall = npmInstall;
function packageJsonChanged(refA, refB) {
return (findChangedFiles(refA, refB).filter((f) => f.indexOf("package-lock.json") !== -1).length >= 1);
}
exports.packageJsonChanged = packageJsonChanged;
function filterTsFiles(files) {
return files.filter((f) => f.slice(-3) === ".ts" && f.slice(-5) !== ".d.ts");
}
exports.filterTsFiles = filterTsFiles;
//# sourceMappingURL=helpers.js.map