UNPKG

@homebridge/node-pty-prebuilt-multiarch

Version:
84 lines (74 loc) 2.73 kB
//@ts-check const { execSync } = require('child_process'); const fs = require('fs'); const os = require('os'); const path = require('path'); const RELEASE_DIR = path.join(__dirname, '../build/Release'); const BUILD_FILES = [ path.join(RELEASE_DIR, 'conpty.node'), path.join(RELEASE_DIR, 'conpty.pdb'), path.join(RELEASE_DIR, 'conpty_console_list.node'), path.join(RELEASE_DIR, 'conpty_console_list.pdb'), path.join(RELEASE_DIR, 'pty.node'), path.join(RELEASE_DIR, 'pty.pdb'), path.join(RELEASE_DIR, 'spawn-helper'), path.join(RELEASE_DIR, 'winpty-agent.exe'), path.join(RELEASE_DIR, 'winpty-agent.pdb'), path.join(RELEASE_DIR, 'winpty.dll'), path.join(RELEASE_DIR, 'winpty.pdb') ]; const CONPTY_DIR = path.join(__dirname, '../third_party/conpty'); const CONPTY_SUPPORTED_ARCH = ['x64', 'arm64']; console.log('\x1b[32m> Cleaning release folder...\x1b[0m'); function cleanFolderRecursive(folder) { var files = []; if (fs.existsSync(folder)) { files = fs.readdirSync(folder); files.forEach(function(file,index) { var curPath = path.join(folder, file); if (fs.lstatSync(curPath).isDirectory()) { // recurse cleanFolderRecursive(curPath); fs.rmdirSync(curPath); } else if (BUILD_FILES.indexOf(curPath) < 0){ // delete file fs.unlinkSync(curPath); } }); } }; try { cleanFolderRecursive(RELEASE_DIR); } catch(e) { console.log(e); process.exit(1); } console.log(`\x1b[32m> Moving conpty.dll...\x1b[0m`); if (os.platform() !== 'win32') { console.log(' SKIPPED (not Windows)'); } else { let windowsArch; if (process.env.npm_config_arch) { windowsArch = process.env.npm_config_arch; console.log(` Using $npm_config_arch: ${windowsArch}`); } else { windowsArch = os.arch(); console.log(` Using os.arch(): ${windowsArch}`); } if (!CONPTY_SUPPORTED_ARCH.includes(windowsArch)) { console.log(` SKIPPED (unsupported architecture ${windowsArch})`); } else { const versionFolder = fs.readdirSync(CONPTY_DIR)[0]; console.log(` Found version ${versionFolder}`); const sourceFolder = path.join(CONPTY_DIR, versionFolder, `win10-${windowsArch}`); const destFolder = path.join(RELEASE_DIR, 'conpty'); fs.mkdirSync(destFolder, { recursive: true }); for (const file of ['conpty.dll', 'OpenConsole.exe']) { const sourceFile = path.join(sourceFolder, file); const destFile = path.join(destFolder, file); console.log(` Copying ${sourceFile} -> ${destFile}`); fs.copyFileSync(sourceFile, destFile); } } } // console.log(`\x1b[32m> Generating compile_commands.json...\x1b[0m`); // execSync('npx node-gyp configure -- -f compile_commands_json'); process.exit(0);