@flowscripter/dynamic-cli-framework 1.1.5 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/release-bun-library.yml +1 -0
- package/README/core-commands.md +40 -0
- package/README/core-service-providers.md +198 -0
- package/README/development.md +60 -0
- package/README/implementation-details.md +474 -0
- package/README/key-concepts.md +751 -0
- package/README.md +12 -1413
- package/bun.lock +20 -18
- package/index.ts +98 -1
- package/package.json +8 -7
- package/src/api/BaseCLIFeatureOptions.ts +10 -0
- package/src/api/CLIConfig.ts +5 -0
- package/src/api/RunResult.ts +16 -0
- package/src/api/argument/Argument.ts +40 -1
- package/src/api/argument/ArgumentValueTypes.ts +1 -1
- package/src/api/command/SubCommand.ts +1 -1
- package/src/api/service/ServiceProvider.ts +3 -3
- package/src/api/service/core/ArgumentPrompterService.ts +10 -0
- package/src/api/service/core/AsciiBannerGeneratorService.ts +44 -7
- package/src/api/service/core/CompletionService.ts +36 -0
- package/src/api/service/core/DataDumpGeneratorService.ts +27 -0
- package/src/api/service/core/ImagePrinterService.ts +26 -0
- package/src/api/service/core/KeyValueService.ts +22 -5
- package/src/api/service/core/PrinterService.ts +127 -1
- package/src/api/service/core/PrompterService.ts +49 -0
- package/src/api/service/core/SecretService.ts +27 -0
- package/src/api/service/core/ShutdownService.ts +17 -1
- package/src/api/service/core/Table.ts +85 -0
- package/src/api/service/core/TableGeneratorService.ts +38 -0
- package/src/api/service/core/TreePrinterService.ts +11 -0
- package/src/cli/BaseCLI.ts +116 -44
- package/src/cli/DefaultRuntimeCLI.ts +10 -18
- package/src/command/CompletionCommand.ts +179 -0
- package/src/command/MultiCommandCliHelpCommand.ts +20 -32
- package/src/command/SingleCommandCliHelpCommand.ts +10 -1
- package/src/launcher.ts +16 -58
- package/src/runtime/command/CommandValidator.ts +70 -6
- package/src/runtime/runner.ts +112 -31
- package/src/runtime/scanner.ts +18 -15
- package/src/runtime/values/argumentValueValidation.ts +93 -10
- package/src/runtime/values/globalCommandValuePopulation.ts +1 -1
- package/src/runtime/values/subCommandValuePopulation.ts +9 -8
- package/src/service/argumentPrompter/ArgumentPrompterServiceProvider.ts +34 -0
- package/src/service/argumentPrompter/DefaultArgumentPrompterService.ts +330 -0
- package/src/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.ts +1 -1
- package/src/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.ts +254 -17
- package/src/service/banner/BannerServiceProvider.ts +2 -2
- package/src/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.ts +85 -0
- package/src/service/chiselAsciiBannerGenerator/chisel.flf.json +3 -0
- package/src/service/completion/CompletionServiceProvider.ts +212 -0
- package/src/service/completion/DefaultCompletionService.ts +364 -0
- package/src/service/completion/shell/ShellHandler.ts +16 -0
- package/src/service/completion/shell/bash.ts +47 -0
- package/src/service/completion/shell/fish.ts +43 -0
- package/src/service/completion/shell/powershell.ts +66 -0
- package/src/service/completion/shell/zsh.ts +50 -0
- package/src/service/configuration/ConfigurationServiceProvider.ts +138 -42
- package/src/service/configuration/DefaultKeyValueService.ts +53 -7
- package/src/service/configuration/DefaultSecretService.ts +85 -0
- package/src/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.ts +41 -0
- package/src/service/dataDumpGenerator/DefaultDataDumpGeneratorService.ts +80 -0
- package/src/service/imagePrinter/DefaultImagePrinterService.ts +23 -0
- package/src/service/imagePrinter/ImagePrinterServiceProvider.ts +32 -0
- package/src/service/prettyPrinter/PrettyPrinterServiceProvider.ts +1 -1
- package/src/service/printer/DefaultPrinterService.ts +147 -27
- package/src/service/printer/PrinterServiceProvider.ts +7 -7
- package/src/service/printer/command/LogLevelCommand.ts +2 -1
- package/src/service/printer/command/NoHyperlinksCommand.ts +40 -0
- package/src/service/printer/terminal/Progress.ts +21 -4
- package/src/service/printer/terminal/Spinner.ts +32 -8
- package/src/service/printer/terminal/Theme.ts +1 -1
- package/src/service/prompter/DefaultPrompterService.ts +87 -0
- package/src/service/prompter/PrompterServiceProvider.ts +36 -0
- package/src/service/prompter/command/NoPromptCommand.ts +40 -0
- package/src/service/prompter/prompt/PromptContext.ts +47 -0
- package/src/service/prompter/prompt/promptAcknowledge.ts +28 -0
- package/src/service/prompter/prompt/promptMultiSelect.ts +99 -0
- package/src/service/prompter/prompt/promptOpenUrl.ts +97 -0
- package/src/service/prompter/prompt/promptSingleSelect.ts +102 -0
- package/src/service/prompter/prompt/promptText.ts +107 -0
- package/src/service/prompter/prompt/promptToggle.ts +28 -0
- package/src/service/shutdown/DefaultShutdownService.ts +13 -0
- package/src/service/shutdown/ShutdownServiceProvider.ts +28 -9
- package/src/service/shutdown/ShutdownState.ts +5 -0
- package/src/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.ts +1 -1
- package/src/service/tableGenerator/DefaultTableGeneratorService.ts +415 -0
- package/src/service/tableGenerator/TableGeneratorServiceProvider.ts +43 -0
- package/src/service/treePrinter/DefaultTreePrinterService.ts +49 -0
- package/src/service/treePrinter/TreePrinterServiceProvider.ts +40 -0
- package/src/terminal/Ansi.ts +27 -0
- package/src/terminal/ImageRenderer.ts +199 -0
- package/src/terminal/KeyReader.ts +23 -0
- package/src/terminal/PngDecoder.ts +143 -0
- package/src/{service/printer/terminal → terminal}/Styler.ts +3 -0
- package/src/{service/printer/terminal → terminal}/Terminal.ts +1 -0
- package/src/terminal/TtyKeyReader.ts +83 -0
- package/src/terminal/TtyStyler.ts +78 -0
- package/src/{service/printer/terminal → terminal}/TtyTerminal.ts +9 -1
- package/src/terminal/supportsHyperlinks.ts +110 -0
- package/src/util/configHelper.ts +2 -2
- package/src/util/envVarHelper.ts +2 -2
- package/src/util/helpHelper.ts +139 -123
- package/src/util/logger.ts +16 -14
- package/src/util/runnerHelper.ts +41 -0
- package/tests/cli/BaseCLI.test.ts +50 -54
- package/tests/command/CompletionCommand.test.ts +68 -0
- package/tests/command/UsageCommand.test.ts +3 -2
- package/tests/command/VersionCommand.test.ts +3 -2
- package/tests/fixtures/Context.ts +9 -2
- package/tests/fixtures/util.ts +1 -1
- package/tests/runtime/command/CommandValidator.test.ts +103 -0
- package/tests/runtime/parser.test.ts +9 -7
- package/tests/runtime/registry/DefaultServiceProviderRegistry.test.ts +3 -3
- package/tests/runtime/runner.test.ts +36 -0
- package/tests/runtime/values/argumentValueValidation.test.ts +215 -1
- package/tests/service/argumentPrompter/ArgumentPrompterServiceProvider.test.ts +47 -0
- package/tests/service/argumentPrompter/DefaultArgumentPrompterService.test.ts +754 -0
- package/tests/service/asciiBannerGenerator/AsciiBannerGeneratorServiceProvider.test.ts +5 -4
- package/tests/service/asciiBannerGenerator/DefaultAsciiBannerGeneratorService.test.ts +163 -3
- package/tests/service/asciiBannerGenerator/__snapshots__/DefaultAsciiBannerGeneratorService.test.ts.snap +1 -1
- package/tests/service/banner/BannerServiceProvider.test.ts +8 -4
- package/tests/service/chiselAsciiBannerGenerator/ChiselFontAsciiBannerGeneratorService.test.ts +52 -0
- package/tests/service/completion/CompletionServiceProvider.test.ts +404 -0
- package/tests/service/completion/DefaultCompletionService.test.ts +278 -0
- package/tests/service/completion/shell/bash.test.ts +73 -0
- package/tests/service/completion/shell/fish.test.ts +62 -0
- package/tests/service/completion/shell/powershell.test.ts +59 -0
- package/tests/service/completion/shell/zsh.test.ts +60 -0
- package/tests/service/configuration/ConfigurationServiceProvider.test.ts +24 -12
- package/tests/service/configuration/DefaultKeyValueService.test.ts +118 -16
- package/tests/service/configuration/DefaultSecretService.test.ts +148 -0
- package/tests/service/configuration/command/ConfigCommand.test.ts +29 -0
- package/tests/service/configuration/command/DumpConfigCommand.test.ts +60 -0
- package/tests/service/dataDumpGenerator/DataDumpGeneratorServiceProvider.test.ts +57 -0
- package/tests/service/dataDumpGenerator/DefaultDataDumpGeneratorService.test.ts +217 -0
- package/tests/service/imagePrinter/DefaultImagePrinterService.test.ts +96 -0
- package/tests/service/imagePrinter/ImagePrinterServiceProvider.test.ts +17 -0
- package/tests/service/prettyPrinter/DefaultPrettyPrinterService.test.ts +2 -2
- package/tests/service/prettyPrinter/PrettyPrinterServiceProvider.test.ts +5 -4
- package/tests/service/printer/DefaultPrinterService.test.ts +233 -2
- package/tests/service/printer/PrinterServiceProvider.test.ts +6 -5
- package/tests/service/printer/command/DarkModeCommand.test.ts +83 -0
- package/tests/service/printer/command/LogLevelCommand.test.ts +8 -6
- package/tests/service/printer/command/NoColorCommand.test.ts +83 -0
- package/tests/service/printer/command/NoHyperlinksCommand.test.ts +89 -0
- package/tests/service/printer/terminal/Progress.test.ts +64 -4
- package/tests/service/printer/terminal/Spinner.test.ts +44 -3
- package/tests/service/prompter/DefaultPrompterService.test.ts +615 -0
- package/tests/service/prompter/PrompterServiceProvider.test.ts +47 -0
- package/tests/service/prompter/command/NoPromptCommand.test.ts +58 -0
- package/tests/service/shutdown/ShutdownServiceProvider.test.ts +4 -2
- package/tests/service/syntaxHighlighter/DefaultSyntaxHighlighterService.test.ts +3 -2
- package/tests/service/syntaxHighlighter/SyntaxHighlighterServiceProvider.test.ts +5 -4
- package/tests/service/tableGenerator/DefaultTableGeneratorService.test.ts +363 -0
- package/tests/service/tableGenerator/TableGeneratorServiceProvider.test.ts +47 -0
- package/tests/service/treePrinter/DefaultTreePrinterService.test.ts +144 -0
- package/tests/service/treePrinter/TreePrinterServiceProvider.test.ts +55 -0
- package/tests/terminal/ImageRenderer.test.ts +161 -0
- package/tests/terminal/PngDecoder.test.ts +223 -0
- package/tests/terminal/supportsHyperlinks.test.ts +149 -0
- package/tests/util/configHelper.test.ts +4 -4
- package/tests/util/logger.test.ts +23 -1
- package/tsconfig.json +31 -0
- package/src/service/printer/terminal/Ansi.ts +0 -10
- package/src/service/printer/terminal/TtyStyler.ts +0 -39
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
} from "../../fixtures/util.ts";
|
|
9
9
|
import DefaultPrinterService from "../../../src/service/printer/DefaultPrinterService.ts";
|
|
10
10
|
import { Icon, Level } from "../../../src/api/service/core/PrinterService.ts";
|
|
11
|
-
import TtyTerminal from "../../../src/
|
|
12
|
-
import TtyStyler from "../../../src/
|
|
11
|
+
import TtyTerminal from "../../../src/terminal/TtyTerminal.ts";
|
|
12
|
+
import TtyStyler from "../../../src/terminal/TtyStyler.ts";
|
|
13
13
|
import StreamString from "../../fixtures/StreamString.ts";
|
|
14
14
|
|
|
15
15
|
describe("DefaultPrinterService tests", () => {
|
|
@@ -21,6 +21,7 @@ describe("DefaultPrinterService tests", () => {
|
|
|
21
21
|
dummyStderr.writableStream,
|
|
22
22
|
true,
|
|
23
23
|
true,
|
|
24
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
24
25
|
new TtyTerminal(dummyStderr.writeStream),
|
|
25
26
|
new TtyStyler(3),
|
|
26
27
|
);
|
|
@@ -39,6 +40,7 @@ describe("DefaultPrinterService tests", () => {
|
|
|
39
40
|
dummyStderr.writableStream,
|
|
40
41
|
true,
|
|
41
42
|
true,
|
|
43
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
42
44
|
new TtyTerminal(dummyStderr.writeStream),
|
|
43
45
|
new TtyStyler(3),
|
|
44
46
|
);
|
|
@@ -118,6 +120,7 @@ describe("DefaultPrinterService tests", () => {
|
|
|
118
120
|
dummyStderr.writableStream,
|
|
119
121
|
true,
|
|
120
122
|
true,
|
|
123
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
121
124
|
new TtyTerminal(dummyStderr.writeStream),
|
|
122
125
|
new TtyStyler(3),
|
|
123
126
|
);
|
|
@@ -185,6 +188,7 @@ describe("DefaultPrinterService tests", () => {
|
|
|
185
188
|
dummyStderr.writableStream,
|
|
186
189
|
true,
|
|
187
190
|
true,
|
|
191
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
188
192
|
new TtyTerminal(dummyStderr.writeStream),
|
|
189
193
|
new TtyStyler(3),
|
|
190
194
|
);
|
|
@@ -206,6 +210,7 @@ describe("DefaultPrinterService tests", () => {
|
|
|
206
210
|
dummyStderr.writableStream,
|
|
207
211
|
true,
|
|
208
212
|
true,
|
|
213
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
209
214
|
new TtyTerminal(dummyStderr.writeStream),
|
|
210
215
|
new TtyStyler(3),
|
|
211
216
|
);
|
|
@@ -224,6 +229,7 @@ describe("DefaultPrinterService tests", () => {
|
|
|
224
229
|
dummyStderr.writableStream,
|
|
225
230
|
true,
|
|
226
231
|
true,
|
|
232
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
227
233
|
new TtyTerminal(dummyStderr.writeStream),
|
|
228
234
|
new TtyStyler(3),
|
|
229
235
|
);
|
|
@@ -242,6 +248,7 @@ describe("DefaultPrinterService tests", () => {
|
|
|
242
248
|
dummyStderr.writableStream,
|
|
243
249
|
true,
|
|
244
250
|
true,
|
|
251
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
245
252
|
new TtyTerminal(dummyStderr.writeStream),
|
|
246
253
|
new TtyStyler(3),
|
|
247
254
|
);
|
|
@@ -268,6 +275,7 @@ describe("DefaultPrinterService tests", () => {
|
|
|
268
275
|
dummyStderr.writableStream,
|
|
269
276
|
true,
|
|
270
277
|
true,
|
|
278
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
271
279
|
new TtyTerminal(dummyStderr.writeStream),
|
|
272
280
|
new TtyStyler(3),
|
|
273
281
|
);
|
|
@@ -313,6 +321,7 @@ describe("DefaultPrinterService tests", () => {
|
|
|
313
321
|
dummyStderr.writableStream,
|
|
314
322
|
true,
|
|
315
323
|
true,
|
|
324
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
316
325
|
new TtyTerminal(dummyStderr.writeStream),
|
|
317
326
|
new TtyStyler(3),
|
|
318
327
|
);
|
|
@@ -341,6 +350,7 @@ describe("DefaultPrinterService tests", () => {
|
|
|
341
350
|
dummyStderr.writableStream,
|
|
342
351
|
true,
|
|
343
352
|
true,
|
|
353
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
344
354
|
new TtyTerminal(dummyStderr.writeStream),
|
|
345
355
|
new TtyStyler(3),
|
|
346
356
|
);
|
|
@@ -369,6 +379,7 @@ describe("DefaultPrinterService tests", () => {
|
|
|
369
379
|
dummyStderr.writableStream,
|
|
370
380
|
true,
|
|
371
381
|
true,
|
|
382
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
372
383
|
new TtyTerminal(dummyStderr.writeStream),
|
|
373
384
|
new TtyStyler(3),
|
|
374
385
|
);
|
|
@@ -434,6 +445,7 @@ describe("DefaultPrinterService tests", () => {
|
|
|
434
445
|
dummyStderr.writableStream,
|
|
435
446
|
true,
|
|
436
447
|
true,
|
|
448
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
437
449
|
new TtyTerminal(dummyStderr.writeStream),
|
|
438
450
|
new TtyStyler(3),
|
|
439
451
|
);
|
|
@@ -462,6 +474,7 @@ describe("DefaultPrinterService tests", () => {
|
|
|
462
474
|
dummyStderr.writableStream,
|
|
463
475
|
true,
|
|
464
476
|
true,
|
|
477
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
465
478
|
new TtyTerminal(dummyStderr.writeStream),
|
|
466
479
|
new TtyStyler(3),
|
|
467
480
|
);
|
|
@@ -494,4 +507,222 @@ describe("DefaultPrinterService tests", () => {
|
|
|
494
507
|
"bar1",
|
|
495
508
|
);
|
|
496
509
|
});
|
|
510
|
+
|
|
511
|
+
test("backgroundBlue with colorLevel 3 and colorEnabled produces background ANSI code", () => {
|
|
512
|
+
const dummyStdout = new StreamString();
|
|
513
|
+
const dummyStderr = new StreamString();
|
|
514
|
+
const printerService = new DefaultPrinterService(
|
|
515
|
+
dummyStdout.writableStream,
|
|
516
|
+
dummyStderr.writableStream,
|
|
517
|
+
true,
|
|
518
|
+
true,
|
|
519
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
520
|
+
new TtyTerminal(dummyStderr.writeStream),
|
|
521
|
+
new TtyStyler(3),
|
|
522
|
+
);
|
|
523
|
+
printerService.colorEnabled = true;
|
|
524
|
+
const result = printerService.backgroundBlue("text");
|
|
525
|
+
expect(result).toStartWith("\x1b[48;2;");
|
|
526
|
+
expect(result).toEndWith("\x1b[49m");
|
|
527
|
+
});
|
|
528
|
+
|
|
529
|
+
test("backgroundColor with colorLevel 3 produces background ANSI code", () => {
|
|
530
|
+
const dummyStdout = new StreamString();
|
|
531
|
+
const dummyStderr = new StreamString();
|
|
532
|
+
const printerService = new DefaultPrinterService(
|
|
533
|
+
dummyStdout.writableStream,
|
|
534
|
+
dummyStderr.writableStream,
|
|
535
|
+
true,
|
|
536
|
+
true,
|
|
537
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
538
|
+
new TtyTerminal(dummyStderr.writeStream),
|
|
539
|
+
new TtyStyler(3),
|
|
540
|
+
);
|
|
541
|
+
printerService.colorEnabled = true;
|
|
542
|
+
const result = printerService.backgroundColor("text", "#268bd2");
|
|
543
|
+
expect(result).toStartWith("\x1b[48;2;");
|
|
544
|
+
expect(result).toEndWith("\x1b[49m");
|
|
545
|
+
});
|
|
546
|
+
|
|
547
|
+
test("backgroundColor with invalid color throws", () => {
|
|
548
|
+
const dummyStdout = new StreamString();
|
|
549
|
+
const dummyStderr = new StreamString();
|
|
550
|
+
const printerService = new DefaultPrinterService(
|
|
551
|
+
dummyStdout.writableStream,
|
|
552
|
+
dummyStderr.writableStream,
|
|
553
|
+
true,
|
|
554
|
+
true,
|
|
555
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
556
|
+
new TtyTerminal(dummyStderr.writeStream),
|
|
557
|
+
new TtyStyler(3),
|
|
558
|
+
);
|
|
559
|
+
printerService.colorEnabled = true;
|
|
560
|
+
expect(() => printerService.backgroundColor("text", "invalid")).toThrow(
|
|
561
|
+
"Invalid color: invalid",
|
|
562
|
+
);
|
|
563
|
+
});
|
|
564
|
+
|
|
565
|
+
test("backgroundBlue with colorEnabled false returns plain text", () => {
|
|
566
|
+
const dummyStdout = new StreamString();
|
|
567
|
+
const dummyStderr = new StreamString();
|
|
568
|
+
const printerService = new DefaultPrinterService(
|
|
569
|
+
dummyStdout.writableStream,
|
|
570
|
+
dummyStderr.writableStream,
|
|
571
|
+
true,
|
|
572
|
+
true,
|
|
573
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
574
|
+
new TtyTerminal(dummyStderr.writeStream),
|
|
575
|
+
new TtyStyler(3),
|
|
576
|
+
);
|
|
577
|
+
printerService.colorEnabled = false;
|
|
578
|
+
const result = printerService.backgroundBlue("text");
|
|
579
|
+
expectStringEquals(result, "text");
|
|
580
|
+
});
|
|
581
|
+
|
|
582
|
+
test("all named background methods produce background ANSI codes when colorEnabled", () => {
|
|
583
|
+
const dummyStdout = new StreamString();
|
|
584
|
+
const dummyStderr = new StreamString();
|
|
585
|
+
const printerService = new DefaultPrinterService(
|
|
586
|
+
dummyStdout.writableStream,
|
|
587
|
+
dummyStderr.writableStream,
|
|
588
|
+
true,
|
|
589
|
+
true,
|
|
590
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
591
|
+
new TtyTerminal(dummyStderr.writeStream),
|
|
592
|
+
new TtyStyler(3),
|
|
593
|
+
);
|
|
594
|
+
printerService.colorEnabled = true;
|
|
595
|
+
for (
|
|
596
|
+
const method of [
|
|
597
|
+
"backgroundYellow",
|
|
598
|
+
"backgroundOrange",
|
|
599
|
+
"backgroundRed",
|
|
600
|
+
"backgroundMagenta",
|
|
601
|
+
"backgroundViolet",
|
|
602
|
+
"backgroundBlue",
|
|
603
|
+
"backgroundCyan",
|
|
604
|
+
"backgroundGreen",
|
|
605
|
+
] as const
|
|
606
|
+
) {
|
|
607
|
+
const result = printerService[method]("text");
|
|
608
|
+
expect(result).toStartWith("\x1b[48;2;");
|
|
609
|
+
expect(result).toEndWith("\x1b[49m");
|
|
610
|
+
}
|
|
611
|
+
});
|
|
612
|
+
|
|
613
|
+
test("all semantic background methods produce background ANSI codes when colorEnabled", () => {
|
|
614
|
+
const dummyStdout = new StreamString();
|
|
615
|
+
const dummyStderr = new StreamString();
|
|
616
|
+
const printerService = new DefaultPrinterService(
|
|
617
|
+
dummyStdout.writableStream,
|
|
618
|
+
dummyStderr.writableStream,
|
|
619
|
+
true,
|
|
620
|
+
true,
|
|
621
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
622
|
+
new TtyTerminal(dummyStderr.writeStream),
|
|
623
|
+
new TtyStyler(3),
|
|
624
|
+
);
|
|
625
|
+
printerService.colorEnabled = true;
|
|
626
|
+
for (
|
|
627
|
+
const method of [
|
|
628
|
+
"backgroundPrimary",
|
|
629
|
+
"backgroundSecondary",
|
|
630
|
+
"backgroundEmphasised",
|
|
631
|
+
"backgroundSelected",
|
|
632
|
+
] as const
|
|
633
|
+
) {
|
|
634
|
+
const result = printerService[method]("text");
|
|
635
|
+
expect(result).toStartWith("\x1b[48;2;");
|
|
636
|
+
expect(result).toEndWith("\x1b[49m");
|
|
637
|
+
}
|
|
638
|
+
});
|
|
639
|
+
|
|
640
|
+
test("hyperlinksEnabled defaults to true", () => {
|
|
641
|
+
const dummyStdout = new StreamString();
|
|
642
|
+
const dummyStderr = new StreamString();
|
|
643
|
+
const printerService = new DefaultPrinterService(
|
|
644
|
+
dummyStdout.writableStream,
|
|
645
|
+
dummyStderr.writableStream,
|
|
646
|
+
true,
|
|
647
|
+
true,
|
|
648
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
649
|
+
new TtyTerminal(dummyStderr.writeStream),
|
|
650
|
+
new TtyStyler(3),
|
|
651
|
+
);
|
|
652
|
+
expect(printerService.hyperlinksEnabled).toBeTrue();
|
|
653
|
+
});
|
|
654
|
+
|
|
655
|
+
test("hyperlink with hyperlinksEnabled returns OSC 8 wrapped text", () => {
|
|
656
|
+
const dummyStdout = new StreamString();
|
|
657
|
+
const dummyStderr = new StreamString();
|
|
658
|
+
const printerService = new DefaultPrinterService(
|
|
659
|
+
dummyStdout.writableStream,
|
|
660
|
+
dummyStderr.writableStream,
|
|
661
|
+
true,
|
|
662
|
+
true,
|
|
663
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
664
|
+
new TtyTerminal(dummyStderr.writeStream),
|
|
665
|
+
new TtyStyler(3),
|
|
666
|
+
);
|
|
667
|
+
const result = printerService.hyperlink(
|
|
668
|
+
"click here",
|
|
669
|
+
"https://example.com",
|
|
670
|
+
);
|
|
671
|
+
expect(result).toEqual(
|
|
672
|
+
"\x1b]8;;\x68ttps://example.com\x07click here\x1b]8;;\x07",
|
|
673
|
+
);
|
|
674
|
+
});
|
|
675
|
+
|
|
676
|
+
test("hyperlink with hyperlinksEnabled false returns url", () => {
|
|
677
|
+
const dummyStdout = new StreamString();
|
|
678
|
+
const dummyStderr = new StreamString();
|
|
679
|
+
const printerService = new DefaultPrinterService(
|
|
680
|
+
dummyStdout.writableStream,
|
|
681
|
+
dummyStderr.writableStream,
|
|
682
|
+
true,
|
|
683
|
+
true,
|
|
684
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
685
|
+
new TtyTerminal(dummyStderr.writeStream),
|
|
686
|
+
new TtyStyler(3),
|
|
687
|
+
);
|
|
688
|
+
printerService.hyperlinksEnabled = false;
|
|
689
|
+
const result = printerService.hyperlink(
|
|
690
|
+
"click here",
|
|
691
|
+
"https://example.com",
|
|
692
|
+
);
|
|
693
|
+
expect(result).toEqual("click here: https://example.com");
|
|
694
|
+
});
|
|
695
|
+
|
|
696
|
+
test("all background methods return plain text when colorEnabled is false", () => {
|
|
697
|
+
const dummyStdout = new StreamString();
|
|
698
|
+
const dummyStderr = new StreamString();
|
|
699
|
+
const printerService = new DefaultPrinterService(
|
|
700
|
+
dummyStdout.writableStream,
|
|
701
|
+
dummyStderr.writableStream,
|
|
702
|
+
true,
|
|
703
|
+
true,
|
|
704
|
+
new TtyTerminal(dummyStdout.writeStream),
|
|
705
|
+
new TtyTerminal(dummyStderr.writeStream),
|
|
706
|
+
new TtyStyler(3),
|
|
707
|
+
);
|
|
708
|
+
printerService.colorEnabled = false;
|
|
709
|
+
for (
|
|
710
|
+
const method of [
|
|
711
|
+
"backgroundPrimary",
|
|
712
|
+
"backgroundSecondary",
|
|
713
|
+
"backgroundEmphasised",
|
|
714
|
+
"backgroundSelected",
|
|
715
|
+
"backgroundYellow",
|
|
716
|
+
"backgroundOrange",
|
|
717
|
+
"backgroundRed",
|
|
718
|
+
"backgroundMagenta",
|
|
719
|
+
"backgroundViolet",
|
|
720
|
+
"backgroundBlue",
|
|
721
|
+
"backgroundCyan",
|
|
722
|
+
"backgroundGreen",
|
|
723
|
+
] as const
|
|
724
|
+
) {
|
|
725
|
+
expectStringEquals(printerService[method]("text"), "text");
|
|
726
|
+
}
|
|
727
|
+
});
|
|
497
728
|
});
|
|
@@ -4,13 +4,13 @@ import { getCLIConfig } from "../../fixtures/CLIConfig.ts";
|
|
|
4
4
|
import PrinterServiceProvider from "../../../src/service/printer/PrinterServiceProvider.ts";
|
|
5
5
|
import { SHUTDOWN_SERVICE_ID } from "../../../src/api/service/core/ShutdownService.ts";
|
|
6
6
|
import DefaultShutdownService from "../../../src/service/shutdown/DefaultShutdownService.ts";
|
|
7
|
-
import TtyTerminal from "../../../src/
|
|
7
|
+
import TtyTerminal from "../../../src/terminal/TtyTerminal.ts";
|
|
8
8
|
import StreamString from "../../fixtures/StreamString.ts";
|
|
9
|
-
import TtyStyler from "../../../src/
|
|
9
|
+
import TtyStyler from "../../../src/terminal/TtyStyler.ts";
|
|
10
10
|
import DefaultPrinterService from "../../../src/service/printer/DefaultPrinterService.ts";
|
|
11
11
|
|
|
12
12
|
describe("PrinterServiceProvider tests", () => {
|
|
13
|
-
test("PrinterServiceProvider
|
|
13
|
+
test("PrinterServiceProvider getServiceInfo works", async () => {
|
|
14
14
|
const streamString = new StreamString();
|
|
15
15
|
const printerService = new DefaultPrinterService(
|
|
16
16
|
streamString.writableStream,
|
|
@@ -18,6 +18,7 @@ describe("PrinterServiceProvider tests", () => {
|
|
|
18
18
|
true,
|
|
19
19
|
true,
|
|
20
20
|
new TtyTerminal(streamString.writeStream),
|
|
21
|
+
new TtyTerminal(streamString.writeStream),
|
|
21
22
|
new TtyStyler(3),
|
|
22
23
|
);
|
|
23
24
|
|
|
@@ -33,7 +34,7 @@ describe("PrinterServiceProvider tests", () => {
|
|
|
33
34
|
new DefaultShutdownService(),
|
|
34
35
|
);
|
|
35
36
|
|
|
36
|
-
const serviceInfo = await printerServiceProvider.
|
|
37
|
-
expect(serviceInfo.commands.length).toEqual(
|
|
37
|
+
const serviceInfo = await printerServiceProvider.getServiceInfo(cliConfig);
|
|
38
|
+
expect(serviceInfo.commands.length).toEqual(4);
|
|
38
39
|
});
|
|
39
40
|
});
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { describe, expect, test } from "bun:test";
|
|
2
|
+
import DefaultContext from "../../../../src/runtime/DefaultContext.ts";
|
|
3
|
+
import DarkModeCommand from "../../../../src/service/printer/command/DarkModeCommand.ts";
|
|
4
|
+
import { getCLIConfig } from "../../../fixtures/CLIConfig.ts";
|
|
5
|
+
import PrinterServiceProvider from "../../../../src/service/printer/PrinterServiceProvider.ts";
|
|
6
|
+
import ShutdownServiceProvider from "../../../../src/service/shutdown/ShutdownServiceProvider.ts";
|
|
7
|
+
import { SHUTDOWN_SERVICE_ID } from "../../../../src/api/service/core/ShutdownService.ts";
|
|
8
|
+
import TtyTerminal from "../../../../src/terminal/TtyTerminal.ts";
|
|
9
|
+
import StreamString from "../../../fixtures/StreamString.ts";
|
|
10
|
+
import DefaultPrinterService from "../../../../src/service/printer/DefaultPrinterService.ts";
|
|
11
|
+
import TtyStyler from "../../../../src/terminal/TtyStyler.ts";
|
|
12
|
+
|
|
13
|
+
describe("DarkModeCommand tests", () => {
|
|
14
|
+
test("execute sets darkMode to true when argumentValue is true", async () => {
|
|
15
|
+
const streamString = new StreamString();
|
|
16
|
+
const printerService = new DefaultPrinterService(
|
|
17
|
+
streamString.writableStream,
|
|
18
|
+
streamString.writableStream,
|
|
19
|
+
true,
|
|
20
|
+
true,
|
|
21
|
+
new TtyTerminal(streamString.writeStream),
|
|
22
|
+
new TtyTerminal(streamString.writeStream),
|
|
23
|
+
new TtyStyler(3),
|
|
24
|
+
);
|
|
25
|
+
const printerServiceProvider = new PrinterServiceProvider(
|
|
26
|
+
100,
|
|
27
|
+
printerService,
|
|
28
|
+
);
|
|
29
|
+
const cliConfig = getCLIConfig();
|
|
30
|
+
const context = new DefaultContext(cliConfig);
|
|
31
|
+
|
|
32
|
+
const shutdownServiceProvider = new ShutdownServiceProvider(1);
|
|
33
|
+
const shutdownService =
|
|
34
|
+
(await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
|
|
35
|
+
context.addServiceInstance(SHUTDOWN_SERVICE_ID, shutdownService);
|
|
36
|
+
|
|
37
|
+
await printerServiceProvider.getServiceInfo(cliConfig);
|
|
38
|
+
|
|
39
|
+
const command = new DarkModeCommand(printerServiceProvider, 100);
|
|
40
|
+
|
|
41
|
+
expect(printerServiceProvider.printerService!.darkMode).toEqual(false);
|
|
42
|
+
|
|
43
|
+
await command.execute(context, true);
|
|
44
|
+
|
|
45
|
+
expect(printerServiceProvider.printerService!.darkMode).toEqual(true);
|
|
46
|
+
|
|
47
|
+
await ShutdownServiceProvider.shutdown();
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
test("execute sets darkMode to false when argumentValue is false", async () => {
|
|
51
|
+
const streamString = new StreamString();
|
|
52
|
+
const printerService = new DefaultPrinterService(
|
|
53
|
+
streamString.writableStream,
|
|
54
|
+
streamString.writableStream,
|
|
55
|
+
true,
|
|
56
|
+
true,
|
|
57
|
+
new TtyTerminal(streamString.writeStream),
|
|
58
|
+
new TtyTerminal(streamString.writeStream),
|
|
59
|
+
new TtyStyler(3),
|
|
60
|
+
);
|
|
61
|
+
const printerServiceProvider = new PrinterServiceProvider(
|
|
62
|
+
100,
|
|
63
|
+
printerService,
|
|
64
|
+
);
|
|
65
|
+
const cliConfig = getCLIConfig();
|
|
66
|
+
const context = new DefaultContext(cliConfig);
|
|
67
|
+
|
|
68
|
+
const shutdownServiceProvider = new ShutdownServiceProvider(1);
|
|
69
|
+
const shutdownService =
|
|
70
|
+
(await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
|
|
71
|
+
context.addServiceInstance(SHUTDOWN_SERVICE_ID, shutdownService);
|
|
72
|
+
|
|
73
|
+
await printerServiceProvider.getServiceInfo(cliConfig);
|
|
74
|
+
|
|
75
|
+
const command = new DarkModeCommand(printerServiceProvider, 100);
|
|
76
|
+
|
|
77
|
+
await command.execute(context, false);
|
|
78
|
+
|
|
79
|
+
expect(printerServiceProvider.printerService!.darkMode).toEqual(false);
|
|
80
|
+
|
|
81
|
+
await ShutdownServiceProvider.shutdown();
|
|
82
|
+
});
|
|
83
|
+
});
|
|
@@ -6,10 +6,10 @@ import PrinterServiceProvider from "../../../../src/service/printer/PrinterServi
|
|
|
6
6
|
import { Level } from "../../../../src/api/service/core/PrinterService.ts";
|
|
7
7
|
import ShutdownServiceProvider from "../../../../src/service/shutdown/ShutdownServiceProvider.ts";
|
|
8
8
|
import { SHUTDOWN_SERVICE_ID } from "../../../../src/api/service/core/ShutdownService.ts";
|
|
9
|
-
import TtyTerminal from "../../../../src/
|
|
9
|
+
import TtyTerminal from "../../../../src/terminal/TtyTerminal.ts";
|
|
10
10
|
import StreamString from "../../../fixtures/StreamString.ts";
|
|
11
11
|
import DefaultPrinterService from "../../../../src/service/printer/DefaultPrinterService.ts";
|
|
12
|
-
import TtyStyler from "../../../../src/
|
|
12
|
+
import TtyStyler from "../../../../src/terminal/TtyStyler.ts";
|
|
13
13
|
|
|
14
14
|
describe("LogLevelCommand tests", () => {
|
|
15
15
|
test("LogLevelCommand works", async () => {
|
|
@@ -20,6 +20,7 @@ describe("LogLevelCommand tests", () => {
|
|
|
20
20
|
true,
|
|
21
21
|
true,
|
|
22
22
|
new TtyTerminal(streamString.writeStream),
|
|
23
|
+
new TtyTerminal(streamString.writeStream),
|
|
23
24
|
new TtyStyler(3),
|
|
24
25
|
);
|
|
25
26
|
const printerServiceProvider = new PrinterServiceProvider(
|
|
@@ -30,12 +31,13 @@ describe("LogLevelCommand tests", () => {
|
|
|
30
31
|
const context = new DefaultContext(cliConfig);
|
|
31
32
|
|
|
32
33
|
const shutdownServiceProvider = new ShutdownServiceProvider(1);
|
|
33
|
-
const shutdownService =
|
|
34
|
-
.
|
|
34
|
+
const shutdownService =
|
|
35
|
+
(await shutdownServiceProvider.getServiceInfo(cliConfig))
|
|
36
|
+
.service!;
|
|
35
37
|
|
|
36
38
|
context.addServiceInstance(SHUTDOWN_SERVICE_ID, shutdownService);
|
|
37
39
|
|
|
38
|
-
await printerServiceProvider.
|
|
40
|
+
await printerServiceProvider.getServiceInfo(cliConfig);
|
|
39
41
|
|
|
40
42
|
const logLevelCommand = new LogLevelCommand(printerServiceProvider, 100);
|
|
41
43
|
|
|
@@ -45,7 +47,7 @@ describe("LogLevelCommand tests", () => {
|
|
|
45
47
|
Level.INFO,
|
|
46
48
|
);
|
|
47
49
|
|
|
48
|
-
await logLevelCommand.execute(context, "
|
|
50
|
+
await logLevelCommand.execute(context, "eRror");
|
|
49
51
|
|
|
50
52
|
expect(
|
|
51
53
|
printerServiceProvider.printerService!.getLevel(),
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { describe, expect, test } from "bun:test";
|
|
2
|
+
import DefaultContext from "../../../../src/runtime/DefaultContext.ts";
|
|
3
|
+
import NoColorCommand from "../../../../src/service/printer/command/NoColorCommand.ts";
|
|
4
|
+
import { getCLIConfig } from "../../../fixtures/CLIConfig.ts";
|
|
5
|
+
import PrinterServiceProvider from "../../../../src/service/printer/PrinterServiceProvider.ts";
|
|
6
|
+
import ShutdownServiceProvider from "../../../../src/service/shutdown/ShutdownServiceProvider.ts";
|
|
7
|
+
import { SHUTDOWN_SERVICE_ID } from "../../../../src/api/service/core/ShutdownService.ts";
|
|
8
|
+
import TtyTerminal from "../../../../src/terminal/TtyTerminal.ts";
|
|
9
|
+
import StreamString from "../../../fixtures/StreamString.ts";
|
|
10
|
+
import DefaultPrinterService from "../../../../src/service/printer/DefaultPrinterService.ts";
|
|
11
|
+
import TtyStyler from "../../../../src/terminal/TtyStyler.ts";
|
|
12
|
+
|
|
13
|
+
describe("NoColorCommand tests", () => {
|
|
14
|
+
test("execute sets colorEnabled to false when argumentValue is true", async () => {
|
|
15
|
+
const streamString = new StreamString();
|
|
16
|
+
const printerService = new DefaultPrinterService(
|
|
17
|
+
streamString.writableStream,
|
|
18
|
+
streamString.writableStream,
|
|
19
|
+
true,
|
|
20
|
+
true,
|
|
21
|
+
new TtyTerminal(streamString.writeStream),
|
|
22
|
+
new TtyTerminal(streamString.writeStream),
|
|
23
|
+
new TtyStyler(3),
|
|
24
|
+
);
|
|
25
|
+
const printerServiceProvider = new PrinterServiceProvider(
|
|
26
|
+
100,
|
|
27
|
+
printerService,
|
|
28
|
+
);
|
|
29
|
+
const cliConfig = getCLIConfig();
|
|
30
|
+
const context = new DefaultContext(cliConfig);
|
|
31
|
+
|
|
32
|
+
const shutdownServiceProvider = new ShutdownServiceProvider(1);
|
|
33
|
+
const shutdownService =
|
|
34
|
+
(await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
|
|
35
|
+
context.addServiceInstance(SHUTDOWN_SERVICE_ID, shutdownService);
|
|
36
|
+
|
|
37
|
+
await printerServiceProvider.getServiceInfo(cliConfig);
|
|
38
|
+
|
|
39
|
+
const command = new NoColorCommand(printerServiceProvider, 100);
|
|
40
|
+
|
|
41
|
+
expect(printerServiceProvider.printerService!.colorEnabled).toEqual(true);
|
|
42
|
+
|
|
43
|
+
await command.execute(context, true);
|
|
44
|
+
|
|
45
|
+
expect(printerServiceProvider.printerService!.colorEnabled).toEqual(false);
|
|
46
|
+
|
|
47
|
+
await ShutdownServiceProvider.shutdown();
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
test("execute sets colorEnabled to true when argumentValue is false", async () => {
|
|
51
|
+
const streamString = new StreamString();
|
|
52
|
+
const printerService = new DefaultPrinterService(
|
|
53
|
+
streamString.writableStream,
|
|
54
|
+
streamString.writableStream,
|
|
55
|
+
true,
|
|
56
|
+
true,
|
|
57
|
+
new TtyTerminal(streamString.writeStream),
|
|
58
|
+
new TtyTerminal(streamString.writeStream),
|
|
59
|
+
new TtyStyler(3),
|
|
60
|
+
);
|
|
61
|
+
const printerServiceProvider = new PrinterServiceProvider(
|
|
62
|
+
100,
|
|
63
|
+
printerService,
|
|
64
|
+
);
|
|
65
|
+
const cliConfig = getCLIConfig();
|
|
66
|
+
const context = new DefaultContext(cliConfig);
|
|
67
|
+
|
|
68
|
+
const shutdownServiceProvider = new ShutdownServiceProvider(1);
|
|
69
|
+
const shutdownService =
|
|
70
|
+
(await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
|
|
71
|
+
context.addServiceInstance(SHUTDOWN_SERVICE_ID, shutdownService);
|
|
72
|
+
|
|
73
|
+
await printerServiceProvider.getServiceInfo(cliConfig);
|
|
74
|
+
|
|
75
|
+
const command = new NoColorCommand(printerServiceProvider, 100);
|
|
76
|
+
|
|
77
|
+
await command.execute(context, false);
|
|
78
|
+
|
|
79
|
+
expect(printerServiceProvider.printerService!.colorEnabled).toEqual(true);
|
|
80
|
+
|
|
81
|
+
await ShutdownServiceProvider.shutdown();
|
|
82
|
+
});
|
|
83
|
+
});
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { describe, expect, test } from "bun:test";
|
|
2
|
+
import DefaultContext from "../../../../src/runtime/DefaultContext.ts";
|
|
3
|
+
import NoHyperlinksCommand from "../../../../src/service/printer/command/NoHyperlinksCommand.ts";
|
|
4
|
+
import { getCLIConfig } from "../../../fixtures/CLIConfig.ts";
|
|
5
|
+
import PrinterServiceProvider from "../../../../src/service/printer/PrinterServiceProvider.ts";
|
|
6
|
+
import ShutdownServiceProvider from "../../../../src/service/shutdown/ShutdownServiceProvider.ts";
|
|
7
|
+
import { SHUTDOWN_SERVICE_ID } from "../../../../src/api/service/core/ShutdownService.ts";
|
|
8
|
+
import TtyTerminal from "../../../../src/terminal/TtyTerminal.ts";
|
|
9
|
+
import StreamString from "../../../fixtures/StreamString.ts";
|
|
10
|
+
import DefaultPrinterService from "../../../../src/service/printer/DefaultPrinterService.ts";
|
|
11
|
+
import TtyStyler from "../../../../src/terminal/TtyStyler.ts";
|
|
12
|
+
|
|
13
|
+
describe("NoHyperlinksCommand tests", () => {
|
|
14
|
+
test("execute sets hyperlinksEnabled to false when argumentValue is true", async () => {
|
|
15
|
+
const streamString = new StreamString();
|
|
16
|
+
const printerService = new DefaultPrinterService(
|
|
17
|
+
streamString.writableStream,
|
|
18
|
+
streamString.writableStream,
|
|
19
|
+
true,
|
|
20
|
+
true,
|
|
21
|
+
new TtyTerminal(streamString.writeStream),
|
|
22
|
+
new TtyTerminal(streamString.writeStream),
|
|
23
|
+
new TtyStyler(3),
|
|
24
|
+
);
|
|
25
|
+
const printerServiceProvider = new PrinterServiceProvider(
|
|
26
|
+
100,
|
|
27
|
+
printerService,
|
|
28
|
+
);
|
|
29
|
+
const cliConfig = getCLIConfig();
|
|
30
|
+
const context = new DefaultContext(cliConfig);
|
|
31
|
+
|
|
32
|
+
const shutdownServiceProvider = new ShutdownServiceProvider(1);
|
|
33
|
+
const shutdownService =
|
|
34
|
+
(await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
|
|
35
|
+
context.addServiceInstance(SHUTDOWN_SERVICE_ID, shutdownService);
|
|
36
|
+
|
|
37
|
+
await printerServiceProvider.getServiceInfo(cliConfig);
|
|
38
|
+
|
|
39
|
+
const command = new NoHyperlinksCommand(printerServiceProvider, 100);
|
|
40
|
+
|
|
41
|
+
expect(printerServiceProvider.printerService!.hyperlinksEnabled).toEqual(
|
|
42
|
+
true,
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
await command.execute(context, true);
|
|
46
|
+
|
|
47
|
+
expect(printerServiceProvider.printerService!.hyperlinksEnabled).toEqual(
|
|
48
|
+
false,
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
await ShutdownServiceProvider.shutdown();
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test("execute sets hyperlinksEnabled to true when argumentValue is false", async () => {
|
|
55
|
+
const streamString = new StreamString();
|
|
56
|
+
const printerService = new DefaultPrinterService(
|
|
57
|
+
streamString.writableStream,
|
|
58
|
+
streamString.writableStream,
|
|
59
|
+
true,
|
|
60
|
+
true,
|
|
61
|
+
new TtyTerminal(streamString.writeStream),
|
|
62
|
+
new TtyTerminal(streamString.writeStream),
|
|
63
|
+
new TtyStyler(3),
|
|
64
|
+
);
|
|
65
|
+
const printerServiceProvider = new PrinterServiceProvider(
|
|
66
|
+
100,
|
|
67
|
+
printerService,
|
|
68
|
+
);
|
|
69
|
+
const cliConfig = getCLIConfig();
|
|
70
|
+
const context = new DefaultContext(cliConfig);
|
|
71
|
+
|
|
72
|
+
const shutdownServiceProvider = new ShutdownServiceProvider(1);
|
|
73
|
+
const shutdownService =
|
|
74
|
+
(await shutdownServiceProvider.getServiceInfo(cliConfig)).service!;
|
|
75
|
+
context.addServiceInstance(SHUTDOWN_SERVICE_ID, shutdownService);
|
|
76
|
+
|
|
77
|
+
await printerServiceProvider.getServiceInfo(cliConfig);
|
|
78
|
+
|
|
79
|
+
const command = new NoHyperlinksCommand(printerServiceProvider, 100);
|
|
80
|
+
|
|
81
|
+
await command.execute(context, false);
|
|
82
|
+
|
|
83
|
+
expect(printerServiceProvider.printerService!.hyperlinksEnabled).toEqual(
|
|
84
|
+
true,
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
await ShutdownServiceProvider.shutdown();
|
|
88
|
+
});
|
|
89
|
+
});
|