UNPKG

semantic-release-pypi

Version:

semantic-release plugin to publish a python package to PyPI

51 lines 2.64 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { DefaultConfig } from './default-options.js'; import { createVenv } from './prepare.js'; import { pipe, spawn } from './util.js'; function publishPackage(srcDir, distDir, repoUrl, repoUsername, repoToken, gpgSign, gpgIdentity, options) { const signArgs = gpgSign ? ['--sign'] : []; if (gpgIdentity) { signArgs.push('--identity', gpgIdentity); } return spawn('python3', [ '-m', 'twine', 'upload', '--repository-url', repoUrl, '--non-interactive', '--skip-existing', '--verbose', ...signArgs, `${distDir}/*`, ].filter((arg) => arg !== null), Object.assign(Object.assign({}, options), { cwd: srcDir, env: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.env), { TWINE_USERNAME: repoUsername, TWINE_PASSWORD: repoToken }) })); } function publish(pluginConfig, context) { var _a, _b, _c; return __awaiter(this, void 0, void 0, function* () { const { logger } = context; const { srcDir, distDir, pypiPublish, gpgSign, gpgIdentity, repoUrl, repoUsername, repoToken, envDir, } = new DefaultConfig(pluginConfig); let options = pipe(context); if (envDir) { options = yield createVenv(envDir, options); } if (pypiPublish !== false) { logger.log(`Publishing package to ${repoUrl}`); const result = publishPackage(srcDir, distDir, (_a = process.env['PYPI_REPO_URL']) !== null && _a !== void 0 ? _a : repoUrl, (_b = process.env['PYPI_USERNAME']) !== null && _b !== void 0 ? _b : repoUsername, (_c = process.env['PYPI_TOKEN']) !== null && _c !== void 0 ? _c : repoToken, gpgSign, gpgIdentity, options); yield result; } else { logger.log('Not publishing package due to requested configuration'); } }); } export { publish, publishPackage }; //# sourceMappingURL=publish.js.map