Skip to content

Commit

Permalink
feat(script): combined descriptions for composite scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
paambaati committed Jul 26, 2021
1 parent aa4d3f4 commit cf17689
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 7 deletions.
2 changes: 0 additions & 2 deletions src/scripts_config.ts
Expand Up @@ -40,8 +40,6 @@ export interface ScriptObject extends ScriptOptions {
* A textual description of what this script does.
* This will be shown in the list of available scripts,
* when calling `vr` without arguments.
*
* **Note** nested `ScriptObject`'s `desc` are ignored
*/
desc?: string;
/**
Expand Down
22 changes: 18 additions & 4 deletions src/scripts_info.ts
@@ -1,7 +1,11 @@
import { blue, bold, gray, red } from "../deps.ts";
import { ScriptDefinition, ScriptsConfiguration } from "./scripts_config.ts";
import {
ScriptDefinition,
ScriptObject,
ScriptsConfiguration,
} from "./scripts_config.ts";
import { flattenCommands, normalizeScript } from "./normalize_script.ts";
import { isScriptObject } from "./util.ts";
import { isNonParallelCompositeScript, isScriptObject } from "./util.ts";

export function printScriptsInfo(config: ScriptsConfiguration) {
const scripts = Object.entries(config.scripts);
Expand All @@ -26,16 +30,26 @@ ${

function scriptInfo(script: ScriptDefinition): string {
const info = [];
const indent = " ".repeat(4);
if (isScriptObject(script)) {
if (script.desc) info.push(` ${script.desc}`);
if (script.gitHook) {
info.push(` ${gray("Runs at")} ${red(script.gitHook)}`);
info.push(`${indent}${gray("Runs at")} ${red(script.gitHook)}`);
}
} else if (isNonParallelCompositeScript(script)) {
const scripts = script.filter((s) => isScriptObject(s)) as Array<
ScriptObject
>;
const combinedDescriptions = scripts.flatMap((s) => {
if (typeof s === "string") return [];
return s.desc;
}).filter(Boolean);
info.push(`${indent}${combinedDescriptions.join(", ")}`);
}
const commands = flattenCommands(normalizeScript(script, {}));
info.push(
gray(
` $ ${commands.map((c) => c.cmd).slice(0, 3).join(", ")}${
`${indent}$ ${commands.map((c) => c.cmd).slice(0, 3).join(", ")}${
commands.length > 3 ? "..." : ""
}`,
),
Expand Down
6 changes: 5 additions & 1 deletion src/util.ts
@@ -1,4 +1,4 @@
import { ParallelScripts, ScriptObject } from "./scripts_config.ts";
import { ParallelScripts, Script, ScriptObject } from "./scripts_config.ts";

export type OneOrMore<T> = T | T[];

Expand Down Expand Up @@ -44,4 +44,8 @@ export const isScriptObject = (script: any): script is ScriptObject =>
export const isParallelScripts = (script: any): script is ParallelScripts =>
script instanceof Object && "pll" in script;

export const isNonParallelCompositeScript = (
script: any,
): script is Array<Script | ParallelScripts> => Array.isArray(script);

export const notNull = (o: any) => o != null;

0 comments on commit cf17689

Please sign in to comment.