UNPKG

tsds-publish

Version:

Development stack for TypeScript libraries

179 lines 7.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return publish; } }); var _crossspawncb = /*#__PURE__*/ _interop_require_default(require("cross-spawn-cb")); var _fs = /*#__PURE__*/ _interop_require_default(require("fs")); var _fsremovecompat = require("fs-remove-compat"); var _getoptscompat = /*#__PURE__*/ _interop_require_default(require("getopts-compat")); var _nodeversioncall = require("node-version-call"); var _path = /*#__PURE__*/ _interop_require_default(require("path")); var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb")); var _url = /*#__PURE__*/ _interop_require_default(require("url")); var _hasChangedts = /*#__PURE__*/ _interop_require_default(require("./lib/hasChanged.js")); function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _object_spread(target) { for(var i = 1; i < arguments.length; i++){ var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === "function") { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function(key) { _define_property(target, key, source[key]); }); } return target; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _object_spread_props(target, source) { source = source != null ? source : {}; if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function(key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var major = +process.versions.node.split('.')[0]; var __dirname = _path.default.dirname(typeof __filename === 'undefined' ? _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString()) : __filename); var dist = _path.default.join(__dirname, '..'); function run(args, options_, callback) { var _options_package; var cwd = options_.cwd || process.cwd(); var options = _object_spread({}, options_); options.package = options.package || JSON.parse(_fs.default.readFileSync(_path.default.join(cwd, 'package.json'), 'utf8')); if ((_options_package = options.package) === null || _options_package === void 0 ? void 0 : _options_package.private) { var _options_package1; console.log("Skipping ".concat((_options_package1 = options.package) === null || _options_package1 === void 0 ? void 0 : _options_package1.name, ". Private")); return callback(); } var opts = (0, _getoptscompat.default)(args, { alias: { otp: 'o', 'dry-run': 'd' }, boolean: [ 'yolo', 'dry-run' ] }); (0, _hasChangedts.default)(options, function(err, result) { var _options_package; if (err) return callback(err); if (!(result === null || result === void 0 ? void 0 : result.changed)) { var _options_package1; console.log("Skipping ".concat((_options_package1 = options.package) === null || _options_package1 === void 0 ? void 0 : _options_package1.name, ". ").concat(result === null || result === void 0 ? void 0 : result.reason)); callback(); return; } console.log("Publishing ".concat((_options_package = options.package) === null || _options_package === void 0 ? void 0 : _options_package.name, ". ").concat(result === null || result === void 0 ? void 0 : result.reason)); var queue = new _queuecb.default(1); // run tests if (!opts.yolo) { queue.defer(function(cb) { return (0, _fsremovecompat.safeRm)(_path.default.join(cwd, 'node_modules'), function(err) { return cb(err); }); }); queue.defer(_crossspawncb.default.bind(null, 'npm', [ 'ci' ], _object_spread_props(_object_spread({}, options), { cwd: cwd }))); queue.defer(_crossspawncb.default.bind(null, 'npm', [ 'test' ], _object_spread_props(_object_spread({}, options), { cwd: cwd }))); } // update the version var versionArgs = [ 'version', opts._.length > 0 ? opts._[0] : 'patch' ]; queue.defer(function(cb) { return (0, _crossspawncb.default)('npm', versionArgs, options, function(err) { if (err) return cb(err); options.package = JSON.parse(_fs.default.readFileSync(_path.default.join(cwd, 'package.json'), 'utf8')); cb(); }); }); // do publish // Safeguard: block actual publish in test environment without --dry-run if (process.env.NODE_ENV === 'test' && !opts['dry-run']) { return callback(new Error('Cannot publish in test environment without --dry-run')); } var publishArgs = [ 'publish' ]; if (opts['dry-run']) publishArgs.push('--dry-run'); if (opts.otp) publishArgs.push("--otp=".concat(opts.otp)); queue.defer(_crossspawncb.default.bind(null, 'npm', publishArgs, options)); queue.defer(function(cb) { return (0, _crossspawncb.default)('git', [ 'add', '.' ], options, function() { return cb(); }); }); queue.defer(function(cb) { var _options_package; return (0, _crossspawncb.default)('git', [ 'commit', '-m', "".concat((_options_package = options.package) === null || _options_package === void 0 ? void 0 : _options_package.version) ], options, function() { return cb(); }); }); queue.await(callback); }); } var worker = major >= 20 ? run : (0, _nodeversioncall.bind)('>=20', _path.default.join(dist, 'cjs', 'command.js'), { callbacks: true }); function publish(args, options, callback) { worker(args, options, callback); } /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }