#!/usr/bin/env bun import type { Command } from '../src/types.js'; import { run1688 } from '../src/index.js'; /** * 注意:从 v2.0 开始,不再需要 .env.local 文件 * 配置已迁移到全局文件 ~/.openclaw/.env * * 所有 skill 共享同一份配置,无需在每个 skill 中重复配置。 * * 创建全局配置: * cp ~/.openclaw/.env.example ~/.openclaw/.env * vi ~/.openclaw/.env # 填入 CLIENT_KEY */ function printUsage(): void { console.error(`Usage: bun run scripts/run.ts [--client-key=] [--auth-base=] [--ecom-base=] [args...] [--dry-run] Commands: session scrape-url <1688-url> [translate] scrape-payload Examples: bun run scripts/run.ts scrape-url 'https://detail.1688.com/offer/852504650877.html' bun run scripts/run.ts scrape-url 'https://detail.1688.com/offer/852504650877.html' true bun run scripts/run.ts scrape-url 'https://detail.1688.com/offer/852504650877.html' --dry-run bun run scripts/run.ts scrape-payload '{"url":"https://detail.1688.com/offer/852504650877.html"}' 配置: 全局配置文件:~/.openclaw/.env 命令行参数优先级高于全局配置 `); } type CliArgs = { command: Command; args: string[]; dryRun: boolean; clientKey?: string; authBase?: string; ecomBase?: string; }; function parseArgs(argv: string[]): CliArgs | null { const positionals: string[] = []; let dryRun = false; let clientKey: string | undefined; let authBase: string | undefined; let ecomBase: string | undefined; for (const arg of argv) { if (arg === '--dry-run') { dryRun = true; } else if (arg.startsWith('--client-key=')) { clientKey = arg.slice('--client-key='.length).trim(); } else if (arg.startsWith('--auth-base=')) { authBase = arg.slice('--auth-base='.length).trim().replace(/\/$/, ''); } else if (arg.startsWith('--ecom-base=')) { ecomBase = arg.slice('--ecom-base='.length).trim().replace(/\/$/, ''); } else if (arg === '-h' || arg === '--help') { printUsage(); process.exit(0); } else { positionals.push(arg); } } if (positionals.length < 1) { return null; } const command = positionals[0] as Command; const args = positionals.slice(1); return { command, args, dryRun, clientKey, authBase, ecomBase }; } async function main(): Promise { // 不再加载 .env.local,直接使用全局配置 ~/.openclaw/.env // auth-runtime 会自动加载全局配置 const parsed = parseArgs(process.argv.slice(2)); if (!parsed) { printUsage(); process.exit(1); } // 命令行参数覆盖全局配置 if (parsed.clientKey) process.env.CLIENT_KEY = parsed.clientKey; if (parsed.authBase) process.env.AUTH_BASE = parsed.authBase; if (parsed.ecomBase) process.env.ECOM_BASE = parsed.ecomBase; const result = await run1688(parsed.command, parsed.args, parsed.dryRun); console.log(JSON.stringify(result, null, 2)); } main().catch((error) => { console.error(JSON.stringify({ status: 'failed', error: error instanceof Error ? error.message : String(error), command: '', dryRun: false, }, null, 2)); process.exit(1); });