@dependabot/yarn-lib
Version:
📦🐈 Fast, reliable, and secure dependency management.
66 lines (49 loc) • 2.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _asyncToGenerator2;
function _load_asyncToGenerator() {
return _asyncToGenerator2 = _interopRequireDefault(require('babel-runtime/helpers/asyncToGenerator'));
}
let makePortableProxyScriptUnix = (() => {
var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (source, destination, options) {
const environment = options.extraEnvironment ? Array.from(options.extraEnvironment.entries()).map(function ([key, value]) {
return `${key}="${value}"`;
}).join(' ') + ' ' : '';
const prependedArguments = options.prependArguments ? ' ' + options.prependArguments.map(function (arg) {
return `"${arg}"`;
}).join(' ') : '';
const appendedArguments = options.appendArguments ? ' ' + options.appendArguments.map(function (arg) {
return `"${arg}"`;
}).join(' ') : '';
const filePath = `${destination}/${options.proxyBasename || path.basename(source)}`;
// Unless impossible we want to preserve any symlinks used to call us when forwarding the call to the binary (so we
// cannot use realpath or transform relative paths into absolute ones), but we also need to tell the sh interpreter
// that the symlink should be resolved relative to the script directory (hence dirname "$0" at runtime).
const sourcePath = path.isAbsolute(source) ? source : `$(dirname "$0")/../${source}`;
yield (_fs || _load_fs()).mkdirp(destination);
if (process.platform === 'win32') {
yield (_fs || _load_fs()).writeFile(filePath + '.cmd', `@${environment}"${sourcePath}" ${prependedArguments} ${appendedArguments} %*\r\n`);
} else {
yield (_fs || _load_fs()).writeFile(filePath, `#!/bin/sh\n\n${environment}exec "${sourcePath}"${prependedArguments} "$@"${appendedArguments}\n`);
yield (_fs || _load_fs()).chmod(filePath, 0o755);
}
});
return function makePortableProxyScriptUnix(_x, _x2, _x3) {
return _ref.apply(this, arguments);
};
})();
exports.makePortableProxyScript = makePortableProxyScript;
var _fs;
function _load_fs() {
return _fs = _interopRequireWildcard(require('./fs.js'));
}
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const path = require('path');
function makePortableProxyScript(source, destination,
// $FlowFixMe Flow doesn't support exact types with empty default values
options = {}) {
return makePortableProxyScriptUnix(source, destination, options);
}