From a642c3a1f6fb867360d79415f8eb1fd147e63d50 Mon Sep 17 00:00:00 2001 From: Jean-Yves Moyen Date: Thu, 25 Jul 2024 15:20:37 +0200 Subject: [PATCH] Invoke chalk directly (#58) --- .changeset/khaki-lamps-exercise.md | 5 ++++ config/validate-structure.json | 1 + packages/alfa-command/package.json | 4 +-- packages/alfa-command/src/command.ts | 37 ++++++++++++++-------------- yarn.lock | 11 +-------- 5 files changed, 28 insertions(+), 30 deletions(-) create mode 100644 .changeset/khaki-lamps-exercise.md diff --git a/.changeset/khaki-lamps-exercise.md b/.changeset/khaki-lamps-exercise.md new file mode 100644 index 00000000..e0faee47 --- /dev/null +++ b/.changeset/khaki-lamps-exercise.md @@ -0,0 +1,5 @@ +--- +"@siteimprove/alfa-command": patch +--- + +**Changed:** Invoke `chalk` directly instead of the `alfa-highlight` deprecated wrapper. diff --git a/config/validate-structure.json b/config/validate-structure.json index d8659af9..a3672c12 100644 --- a/config/validate-structure.json +++ b/config/validate-structure.json @@ -18,6 +18,7 @@ "@siteimprove/alfa-angular": ["@angular/core", "rxjs", "zone.js"], "@siteimprove/alfa-chai": ["chai"], "@siteimprove/alfa-cheerio": ["cheerio", "domhandler"], + "@siteimprove/alfa-command": ["chalk"], "@siteimprove/alfa-cypress": ["cypress"], "@siteimprove/alfa-enzyme": ["enzyme"], "@siteimprove/alfa-formatter-earl": ["jsonld"], diff --git a/packages/alfa-command/package.json b/packages/alfa-command/package.json index fb9e7f88..cd59bfa6 100644 --- a/packages/alfa-command/package.json +++ b/packages/alfa-command/package.json @@ -23,7 +23,6 @@ ], "dependencies": { "@siteimprove/alfa-functor": "^0.88.0", - "@siteimprove/alfa-highlight": "^0.64.0", "@siteimprove/alfa-json": "^0.88.0", "@siteimprove/alfa-mapper": "^0.88.0", "@siteimprove/alfa-option": "^0.88.0", @@ -31,7 +30,8 @@ "@siteimprove/alfa-predicate": "^0.88.0", "@siteimprove/alfa-refinement": "^0.88.0", "@siteimprove/alfa-result": "^0.88.0", - "@siteimprove/alfa-thunk": "^0.88.0" + "@siteimprove/alfa-thunk": "^0.88.0", + "chalk": "^5.3.0" }, "devDependencies": { "@siteimprove/alfa-test": "^0.88.0" diff --git a/packages/alfa-command/src/command.ts b/packages/alfa-command/src/command.ts index 8b3608cf..0a319f77 100644 --- a/packages/alfa-command/src/command.ts +++ b/packages/alfa-command/src/command.ts @@ -1,10 +1,10 @@ -import { Marker } from "@siteimprove/alfa-highlight"; import type { Serializable } from "@siteimprove/alfa-json"; import type { Mapper } from "@siteimprove/alfa-mapper"; import { Option, None } from "@siteimprove/alfa-option"; import { Result, Err } from "@siteimprove/alfa-result"; import type * as json from "@siteimprove/alfa-json"; +import chalk from "chalk"; import type { Argument } from "./argument.js"; import { Flag } from "./flag.js"; @@ -19,7 +19,8 @@ export class Command< F extends Command.Flags = {}, A extends Command.Arguments = {}, S extends Command.Subcommands = {} -> implements Serializable { +> implements Serializable +{ public static withArguments< F extends Command.Flags, A extends Command.Arguments @@ -92,7 +93,7 @@ export class Command< this._description = description; this._flags = flags; this._arguments = args; - this._subcommands = subcommands((this as unknown) as Command); + this._subcommands = subcommands(this as unknown as Command); this._parent = parent; this._run = run?.(this) ?? (async () => Result.of(this._help())); } @@ -283,9 +284,9 @@ export class Command< private _helpUsage(): string { return ` -${Marker.bold("Usage:")} +${chalk.bold("Usage:")} - ${Marker.bold("$")} ${this._invocation()} [flags] ${[ + ${chalk.bold("$")} ${this._invocation()} [flags] ${[ ...values(this._arguments), ] .map((argument) => @@ -299,7 +300,7 @@ ${Marker.bold("Usage:")} private _helpVersion(): string { return ` -${Marker.bold("Version:")} +${chalk.bold("Version:")} ${this._version} `.trim(); @@ -314,7 +315,7 @@ ${Marker.bold("Version:")} return Option.of( ` -${Marker.bold("Arguments:")} +${chalk.bold("Arguments:")} ${args .map((argument) => { @@ -322,14 +323,14 @@ ${args let help = " "; - help += Marker.bold(`${argument.name}`); + help += chalk.bold(`${argument.name}`); if (!options.optional) { - help += " " + Marker.dim("(required)"); + help += " " + chalk.dim("(required)"); } for (const value of options.default) { - help += " " + Marker.dim(`[default: ${value}]`); + help += " " + chalk.dim(`[default: ${value}]`); } help += "\n"; @@ -351,12 +352,12 @@ ${args return Option.of( ` -${Marker.bold("Commands:")} +${chalk.bold("Commands:")} ${[...values(this._subcommands)] .map( (command) => - ` ${Marker.bold(command.name)}\n${Text.indent( + ` ${chalk.bold(command.name)}\n${Text.indent( Text.wrap(command.description, 76), 4 )}` @@ -375,7 +376,7 @@ ${[...values(this._subcommands)] return Option.of( ` -${Marker.bold("Flags:")} +${chalk.bold("Flags:")} ${[...values(this._flags)] .map((flag) => { @@ -387,23 +388,23 @@ ${[...values(this._flags)] help += options.aliases .map((alias) => - Marker.bold(alias.length === 1 ? `-${alias}` : `--${alias}`) + chalk.bold(alias.length === 1 ? `-${alias}` : `--${alias}`) ) .join(", ") + ", "; } - help += Marker.bold(`--${options.negatable ? "[no-]" : ""}${flag.name}`); + help += chalk.bold(`--${options.negatable ? "[no-]" : ""}${flag.name}`); for (const type of options.type) { - help += ` <${Marker.underline(type)}>`; + help += ` <${chalk.underline(type)}>`; } if (!options.optional) { - help += " " + Marker.dim("(required)"); + help += " " + chalk.dim("(required)"); } for (const value of options.default) { - help += " " + Marker.dim(`[default: ${value}]`); + help += " " + chalk.dim(`[default: ${value}]`); } help += "\n"; diff --git a/yarn.lock b/yarn.lock index 09b7e2f0..14dea2d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1967,7 +1967,6 @@ __metadata: resolution: "@siteimprove/alfa-command@workspace:packages/alfa-command" dependencies: "@siteimprove/alfa-functor": ^0.88.0 - "@siteimprove/alfa-highlight": ^0.64.0 "@siteimprove/alfa-json": ^0.88.0 "@siteimprove/alfa-mapper": ^0.88.0 "@siteimprove/alfa-option": ^0.88.0 @@ -1977,6 +1976,7 @@ __metadata: "@siteimprove/alfa-result": ^0.88.0 "@siteimprove/alfa-test": ^0.88.0 "@siteimprove/alfa-thunk": ^0.88.0 + chalk: ^5.3.0 peerDependencies: "@siteimprove/alfa-functor": ^0.88.0 "@siteimprove/alfa-json": ^0.88.0 @@ -2379,15 +2379,6 @@ __metadata: languageName: node linkType: hard -"@siteimprove/alfa-highlight@npm:^0.64.0": - version: 0.64.0 - resolution: "@siteimprove/alfa-highlight@npm:0.64.0::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40Siteimprove%2Falfa-highlight%2F0.64.0%2F247467d9e1acc3e0d8ba947f936ddff16e3fb609" - dependencies: - chalk: ^4.1.2 - checksum: 55c852e09597e85ce90b60b888a133893ca9287429414eb429559d9cbd4eb91aaea3ba707a4187f7e7cb3b47423f59db155f69b8cebbc10f8db113b5a63fbdab - languageName: node - linkType: hard - "@siteimprove/alfa-http@npm:^0.88.0": version: 0.88.0 resolution: "@siteimprove/alfa-http@npm:0.88.0::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40Siteimprove%2Falfa-http%2F0.88.0%2F88bdc61e1633a8d23396fd8e3736fb5b8a53dd7b"