runSearch

tcmts.cli.run.runSearch · #7tyjz36o · term · runs on the server

uses tcmts.cli.main.execute, which uses tcmts.cli.help.usageError, which uses tcmts.cli.help.usageOf, which uses tcmts.cli.style.bold, which uses node:util

Runs tcm search.

import { routeSearch } from "#codebase/tcmts/cli/commands";
import { execute, search, words } from "#codebase/tcmts/cli/main";
import type { Context } from "#codebase/tcmts/cli/run";
import { ask, UsageError } from "#codebase/tcmts/cli/ui";
import { parse } from "@bomb.sh/router";

export async function runSearch({ cb, cmd, rest }: Context): Promise<number> {
  const { model, literals } = execute(cmd, parse(routeSearch(), { argv: rest }));
  // (after `--`, text that looks like a flag: `tcm search -- --lines`)
  const given = [...model.text, ...words(literals)];
  const text = given.length
    ? given.join(" ")
    : await ask("search <text>", "Search the code for", "text");
  const limit = model.limit ? Number(model.limit) : undefined;
  if (limit !== undefined && !(limit > 0))
    throw new UsageError(`--limit ${model.limit}: a number of lines`);
  return search(cb, text, {
    regex: !!model.regex,
    caseSensitive: !!model.case,
    wholeWord: !!model.word,
    ...(model.under ? { under: model.under } : {}),
    ...(limit ? { limit } : {}),
  })
    ? 0
    : 1;
}

uses

used by