Skip to content

Commit

Permalink
feat: options.stripAnsi
Browse files Browse the repository at this point in the history
  • Loading branch information
bluelovers committed Jun 5, 2021
1 parent fc20582 commit 7485bb2
Show file tree
Hide file tree
Showing 9 changed files with 77 additions and 13 deletions.
2 changes: 1 addition & 1 deletion packages/@yarn-tool/semver-diff/lib/colorize.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/@yarn-tool/semver-diff/lib/colorize.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export function colorizeDiff(from: string,
options?: IOptionsParseVersionsDiff,
): string
{
if (options?.chalk)
if (options?.chalk || options?.stripAnsi)
{
return colorizeDiffCore(from, to, options as any)
}
Expand Down
11 changes: 7 additions & 4 deletions packages/@yarn-tool/semver-diff/lib/core.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 9 additions & 4 deletions packages/@yarn-tool/semver-diff/lib/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ export function parseVersionsDiffCore(from: string, to: string, options?: IOptio
export function colorizeDiffCore(from: string, to: string, options?: ITSRequireAtLeastOne<IOptionsParseVersionsDiff, 'chalk'>,
): string
{
const {
let {
leadingWildcard,
result,
middot,
Expand All @@ -58,12 +58,17 @@ export function colorizeDiffCore(from: string, to: string, options?: ITSRequireA
comp,
} = parseVersionsDiffCore(from, to, options)

const { chalk } = options;
if (options.stripAnsi !== true)
{
const { chalk } = options;

// @ts-ignore
resultAppend = (comp ? chalk[color](resultAppend) : chalk(resultAppend))
}

return leadingWildcard +
result +
middot +
// @ts-ignore
(comp ? chalk[color](resultAppend) : chalk(resultAppend))
resultAppend
}

1 change: 1 addition & 0 deletions packages/@yarn-tool/semver-diff/lib/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,5 @@ export interface IOptionsParseVersionsDiffPlus {
}
export interface IOptionsParseVersionsDiff extends IOptionsParseVersionsDiffPlus {
_colors?: [IStylesColorNames, IStylesColorNames, IStylesColorNames];
stripAnsi?: boolean;
}
2 changes: 2 additions & 0 deletions packages/@yarn-tool/semver-diff/lib/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,6 @@ export interface IOptionsParseVersionsDiffPlus
export interface IOptionsParseVersionsDiff extends IOptionsParseVersionsDiffPlus
{
_colors?: [IStylesColorNames, IStylesColorNames, IStylesColorNames],

stripAnsi?: boolean,
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { colorizeDiff, IOptionsParseVersionsDiff } from '@yarn-tool/semver-diff/
import { createDependencyTable } from '@yarn-tool/table/lib/core';
import { IChalk } from 'debug-color2/index'
import { console, chalkByConsoleMaybe } from 'debug-color2/index';
import stripAnsi from 'strip-ansi';

export function buildDiffTable(diff: Diff<IComputedPackage, IComputedPackage>[], options?: IOptionsParseVersionsDiff): string
{
Expand Down Expand Up @@ -83,8 +84,15 @@ export function buildDiffTable(diff: Diff<IComputedPackage, IComputedPackage>[],
})
;

table.push(...Object.values(formatedDiff))
table.push(...Object.values(formatedDiff));

return _ok ? table.toString() : '';
let output = _ok ? table.toString() : '';

if (options?.stripAnsi === true)
{
output = stripAnsi(output);
}

return _ok ? output : '';
}

37 changes: 37 additions & 0 deletions packages/@yarn-tool/yarnlock-diff/test/yarnLockDiff.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { join } from 'path';
import FastGlob from '@bluelovers/fast-glob';
import { readFileSync } from 'fs';
import { buildDiff } from '../lib/diff-service';
import yarnLockDiff from '../index';

describe(`yarnLockDiff`, () =>
{
const __res = join(__dirname, 'fixtures');

const files = FastGlob.sync([
'*.lock',
], {
cwd: join(__res, 'a'),
})
;

files.forEach(file =>
{

test(file, () =>
{
const yarnlock_old = readFileSync(join(__res, 'a', file));
const yarnlock_new = readFileSync(join(__res, 'b', file));

let actual = yarnLockDiff(yarnlock_old, yarnlock_new, {
stripAnsi: true,
});

expect(actual).toMatchSnapshot();

});

})
;

})

0 comments on commit 7485bb2

Please sign in to comment.