UNPKG

better-npm-init

Version:

A better version of npm init, with templates and more. Usage: better-npm-init <template> [--yarn] [--install] [--git] [--yes] [--help]

125 lines (112 loc) 4.15 kB
'use strict' const _ = require('lodash') const semver = require('semver') /** * Determine whether libatspi2 is necessary, given the Electron version. */ function getATSPIDepends (version, dependencyMap) { return semver.gte(version, '5.0.0-beta.1') ? [dependencyMap.atspi] : [] } /** * Determine whether DRM is a necessary dependency, given the Electron version. */ function getDRMDepends (version, dependencyMap) { return semver.gte(version, '9.0.0-beta.1') ? [dependencyMap.drm] : [] } /** * Determine whether GBM is a necessary dependency, given the Electron version. */ function getGBMDepends (version, dependencyMap) { return semver.gte(version, '9.0.0-beta.1') ? [dependencyMap.gbm] : [] } /** * Determine whether GConf is a necessary dependency, given the Electron version. */ function getGConfDepends (version, dependencyMap) { return semver.lt(version, '3.0.0-beta.1') ? [dependencyMap.gconf] : [] } /** * Determine the GTK dependency based on the Electron version in use. */ function getGTKDepends (version, dependencyMap) { return semver.gte(version, '2.0.0-beta.1') ? dependencyMap.gtk3 : dependencyMap.gtk2 } /** * Determine the dependencies for the `shell.moveItemToTrash` Electron API, based on the * Electron version in use. * * @return {string[]} an ordered list of dependencies that are OR'd together by the installer module. */ function getTrashDepends (version, dependencyMap) { if (semver.lt(version, '1.4.1')) { return [dependencyMap.gvfs] } else if (semver.lt(version, '1.7.2')) { return _.flatten([dependencyMap.kdeCliTools, dependencyMap.kdeRuntime, dependencyMap.trashCli, dependencyMap.gvfs]) } else { return _.flatten([dependencyMap.kdeCliTools, dependencyMap.kdeRuntime, dependencyMap.trashCli, dependencyMap.glib2, dependencyMap.gvfs]) } } /** * Determine whether libuuid is necessary, given the Electron version. */ function getUUIDDepends (version, dependencyMap) { return semver.satisfies(version, '>=4.0.0-beta.1 <8.0.0-beta.1') ? [dependencyMap.uuid] : [] } /** * Determine whether dri3 extension for X C Binding is a necessary dependency, given the Electron version. */ function getXcbDri3Depends (version, dependencyMap) { return semver.gte(version, '9.0.0-beta.1') ? [dependencyMap.xcbDri3] : [] } /** * Determine whether libXss is a necessary dependency, given the Electron version. */ function getXssDepends (version, dependencyMap) { return semver.lt(version, '10.0.0-beta.1') ? [dependencyMap.xss] : [] } module.exports = { /** * Determine the default dependencies for an Electron application. */ getDepends: function getDepends (version, dependencyMap) { return [ getGTKDepends(version, dependencyMap), dependencyMap.notify, dependencyMap.nss, dependencyMap.xtst, dependencyMap.xdgUtils ].concat(getATSPIDepends(version, dependencyMap)) .concat(getDRMDepends(version, dependencyMap)) .concat(getGBMDepends(version, dependencyMap)) .concat(getGConfDepends(version, dependencyMap)) .concat(getUUIDDepends(version, dependencyMap)) .concat(getXcbDri3Depends(version, dependencyMap)) .concat(getXssDepends(version, dependencyMap)) }, getATSPIDepends, getDRMDepends, getGBMDepends, getGConfDepends, getGTKDepends, getTrashDepends, getUUIDDepends, getXcbDri3Depends, getXssDepends, /** * Merge the user specified dependencies (from either the API or the CLI) with the respective * default dependencies, given the `dependencyKey`. * * @param {object} data - the user-specified data * @param {string} dependencyKey - the dependency type (e.g., `depends` for Debian * runtime dependencies) * @param {object} defaults - the default options for the installer module * */ mergeUserSpecified: function mergeUserSpecified (data, dependencyKey, defaults) { if (data.options) { // options passed programmatically return _.union(defaults[dependencyKey], data.options[dependencyKey]) } else { // options passed via command-line return _.union(defaults[dependencyKey], data[dependencyKey]) } } }