semantic-release-hackage
Version:
A semantic-release plugin to publish Haskell packages to Hackage
34 lines • 1.7 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.prepare = exports.readAndWriteNewCabal = exports.VERSION_PATTERN = void 0;
const exec_1 = require("./utils/exec");
const prepare_1 = require("./utils/prepare");
const promises_1 = require("fs/promises");
const path_1 = require("path");
exports.VERSION_PATTERN = /^\s*version:\s+(\S+)/m;
const readAndWriteNewCabal = async (fullCabalPath, newVersion) => {
const versionContents = await (0, promises_1.readFile)(fullCabalPath, "utf8");
const newContents = versionContents.replace(exports.VERSION_PATTERN, `version: ${newVersion}`);
await (0, promises_1.writeFile)(fullCabalPath, newContents, "utf8");
};
exports.readAndWriteNewCabal = readAndWriteNewCabal;
const prepare = async ({ cabalFile, versionPrefix = "" }, { nextRelease, logger, cwd }) => {
const realCwd = cwd ?? process.cwd();
logger.log("Current working directory: ", realCwd);
const cabalFileName = cabalFile ?? (0, prepare_1.lookupCabalFilename)(realCwd, logger);
const { version } = nextRelease;
const fullCabalPath = (0, path_1.resolve)(realCwd, cabalFileName);
const fullVersion = `${versionPrefix}${version}`;
logger.log("Reading .cabal file: ", fullCabalPath);
await (0, exports.readAndWriteNewCabal)(fullCabalPath, fullVersion);
logger.log("Writing new version %s to `%s`", version, fullCabalPath);
logger.log("Running cabal sdist command");
const { warn, output } = await (0, exec_1.runExecCommand)("cabal sdist");
if (warn) {
logger.warn(warn);
}
logger.log(output);
logger.success("Prepare done!");
};
exports.prepare = prepare;
//# sourceMappingURL=prepare.js.map
;