UNPKG

browse

Version:

Unified Browserbase CLI for browser automation and cloud APIs.

47 lines (46 loc) 1.86 kB
import { Args } from "@oclif/core"; import { BrowseCommand } from "../../base.js"; import { outputFormatFlags, outputJson, resolveOutputFormat, } from "../../lib/output.js"; import { getTemplateIfExists, listTemplates } from "../../lib/templates/api.js"; import { outputTemplateTable, printTemplateDetail, templateMatchesQuery, } from "../../lib/templates/output.js"; export default class TemplatesFind extends BrowseCommand { static description = "Find Browserbase templates by slug, title, category, or tag."; static examples = [ "browse templates find google-trends-keywords", "browse templates find amazon", "browse templates find Python --wide", "browse templates find Python --json", ]; static args = { query: Args.string({ description: "Template slug or search query.", required: true, }), }; static flags = { ...outputFormatFlags, }; async run() { const { args, flags } = await this.parse(TemplatesFind); const exactTemplate = await getTemplateIfExists(args.query); const outputFormat = resolveOutputFormat(flags); if (exactTemplate) { if (outputFormat === "json") { outputJson({ query: args.query, templates: [exactTemplate] }); return; } printTemplateDetail(exactTemplate); return; } const templates = await listTemplates(); const matches = templates.filter((template) => templateMatchesQuery(template, args.query)); if (outputFormat === "json") { outputJson({ query: args.query, templates: matches }); return; } outputTemplateTable(matches, { heading: `Templates matching "${args.query}"`, wide: flags.wide, }); } }