Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions source/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,21 @@ import path from 'node:path';
import {readPackageUp} from 'read-package-up';
import {parsePackage} from 'read-pkg';
import issueRegex from 'issue-regex';
import terminalLink from 'terminal-link';
import createTerminalLink from 'terminal-link';
import {execa} from 'execa';
import pMemoize from 'p-memoize';
import chalk from 'chalk';
import Version from './version.js';
import * as git from './git-util.js';
import * as npm from './npm/util.js';

// TODO[terminal-link@>4.0.0]: remove terminal-link wrapper with fallback after https://github.com/sindresorhus/terminal-link/issues/18 is fixed
/** @type {(text: string, url: string, options?: import('terminal-link').Options) => string} */
const terminalLink = (text, url, options) => createTerminalLink(text, url, {
fallback: (text, url) => `${text} ( ${url} )`,
...options,
});

export const assert = (condition, message) => {
if (!condition) {
throw new Error(message);
Expand All @@ -34,7 +41,7 @@ const _npRootDirectory = fileURLToPath(new URL('..', import.meta.url));
export const {package_: npPackage, rootDirectory: npRootDirectory} = await readPackage(_npRootDirectory);

export const linkifyIssues = (url, message) => {
if (!(url && terminalLink.isSupported)) {
if (!url) {
return message;
}

Expand All @@ -50,15 +57,15 @@ export const linkifyIssues = (url, message) => {
};

export const linkifyCommit = (url, commit) => {
if (!(url && terminalLink.isSupported)) {
if (!url) {
return commit;
}

return terminalLink(commit, `${url}/commit/${commit}`);
};

export const linkifyCommitRange = (url, commitRange) => {
if (!(url && terminalLink.isSupported)) {
if (!url) {
return commitRange;
}

Expand Down
6 changes: 3 additions & 3 deletions test/util/hyperlinks.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ test('linkifyIssues returns raw message if terminalLink is not supported', verif
linksSupported: false,
}, ({t, util: {linkifyIssues}}) => {
const message = 'Commit message - fixes #6';
t.is(linkifyIssues(MOCK_REPO_URL, message), message);
t.is(linkifyIssues(MOCK_REPO_URL, message), `${message} ( ${MOCK_REPO_URL}/issues/6 )`);
});

test('linkifyCommit correctly links commits', verifyLinks, {
Expand All @@ -54,7 +54,7 @@ test('linkifyCommit returns raw commit hash if url is not provided', verifyLinks
test('linkifyCommit returns raw commit hash if terminalLink is not supported', verifyLinks, {
linksSupported: false,
}, ({t, util: {linkifyCommit}}) => {
t.is(linkifyCommit(MOCK_REPO_URL, MOCK_COMMIT_HASH), MOCK_COMMIT_HASH);
t.is(linkifyCommit(MOCK_REPO_URL, MOCK_COMMIT_HASH), `${MOCK_COMMIT_HASH} ( ${MOCK_REPO_URL}/commit/${MOCK_COMMIT_HASH} )`);
});

test('linkifyCommitRange returns raw commitRange if url is not provided', verifyLinks, {
Expand All @@ -66,7 +66,7 @@ test('linkifyCommitRange returns raw commitRange if url is not provided', verify
test('linkifyCommitRange returns raw commitRange if terminalLink is not supported', verifyLinks, {
linksSupported: false,
}, ({t, util: {linkifyCommitRange}}) => {
t.is(linkifyCommitRange(MOCK_REPO_URL, MOCK_COMMIT_RANGE), MOCK_COMMIT_RANGE);
t.is(linkifyCommitRange(MOCK_REPO_URL, MOCK_COMMIT_RANGE), `${MOCK_COMMIT_RANGE} ( ${MOCK_REPO_URL}/compare/${MOCK_COMMIT_RANGE} )`);
});

test('linkifyCommitRange correctly links commit range', verifyLinks, {
Expand Down
Loading