UNPKG

electron-simple-publisher

Version:

Simple way to publish releases for electron-simple-updater

94 lines (83 loc) 2.27 kB
'use strict'; const fs = require('fs'); const path = require('path'); module.exports = addAssetsInfo; module.exports.replaceAssetTemplate = replaceAssetTemplate; module.exports.replaceMaskByPath = replaceMaskByPath; const ASSETS_DATA = { 'linux-ia32': { dir: 'dist', assets: { update: '{version}-ia32.AppImage', install: '{version}-ia32.AppImage', metaFile: null } }, 'linux-x64': { dir: 'dist', assets: { update: '{version}-x86_64.AppImage', install: '{version}-x86_64.AppImage', metaFile: null } }, 'darwin-x64': { dir: 'dist' + path.sep + 'mac', assets: { update: '{version}-mac.zip', install: '{version}.dmg', metaFile: null } }, 'win32-ia32': { dir: 'dist' + path.sep + 'win-ia32', assets: { update: '{version}-full.nupkg', install: '{version}-ia32.exe', metaFile: 'RELEASES' } }, 'win32-x64': { dir: 'dist' + path.sep + 'win', assets: { update: '{version}-full.nupkg', install: '{version}.exe', metaFile: 'RELEASES' } } }; function addAssetsInfo(build) { const name = `${build.platform}-${build.arch}`; const meta = ASSETS_DATA[name]; if (!meta) { throw new Error(`Unknown build type ${name}`); } const assetsPath = path.resolve(meta.dir); const files = fs.readdirSync(assetsPath); let assets = meta.assets; assets = replaceAssetTemplate(assets, build.version); assets = replaceMaskByPath(assets, files, assetsPath); return Object.assign({ assets, assetsPath }, build); } function replaceAssetTemplate(assets, version) { const result = {}; for (let name in assets) { if (!assets.hasOwnProperty(name)) continue; if (!assets[name]) continue; result[name] = assets[name].replace('{version}', version); } return result; } function replaceMaskByPath(assets, files, dirPath) { const keys = Object.keys(assets); return keys.reduce((result, name) => { const mask = assets[name]; const fileName = files.filter(f => f.endsWith(mask))[0]; if (fileName) { result[name] = path.join(dirPath, fileName); } else { console.warn(`File with mask ${mask} is not found at ${dirPath}`); } return result; }, {}); }