semantic-release-pypi
Version:
semantic-release plugin to publish a python package to PyPI
51 lines • 2.64 kB
JavaScript
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