- 工作台大版本升级:hash 路由 + 6 数据功能页(周榜/热门账号/账号详情/视频详情/AI写脚本/AI写作复盘),只读复用 dsh 库副本 + 抖音榜单 JSON - 数据库隔离:复制 dsh 库到 mcn-work-shop/,与 dsh 原库各访问各的(已 gitignore) - 图标全面扁平化:Lucide 线性 SVG,功能图标亮色区分,文字标题去图标 - 首页重构:功能入口卡 + AI写剧本快捷卡片(2列/8个/5行预览) + 独立帮助页 + header 精简 - 新增设计技能 impeccable + taste-skill(生成网页时参考) - 修复:fmtTime 跨 script 全局冲突(P0)、弹窗关闭、外链新标签打开等
43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
class TargetArgError extends Error {
|
|
constructor(message, code) {
|
|
super(message);
|
|
this.name = 'TargetArgError';
|
|
this.code = code;
|
|
}
|
|
}
|
|
|
|
export function parseTargetPath(args = [], { strict = false } = {}) {
|
|
let targetPath = null;
|
|
for (let i = 0; i < args.length; i++) {
|
|
const arg = String(args[i]);
|
|
if (arg === '--target' || arg === '-t') {
|
|
const next = args[i + 1];
|
|
if (next && !String(next).startsWith('-')) {
|
|
targetPath = String(next);
|
|
i++;
|
|
continue;
|
|
}
|
|
if (strict) {
|
|
throw new TargetArgError('--target requires a path value.', 'TARGET_VALUE_MISSING');
|
|
}
|
|
continue;
|
|
}
|
|
if (arg.startsWith('--target=')) {
|
|
const value = arg.slice('--target='.length);
|
|
if (value) {
|
|
targetPath = value;
|
|
continue;
|
|
}
|
|
if (strict) {
|
|
throw new TargetArgError('--target requires a path value.', 'TARGET_VALUE_MISSING');
|
|
}
|
|
}
|
|
}
|
|
return targetPath;
|
|
}
|
|
|
|
export function parseTargetOptions(args = [], options = {}) {
|
|
const targetPath = parseTargetPath(args, options);
|
|
return targetPath ? { targetPath } : {};
|
|
}
|