const fs = require('fs'); const path = require('path'); const https = require('https'); const TARGET_DIR = path.join(__dirname, '..', 'download'); const VK_XML_URL = `https://raw.githubusercontent.com/KhronosGroup/Vulkan-Docs/{TAG}/xml/vk.xml`; const VULKAN_CORE_H_URL = `https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/{TAG}/include/vulkan/vulkan_core.h`; async function getFile(url) { return new Promise((resolve, reject) => { console.log(`GET ${url}`); https.get(url, res => { const { statusCode } = res; if (statusCode !== 200) { console.log(`GET request to "${url}" failed with status code ${statusCode}`); process.exit(1); } res.setEncoding('utf8'); let fileContent = ''; res.on('data', chunk => { fileContent += chunk; }); res.on('end', () => resolve(fileContent)); res.on('error', reject); }); }); } async function main(tag) { const vkXml = await getFile(VK_XML_URL.replace('{TAG}', tag)); const vulkanCoreH = await getFile(VULKAN_CORE_H_URL.replace('{TAG}', tag)); if (!fs.existsSync(TARGET_DIR)) { fs.mkdirSync(TARGET_DIR); } fs.writeFileSync(path.join(TARGET_DIR, 'vk.xml'), vkXml, 'utf8'); fs.writeFileSync(path.join(TARGET_DIR, 'vulkan_core.h'), vulkanCoreH, 'utf8'); } module.exports = main;