Skip to content

Commit 51b314e

Browse files
committed
add DifferenceFormatterInterface and inject different implementations for actual usage and for tests
1 parent 89d627b commit 51b314e

13 files changed

Lines changed: 186 additions & 123 deletions
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { DifferenceFormatterInterface } from '../formatters/index.js';
2+
3+
class ChalkDifferenceFormatter implements DifferenceFormatterInterface {
4+
public sourceOnly = (text: string | number): string => {
5+
return `<green>${text}</green>`;
6+
};
7+
8+
public targetOnly = (text: string | number): string => {
9+
return `<red>${text}</red>`;
10+
};
11+
12+
public different = (text: string | number): string => {
13+
return `<yellow>${text}</yellow>`;
14+
};
15+
}
16+
export default ChalkDifferenceFormatter;
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { LoggerInterface } from '../logging/index.js';
22

3-
class InMemoryLogger implements LoggerInterface {
3+
class TestLogger implements LoggerInterface {
44
private _messages: string[] = [];
55
private _singleLineMessages: string[] = [];
66

@@ -30,4 +30,4 @@ class InMemoryLogger implements LoggerInterface {
3030
}
3131
}
3232

33-
export default InMemoryLogger;
33+
export default TestLogger;

src/__tests__/colors.ts

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/__tests__/compare.test.ts

Lines changed: 95 additions & 94 deletions
Large diffs are not rendered by default.

src/colors/colors.ts

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/colors/index.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/compareDirectories/compareDirectories.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { compareDirectories as compareDirectoriesUtil, FsEntry } from '@aminzer/dir-diff';
22
import { CompareDirectoriesArgs, CmdArgs } from '../cmd/index.js';
3+
import DifferenceFormatterInterface from '../formatters/DifferenceFormatterInterface.js';
34
import { DifferenceType } from '../constants/index.js';
45
import { LoggerInterface } from '../logging/index.js';
56
import { ComparisonProgress } from '../models/index.js';
@@ -20,9 +21,11 @@ const {
2021
const compareDirectories = async ({
2122
cmdArgs,
2223
logger,
24+
differenceFormatter,
2325
}: {
2426
cmdArgs: CmdArgs;
2527
logger: LoggerInterface;
28+
differenceFormatter: DifferenceFormatterInterface;
2629
}): Promise<void> => {
2730
const sourceDirPath = cmdArgs[SOURCE_DIR_PATH] as string;
2831
const targetDirPath = cmdArgs[TARGET_DIR_PATH] as string;
@@ -44,7 +47,7 @@ const compareDirectories = async ({
4447
logCmdArgs({ cmdArgs, logger });
4548
logger.log('');
4649

47-
const comparisonProgress = new ComparisonProgress({ logger });
50+
const comparisonProgress = new ComparisonProgress({ logger, differenceFormatter });
4851

4952
const compareDirectoriesOpts = {
5053
onSourceOnlyEntry: skipSourceOnly
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import chalk from 'chalk';
2+
import DifferenceFormatterInterface from './DifferenceFormatterInterface.js';
3+
4+
class ChalkDifferenceFormatter implements DifferenceFormatterInterface {
5+
public sourceOnly = (text: string | number): string => {
6+
return chalk.green(text);
7+
};
8+
9+
public targetOnly = (text: string | number): string => {
10+
return chalk.red(text);
11+
};
12+
13+
public different = (text: string | number): string => {
14+
return chalk.yellow(text);
15+
};
16+
}
17+
export default ChalkDifferenceFormatter;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
interface DifferenceFormatterInterface {
2+
sourceOnly: (text: string | number) => string;
3+
4+
targetOnly: (text: string | number) => string;
5+
6+
different: (text: string | number) => string;
7+
}
8+
9+
export default DifferenceFormatterInterface;

src/formatters/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { default as ChalkDifferenceFormatter } from './ChalkDifferenceFormatter.js';
2+
export { default as DifferenceFormatterInterface } from './DifferenceFormatterInterface.js';

0 commit comments

Comments
 (0)