@process-engine/ci_tools
Version:
CI tools for process-engine.io
71 lines (52 loc) • 2.15 kB
text/typescript
import * as yargsParser from 'yargs-parser';
import { getGitBranch } from '../git/git';
import { getPackageVersion, getPackageVersionTag } from '../versions/package_version';
import { setupGit } from './internal/setup-git-and-npm-connections';
import { sh } from '../cli/shell';
import { printMultiLineString } from '../cli/printMultiLineString';
import { sendSlackMessage } from '../slack/notifier';
import { createReleaseAnnouncement } from './internal/create-release-announcement';
const COMMAND_NAME = 'publish-releasenotes-on-slack';
const BADGE = `[${COMMAND_NAME}]\t`;
const DEFAULT_MODE = 'node';
const DOC = `
Publishes the releasenotes for the current version on slack.
To use this command, an incoming webhook for slack is required and must be configured as an environment variable named 'SLACK_WEBHOOK'.
OPTIONS
--mode sets the package mode [dotnet, node, python] (default: node)
`;
// DOC: see above
export async function run(...args): Promise<boolean> {
const argv = yargsParser(args, { alias: { help: ['h'] }, default: { mode: DEFAULT_MODE } });
const mode = argv.mode;
setupGit();
await printInfo(mode);
annotatedSh('git config user.name');
annotatedSh('git config user.email');
const releasenotes = await createReleaseAnnouncement(mode);
await sendSlackMessage(releasenotes);
return true;
}
export function getShortDoc(): string {
return DOC.trim().split('\n')[0];
}
export function printHelp(): void {
console.log(`Usage: ci_tools ${COMMAND_NAME} [--mode <MODE>]`);
console.log('');
console.log(DOC.trim());
}
function annotatedSh(cmd: string): string {
console.log(`${BADGE}|>>> ${cmd}`);
const output = sh(cmd);
printMultiLineString(output, `${BADGE}| `);
return output;
}
async function printInfo(mode: string): Promise<void> {
const packageVersion = await getPackageVersion(mode);
const packageVersionTag = await getPackageVersionTag(mode);
const branchName = getGitBranch();
console.log(`${BADGE}packageVersion:`, packageVersion);
console.log(`${BADGE}packageVersionTag:`, packageVersionTag);
console.log(`${BADGE}branchName:`, branchName);
console.log('');
}