@huangqz/tapd-cli
Advanced tools
| export declare const COPY: { | ||
| readonly brandSubtitle: "cli"; | ||
| readonly rootDescription: "管理 TAPD 需求、迭代空间和评论"; | ||
| readonly rootHelpAfter: "\n常用流程\n 1. tapd login\n 2. tapd init\n 3. tapd story create ./需求.md\n 4. tapd story update ./需求.md\n 5. tapd comment add ./需求.md --message \"已评审\"\n"; | ||
| readonly loginDescription: "登录 TAPD 并保存本地凭证"; | ||
| readonly loginHelpAfter: "\n示例:\n tapd login\n tapd login --mode app --client-id tapd-app-xxx --company-id 41988264\n tapd login --mode personal --personal-token *** --workspace-id 58491787\n\n说明:\n 凭证保存到 .tapd/credentials.json,company_id 保存到 .tapd/config.json。\n"; | ||
| readonly logoutDescription: "退出登录并清除本地认证文件"; | ||
| readonly loginActionDescription: "登录 TAPD 并保存本地凭证"; | ||
| readonly loginActionHelpAfter: "\n示例:\n tapd login\n tapd login --mode app --client-id tapd-app-xxx --client-secret *** --company-id 41988264\n tapd login --mode personal --personal-token *** --workspace-id 58491787\n"; | ||
| readonly loginModeMessage: "选择认证方式"; | ||
| readonly loginModeApp: "开放应用凭证"; | ||
| readonly loginModePersonal: "个人令牌"; | ||
| readonly loginPersonalTokenMessage: "个人令牌"; | ||
| readonly loginPersonalTokenRequired: "请输入个人令牌"; | ||
| readonly loginWorkspaceIdMessage: "验证用 workspace_id"; | ||
| readonly loginClientIdMessage: "应用 ID"; | ||
| readonly loginClientSecretMessage: "应用密钥"; | ||
| readonly loginClientSecretRequired: "请输入应用密钥"; | ||
| readonly loginCompanyIdMessage: "企业 ID company_id"; | ||
| readonly commentDescription: "TAPD 需求评论"; | ||
| readonly commentHelpAfter: "\n示例:\n tapd comment add ./需求.md --message \"已评审\"\n tapd comment add 1147232921001000017 --file ./comment.md\n tapd comment list ./需求.md\n"; | ||
| readonly commentAddDescription: "添加需求评论"; | ||
| readonly commentAddHelpAfter: "\n示例:\n tapd comment add ./需求.md --message \"已完成评审\"\n tapd comment add 1147232921001000017 --file ./comment.md --author 黄启智\n\n说明:\n 评论内容会从 Markdown 转成 HTML 后写入 TAPD。\n"; | ||
| readonly commentListDescription: "查看需求评论"; | ||
| readonly commentListHelpAfter: "\n示例:\n tapd comment list ./需求.md\n tapd comment list 1147232921001000017 --workspace-id 47232921\n"; | ||
| readonly initDescription: "初始化当前项目,选择默认 TAPD 空间"; | ||
| readonly initHelpAfter: "\n示例:\n tapd init\n\n 说明:\n 应用凭证模式会读取 company_id 并拉取空间列表供下拉选择。\n 个人令牌模式会验证当前默认 workspace,因为个人令牌通常不能列出企业项目。\n"; | ||
| readonly initSelectWorkspaceMessage: "选择默认空间"; | ||
| readonly initSelectCreatorMessage: "选择默认创建人"; | ||
| readonly initNoDefaultCreator: "不设置默认创建人"; | ||
| readonly workspaceDescription: "TAPD 空间管理"; | ||
| readonly workspaceHelpAfter: "\n示例:\n tapd workspace list\n tapd workspace add --workspace-id 58491787\n tapd workspace use\n tapd workspace use --workspace-id 58491787\n"; | ||
| readonly workspaceListDescription: "列出空间;个人令牌模式仅显示当前默认空间"; | ||
| readonly workspaceAddDescription: "验证并缓存一个 workspace_id,适合个人令牌模式管理多个空间"; | ||
| readonly workspaceUseDescription: "选择默认空间;个人令牌模式可传 --workspace-id 验证切换"; | ||
| readonly workspaceUseSelectMessage: "选择默认空间"; | ||
| readonly storyDescription: "TAPD 需求管理"; | ||
| readonly storyHelpAfter: "\n示例:\n tapd story create ./需求.md\n tapd story update ./需求.md\n tapd story get 1147232921001000017\n tapd story pull 1147232921001000017\n tapd story tasks 1147232921001000017\n\nMarkdown frontmatter:\n ---\n title: \"需求标题\"\n iteration_id: \"1147232921001000005\"\n creator: \"黄启智\"\n label: \"local-md|cli\"\n status: \"planning\"\n ---\n"; | ||
| readonly storyListDescription: "查询需求列表,默认加载全部,也可交互选择分类"; | ||
| readonly storyListHelpAfter: "\n示例:\n tapd story list\n tapd story list --all\n tapd story list --status planning\n tapd story list --iteration-id 1147232921001000005\n tapd story list --label html-richtext\n\n说明:\n 不传筛选参数时,会出现分类下拉:全部、状态、迭代、标签。\n 默认选“全部”,最多返回 --limit 条。\n"; | ||
| readonly storyTasksDescription: "查看需求下的排期任务"; | ||
| readonly storyTasksHelpAfter: "\n示例:\n tapd story tasks 1147232921001000017\n tapd story tasks ./需求.md\n tapd story tasks 1147232921001000017 --status progressing\n tapd story tasks 1147232921001000017 --all\n"; | ||
| readonly storySelectIterationMessage: "选择迭代"; | ||
| readonly storySelectCreatorMessage: "选择创建人"; | ||
| readonly storyNoIteration: "不关联迭代"; | ||
| readonly storySelectCategoryMessage: "选择需求分类"; | ||
| readonly storyCategoryAll: "全部需求"; | ||
| readonly storyCategoryStatus: "按状态筛选"; | ||
| readonly storyCategoryIteration: "按迭代筛选"; | ||
| readonly storyCategoryLabel: "按标签筛选"; | ||
| readonly storySelectStatusMessage: "选择状态"; | ||
| readonly storyStatusPlanningOption: "规划中"; | ||
| readonly storyStatusDevelopingOption: "开发中"; | ||
| readonly storyStatusResolvedOption: "已实现"; | ||
| readonly storyStatusRejectedOption: "已拒绝"; | ||
| readonly storyStatusCustomOption: "自定义输入"; | ||
| readonly storyInputStatusMessage: "输入状态值"; | ||
| readonly storyInputLabelMessage: "输入标签"; | ||
| readonly storyCreateDescription: "从 Markdown 创建 TAPD 需求,并写回 tapd_id"; | ||
| readonly storyCreateHelpAfter: "\n示例:\n tapd story create ./需求.md\n tapd story create ./需求.md --workspace-id 47232921\n\n行为:\n 缺少 iteration_id 或 creator 时,会交互式拉取 TAPD 数据并下拉选择。\n 创建成功后会写回 tapd_id、workspace_id、created_at。\n"; | ||
| readonly storyUpdateDescription: "根据 Markdown frontmatter 更新 TAPD 需求"; | ||
| readonly storyUpdateHelpAfter: "\n示例:\n tapd story update ./需求.md\n\n要求:\n Markdown frontmatter 必须已有 tapd_id。\n"; | ||
| readonly storyGetDescription: "获取需求内容摘要"; | ||
| readonly storyGetHelpAfter: "\n示例:\n tapd story get 1147232921001000017\n tapd story get 1147232921001000017 --workspace-id 47232921\n"; | ||
| readonly storyPullDescription: "拉取指定需求并转换为 Markdown 文件"; | ||
| readonly storyPullHelpAfter: "\n示例:\n tapd story pull 1147232921001000017\n tapd story pull 1147232921001000017 ./需求.md\n tapd story pull 1147232921001000017 --workspace-id 47232921\n\n说明:\n 会自动下载需求中的图片到 <output-file-dir>/assets/ 目录\n 并将 Markdown 中的图片链接替换为本地相对路径\n"; | ||
| readonly iterationDescription: "TAPD 迭代管理"; | ||
| readonly iterationHelpAfter: "\n示例:\n tapd iteration list\n tapd iteration get 1151611517001007745\n tapd iteration tasks 1151611517001007745\n"; | ||
| readonly iterationListDescription: "查看当前空间的迭代列表"; | ||
| readonly iterationGetDescription: "查看迭代下的需求和汇总情况"; | ||
| readonly iterationTasksDescription: "查看迭代下的任务情况"; | ||
| readonly iterationTasksHelpAfter: "\n示例:\n tapd iteration tasks 1151611517001007745\n tapd iteration tasks 1151611517001007745 --status progressing\n tapd iteration tasks 1151611517001007745 --all\n"; | ||
| }; |
| export const COPY = { | ||
| brandSubtitle: "cli", | ||
| rootDescription: "管理 TAPD 需求、迭代空间和评论", | ||
| rootHelpAfter: ` | ||
| 常用流程 | ||
| 1. tapd login | ||
| 2. tapd init | ||
| 3. tapd story create ./需求.md | ||
| 4. tapd story update ./需求.md | ||
| 5. tapd comment add ./需求.md --message "已评审" | ||
| `, | ||
| loginDescription: "登录 TAPD 并保存本地凭证", | ||
| loginHelpAfter: ` | ||
| 示例: | ||
| tapd login | ||
| tapd login --mode app --client-id tapd-app-xxx --company-id 41988264 | ||
| tapd login --mode personal --personal-token *** --workspace-id 58491787 | ||
| 说明: | ||
| 凭证保存到 .tapd/credentials.json,company_id 保存到 .tapd/config.json。 | ||
| `, | ||
| logoutDescription: "退出登录并清除本地认证文件", | ||
| loginActionDescription: "登录 TAPD 并保存本地凭证", | ||
| loginActionHelpAfter: ` | ||
| 示例: | ||
| tapd login | ||
| tapd login --mode app --client-id tapd-app-xxx --client-secret *** --company-id 41988264 | ||
| tapd login --mode personal --personal-token *** --workspace-id 58491787 | ||
| `, | ||
| loginModeMessage: "选择认证方式", | ||
| loginModeApp: "开放应用凭证", | ||
| loginModePersonal: "个人令牌", | ||
| loginPersonalTokenMessage: "个人令牌", | ||
| loginPersonalTokenRequired: "请输入个人令牌", | ||
| loginWorkspaceIdMessage: "验证用 workspace_id", | ||
| loginClientIdMessage: "应用 ID", | ||
| loginClientSecretMessage: "应用密钥", | ||
| loginClientSecretRequired: "请输入应用密钥", | ||
| loginCompanyIdMessage: "企业 ID company_id", | ||
| commentDescription: "TAPD 需求评论", | ||
| commentHelpAfter: ` | ||
| 示例: | ||
| tapd comment add ./需求.md --message "已评审" | ||
| tapd comment add 1147232921001000017 --file ./comment.md | ||
| tapd comment list ./需求.md | ||
| `, | ||
| commentAddDescription: "添加需求评论", | ||
| commentAddHelpAfter: ` | ||
| 示例: | ||
| tapd comment add ./需求.md --message "已完成评审" | ||
| tapd comment add 1147232921001000017 --file ./comment.md --author 黄启智 | ||
| 说明: | ||
| 评论内容会从 Markdown 转成 HTML 后写入 TAPD。 | ||
| `, | ||
| commentListDescription: "查看需求评论", | ||
| commentListHelpAfter: ` | ||
| 示例: | ||
| tapd comment list ./需求.md | ||
| tapd comment list 1147232921001000017 --workspace-id 47232921 | ||
| `, | ||
| initDescription: "初始化当前项目,选择默认 TAPD 空间", | ||
| initHelpAfter: ` | ||
| 示例: | ||
| tapd init | ||
| 说明: | ||
| 应用凭证模式会读取 company_id 并拉取空间列表供下拉选择。 | ||
| 个人令牌模式会验证当前默认 workspace,因为个人令牌通常不能列出企业项目。 | ||
| `, | ||
| initSelectWorkspaceMessage: "选择默认空间", | ||
| initSelectCreatorMessage: "选择默认创建人", | ||
| initNoDefaultCreator: "不设置默认创建人", | ||
| workspaceDescription: "TAPD 空间管理", | ||
| workspaceHelpAfter: ` | ||
| 示例: | ||
| tapd workspace list | ||
| tapd workspace add --workspace-id 58491787 | ||
| tapd workspace use | ||
| tapd workspace use --workspace-id 58491787 | ||
| `, | ||
| workspaceListDescription: "列出空间;个人令牌模式仅显示当前默认空间", | ||
| workspaceAddDescription: "验证并缓存一个 workspace_id,适合个人令牌模式管理多个空间", | ||
| workspaceUseDescription: "选择默认空间;个人令牌模式可传 --workspace-id 验证切换", | ||
| workspaceUseSelectMessage: "选择默认空间", | ||
| storyDescription: "TAPD 需求管理", | ||
| storyHelpAfter: ` | ||
| 示例: | ||
| tapd story create ./需求.md | ||
| tapd story update ./需求.md | ||
| tapd story get 1147232921001000017 | ||
| tapd story pull 1147232921001000017 | ||
| tapd story tasks 1147232921001000017 | ||
| Markdown frontmatter: | ||
| --- | ||
| title: "需求标题" | ||
| iteration_id: "1147232921001000005" | ||
| creator: "黄启智" | ||
| label: "local-md|cli" | ||
| status: "planning" | ||
| --- | ||
| `, | ||
| storyListDescription: "查询需求列表,默认加载全部,也可交互选择分类", | ||
| storyListHelpAfter: ` | ||
| 示例: | ||
| tapd story list | ||
| tapd story list --all | ||
| tapd story list --status planning | ||
| tapd story list --iteration-id 1147232921001000005 | ||
| tapd story list --label html-richtext | ||
| 说明: | ||
| 不传筛选参数时,会出现分类下拉:全部、状态、迭代、标签。 | ||
| 默认选“全部”,最多返回 --limit 条。 | ||
| `, | ||
| storyTasksDescription: "查看需求下的排期任务", | ||
| storyTasksHelpAfter: ` | ||
| 示例: | ||
| tapd story tasks 1147232921001000017 | ||
| tapd story tasks ./需求.md | ||
| tapd story tasks 1147232921001000017 --status progressing | ||
| tapd story tasks 1147232921001000017 --all | ||
| `, | ||
| storySelectIterationMessage: "选择迭代", | ||
| storySelectCreatorMessage: "选择创建人", | ||
| storyNoIteration: "不关联迭代", | ||
| storySelectCategoryMessage: "选择需求分类", | ||
| storyCategoryAll: "全部需求", | ||
| storyCategoryStatus: "按状态筛选", | ||
| storyCategoryIteration: "按迭代筛选", | ||
| storyCategoryLabel: "按标签筛选", | ||
| storySelectStatusMessage: "选择状态", | ||
| storyStatusPlanningOption: "规划中", | ||
| storyStatusDevelopingOption: "开发中", | ||
| storyStatusResolvedOption: "已实现", | ||
| storyStatusRejectedOption: "已拒绝", | ||
| storyStatusCustomOption: "自定义输入", | ||
| storyInputStatusMessage: "输入状态值", | ||
| storyInputLabelMessage: "输入标签", | ||
| storyCreateDescription: "从 Markdown 创建 TAPD 需求,并写回 tapd_id", | ||
| storyCreateHelpAfter: ` | ||
| 示例: | ||
| tapd story create ./需求.md | ||
| tapd story create ./需求.md --workspace-id 47232921 | ||
| 行为: | ||
| 缺少 iteration_id 或 creator 时,会交互式拉取 TAPD 数据并下拉选择。 | ||
| 创建成功后会写回 tapd_id、workspace_id、created_at。 | ||
| `, | ||
| storyUpdateDescription: "根据 Markdown frontmatter 更新 TAPD 需求", | ||
| storyUpdateHelpAfter: ` | ||
| 示例: | ||
| tapd story update ./需求.md | ||
| 要求: | ||
| Markdown frontmatter 必须已有 tapd_id。 | ||
| `, | ||
| storyGetDescription: "获取需求内容摘要", | ||
| storyGetHelpAfter: ` | ||
| 示例: | ||
| tapd story get 1147232921001000017 | ||
| tapd story get 1147232921001000017 --workspace-id 47232921 | ||
| `, | ||
| storyPullDescription: "拉取指定需求并转换为 Markdown 文件", | ||
| storyPullHelpAfter: ` | ||
| 示例: | ||
| tapd story pull 1147232921001000017 | ||
| tapd story pull 1147232921001000017 ./需求.md | ||
| tapd story pull 1147232921001000017 --workspace-id 47232921 | ||
| 说明: | ||
| 会自动下载需求中的图片到 <output-file-dir>/assets/ 目录 | ||
| 并将 Markdown 中的图片链接替换为本地相对路径 | ||
| `, | ||
| iterationDescription: "TAPD 迭代管理", | ||
| iterationHelpAfter: ` | ||
| 示例: | ||
| tapd iteration list | ||
| tapd iteration get 1151611517001007745 | ||
| tapd iteration tasks 1151611517001007745 | ||
| `, | ||
| iterationListDescription: "查看当前空间的迭代列表", | ||
| iterationGetDescription: "查看迭代下的需求和汇总情况", | ||
| iterationTasksDescription: "查看迭代下的任务情况", | ||
| iterationTasksHelpAfter: ` | ||
| 示例: | ||
| tapd iteration tasks 1151611517001007745 | ||
| tapd iteration tasks 1151611517001007745 --status progressing | ||
| tapd iteration tasks 1151611517001007745 --all | ||
| ` | ||
| }; | ||
| //# sourceMappingURL=command-text.js.map |
| {"version":3,"file":"command-text.js","sourceRoot":"","sources":["../src/command-text.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,aAAa,EAAE,KAAK;IACpB,eAAe,EAAE,oBAAoB;IACrC,aAAa,EAAE;;;;;;;CAOhB;IACC,gBAAgB,EAAE,iBAAiB;IACnC,cAAc,EAAE;;;;;;;;CAQjB;IACC,iBAAiB,EAAE,eAAe;IAClC,sBAAsB,EAAE,iBAAiB;IACzC,oBAAoB,EAAE;;;;;CAKvB;IACC,gBAAgB,EAAE,QAAQ;IAC1B,YAAY,EAAE,QAAQ;IACtB,iBAAiB,EAAE,MAAM;IACzB,yBAAyB,EAAE,MAAM;IACjC,0BAA0B,EAAE,SAAS;IACrC,uBAAuB,EAAE,kBAAkB;IAC3C,oBAAoB,EAAE,OAAO;IAC7B,wBAAwB,EAAE,MAAM;IAChC,yBAAyB,EAAE,SAAS;IACpC,qBAAqB,EAAE,kBAAkB;IACzC,kBAAkB,EAAE,WAAW;IAC/B,gBAAgB,EAAE;;;;;CAKnB;IACC,qBAAqB,EAAE,QAAQ;IAC/B,mBAAmB,EAAE;;;;;;;CAOtB;IACC,sBAAsB,EAAE,QAAQ;IAChC,oBAAoB,EAAE;;;;CAIvB;IACC,eAAe,EAAE,sBAAsB;IACvC,aAAa,EAAE;;;;;;;CAOhB;IACC,0BAA0B,EAAE,QAAQ;IACpC,wBAAwB,EAAE,SAAS;IACnC,oBAAoB,EAAE,UAAU;IAChC,oBAAoB,EAAE,WAAW;IACjC,kBAAkB,EAAE;;;;;;CAMrB;IACC,wBAAwB,EAAE,sBAAsB;IAChD,uBAAuB,EAAE,qCAAqC;IAC9D,uBAAuB,EAAE,qCAAqC;IAC9D,yBAAyB,EAAE,QAAQ;IACnC,gBAAgB,EAAE,WAAW;IAC7B,cAAc,EAAE;;;;;;;;;;;;;;;;CAgBjB;IACC,oBAAoB,EAAE,wBAAwB;IAC9C,kBAAkB,EAAE;;;;;;;;;;;CAWrB;IACC,qBAAqB,EAAE,YAAY;IACnC,mBAAmB,EAAE;;;;;;CAMtB;IACC,2BAA2B,EAAE,MAAM;IACnC,yBAAyB,EAAE,OAAO;IAClC,gBAAgB,EAAE,OAAO;IACzB,0BAA0B,EAAE,QAAQ;IACpC,gBAAgB,EAAE,MAAM;IACxB,mBAAmB,EAAE,OAAO;IAC5B,sBAAsB,EAAE,OAAO;IAC/B,kBAAkB,EAAE,OAAO;IAC3B,wBAAwB,EAAE,MAAM;IAChC,yBAAyB,EAAE,KAAK;IAChC,2BAA2B,EAAE,KAAK;IAClC,yBAAyB,EAAE,KAAK;IAChC,yBAAyB,EAAE,KAAK;IAChC,uBAAuB,EAAE,OAAO;IAChC,uBAAuB,EAAE,OAAO;IAChC,sBAAsB,EAAE,MAAM;IAC9B,sBAAsB,EAAE,mCAAmC;IAC3D,oBAAoB,EAAE;;;;;;;;CAQvB;IACC,sBAAsB,EAAE,oCAAoC;IAC5D,oBAAoB,EAAE;;;;;;CAMvB;IACC,mBAAmB,EAAE,UAAU;IAC/B,iBAAiB,EAAE;;;;CAIpB;IACC,oBAAoB,EAAE,wBAAwB;IAC9C,kBAAkB,EAAE;;;;;;;;;CASrB;IACC,oBAAoB,EAAE,WAAW;IACjC,kBAAkB,EAAE;;;;;CAKrB;IACC,wBAAwB,EAAE,aAAa;IACvC,uBAAuB,EAAE,eAAe;IACxC,yBAAyB,EAAE,YAAY;IACvC,uBAAuB,EAAE;;;;;CAK1B;CACS,CAAC"} |
| export declare function registerIteration(program: import("commander").Command): void; |
| import ora from "ora"; | ||
| import { TapdClient } from "../api.js"; | ||
| import { resolveWorkspaceContext } from "../config.js"; | ||
| import { getToken } from "../session.js"; | ||
| import { iterationStatusLabel, storyStatusLabel } from "../status.js"; | ||
| import { formatTaskSummary, loadTasks, renderTaskList } from "../task-view.js"; | ||
| import { compactList, currentWorkspaceHelpText, info, success, truncate, withSpinner, workspaceBanner } from "../ui.js"; | ||
| function formatStoryStatusSummary(stories, statusMap) { | ||
| const counts = new Map(); | ||
| for (const story of stories) { | ||
| const key = storyStatusLabel(story.status, statusMap); | ||
| counts.set(key, (counts.get(key) ?? 0) + 1); | ||
| } | ||
| return Array.from(counts.entries()) | ||
| .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0], "zh-Hans-CN")) | ||
| .map(([status, count]) => `${status}:${count}`) | ||
| .join(" "); | ||
| } | ||
| export function registerIteration(program) { | ||
| const iteration = program | ||
| .command("iteration") | ||
| .description("TAPD 迭代管理") | ||
| .addHelpCommand(false) | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .addHelpText("after", ` | ||
| 示例: | ||
| tapd iteration list | ||
| tapd iteration get 1151611517001007745 | ||
| tapd iteration tasks 1151611517001007745 | ||
| `); | ||
| iteration | ||
| .command("list") | ||
| .description("查看当前空间的迭代列表") | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .option("-w, --workspace-id <id>", "覆盖默认 workspace_id") | ||
| .option("-s, --status <status>", "按迭代状态筛选") | ||
| .action(async (options) => { | ||
| const workspace = await resolveWorkspaceContext(process.cwd(), options.workspaceId); | ||
| workspaceBanner(workspace); | ||
| const workspaceId = workspace.id; | ||
| const client = new TapdClient(); | ||
| const token = await getToken(client); | ||
| const spinner = ora("查询迭代列表").start(); | ||
| const iterations = await withSpinner(spinner, async () => { | ||
| const items = await client.listIterations(token, workspaceId); | ||
| return options.status ? items.filter((item) => item.status === options.status) : items; | ||
| }, { successText: "查询完成", failText: "查询迭代列表失败" }); | ||
| success(`共 ${iterations.length} 条`); | ||
| compactList(iterations.map((item) => ({ | ||
| title: `${truncate(item.name, 48)} (${item.id})`, | ||
| lines: [`状态:${iterationStatusLabel(item.status)} 时间:${item.startdate || "-"} ~ ${item.enddate || "-"}`] | ||
| }))); | ||
| }); | ||
| iteration | ||
| .command("get") | ||
| .argument("<iteration-id>", "TAPD 迭代 ID") | ||
| .description("查看迭代下的需求和汇总情况") | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .option("-w, --workspace-id <id>", "覆盖默认 workspace_id") | ||
| .action(async (iterationId, options) => { | ||
| const workspace = await resolveWorkspaceContext(process.cwd(), options.workspaceId); | ||
| workspaceBanner(workspace); | ||
| const workspaceId = workspace.id; | ||
| const client = new TapdClient(); | ||
| const token = await getToken(client); | ||
| const spinner = ora("查询迭代信息").start(); | ||
| const [iterationData, stories, storyStatusMap] = await withSpinner(spinner, async () => Promise.all([ | ||
| client.getIteration(token, workspaceId, iterationId), | ||
| client.listStories(token, { | ||
| workspaceId, | ||
| iterationId, | ||
| limit: 200 | ||
| }), | ||
| client.getStoryStatusMap(token, workspaceId) | ||
| ]), { successText: "查询完成", failText: "查询迭代信息失败" }); | ||
| info(`${iterationData.name} (${iterationData.id})`); | ||
| info(`状态:${iterationStatusLabel(iterationData.status)} 时间:${iterationData.startdate || "-"} ~ ${iterationData.enddate || "-"} 创建人:${iterationData.creator || "-"}`); | ||
| if (iterationData.description) { | ||
| info(truncate(iterationData.description, 300)); | ||
| } | ||
| success(`需求总数 ${stories.length}`); | ||
| if (stories.length === 0) { | ||
| info("暂无需求"); | ||
| return; | ||
| } | ||
| info(formatStoryStatusSummary(stories, storyStatusMap)); | ||
| compactList(stories.map((story) => ({ | ||
| title: `${truncate(story.name, 72)} (${story.id})`, | ||
| lines: [`状态:${storyStatusLabel(story.status, storyStatusMap)}`] | ||
| }))); | ||
| }); | ||
| iteration | ||
| .command("tasks") | ||
| .argument("<iteration-id>", "TAPD 迭代 ID") | ||
| .description("查看迭代下的任务情况") | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .option("-w, --workspace-id <id>", "覆盖默认 workspace_id") | ||
| .option("-s, --status <status>", "按任务状态筛选:open/progressing/done") | ||
| .option("-o, --owner <owner>", "按处理人筛选") | ||
| .option("--all", "拉取全部任务") | ||
| .option("--limit <number>", "返回数量,默认 50", "50") | ||
| .addHelpText("after", ` | ||
| 示例: | ||
| tapd iteration tasks 1151611517001007745 | ||
| tapd iteration tasks 1151611517001007745 --status progressing | ||
| tapd iteration tasks 1151611517001007745 --all | ||
| `) | ||
| .action(async (iterationId, options) => { | ||
| const workspace = await resolveWorkspaceContext(process.cwd(), options.workspaceId); | ||
| workspaceBanner(workspace); | ||
| const workspaceId = workspace.id; | ||
| const client = new TapdClient(); | ||
| const token = await getToken(client); | ||
| const limit = Number.parseInt(options.limit ?? "50", 10); | ||
| if (!Number.isFinite(limit) || limit <= 0) | ||
| throw new Error("--limit 必须是正整数"); | ||
| const spinner = ora("查询迭代任务").start(); | ||
| const [iterationData, taskResult] = await withSpinner(spinner, async () => Promise.all([ | ||
| client.getIteration(token, workspaceId, iterationId), | ||
| loadTasks(client, token, { | ||
| workspaceId, | ||
| iterationId, | ||
| status: options.status, | ||
| owner: options.owner, | ||
| limit, | ||
| all: options.all | ||
| }) | ||
| ]), { successText: "查询完成", failText: "查询迭代任务失败" }); | ||
| info(`${iterationData.name} (${iterationData.id})`); | ||
| info(`状态:${iterationStatusLabel(iterationData.status)} 时间:${iterationData.startdate || "-"} ~ ${iterationData.enddate || "-"}`); | ||
| success(`任务总数 ${taskResult.total},当前展示 ${taskResult.tasks.length}`); | ||
| if (taskResult.tasks.length === 0) { | ||
| info("暂无任务"); | ||
| return; | ||
| } | ||
| info(formatTaskSummary(taskResult.tasks)); | ||
| renderTaskList(taskResult.tasks); | ||
| if (!options.all && taskResult.total > taskResult.tasks.length) { | ||
| info(`还有 ${taskResult.total - taskResult.tasks.length} 条未展示,可使用 --all 或调大 --limit`); | ||
| } | ||
| }); | ||
| } | ||
| //# sourceMappingURL=iteration.js.map |
| {"version":3,"file":"iteration.js","sourceRoot":"","sources":["../../src/commands/iteration.ts"],"names":[],"mappings":"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"} |
| export declare function taskStatusLabel(status?: string): string; | ||
| export declare function iterationStatusLabel(status?: string): string; | ||
| export declare function storyStatusLabel(status: string | undefined, statusMap?: Record<string, string>): string; |
| const TASK_STATUS_LABELS = { | ||
| open: "未开始", | ||
| progressing: "进行中", | ||
| done: "已完成" | ||
| }; | ||
| const ITERATION_STATUS_LABELS = { | ||
| open: "进行中", | ||
| done: "已完成", | ||
| closed: "已关闭" | ||
| }; | ||
| export function taskStatusLabel(status) { | ||
| if (!status) | ||
| return "-"; | ||
| return TASK_STATUS_LABELS[status] ?? status; | ||
| } | ||
| export function iterationStatusLabel(status) { | ||
| if (!status) | ||
| return "-"; | ||
| return ITERATION_STATUS_LABELS[status] ?? status; | ||
| } | ||
| export function storyStatusLabel(status, statusMap) { | ||
| if (!status) | ||
| return "-"; | ||
| return statusMap?.[status] ?? status; | ||
| } | ||
| //# sourceMappingURL=status.js.map |
| {"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GAA2B;IACjD,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,KAAK;IAClB,IAAI,EAAE,KAAK;CACZ,CAAC;AAEF,MAAM,uBAAuB,GAA2B;IACtD,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,KAAK;CACd,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,MAAe;IAC7C,IAAI,CAAC,MAAM;QAAE,OAAO,GAAG,CAAC;IACxB,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAe;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,GAAG,CAAC;IACxB,OAAO,uBAAuB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAA0B,EAAE,SAAkC;IAC7F,IAAI,CAAC,MAAM;QAAE,OAAO,GAAG,CAAC;IACxB,OAAO,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;AACvC,CAAC"} |
| import type { TapdClient } from "./api.js"; | ||
| import type { Task } from "./types.js"; | ||
| export declare function parseTaskEffort(value?: string): number; | ||
| export declare function formatTaskSchedule(task: Task): string; | ||
| export declare function formatTaskEffort(value?: string): string; | ||
| export declare function formatTaskSummary(tasks: Task[]): string; | ||
| export declare function renderTaskList(tasks: Task[]): void; | ||
| export declare function loadTasks(client: TapdClient, token: string, params: { | ||
| workspaceId: string; | ||
| storyId?: string; | ||
| iterationId?: string; | ||
| status?: string; | ||
| owner?: string; | ||
| limit: number; | ||
| all?: boolean; | ||
| }): Promise<{ | ||
| total: number; | ||
| tasks: Task[]; | ||
| }>; |
| import { taskStatusLabel } from "./status.js"; | ||
| import { compactList, info, truncate } from "./ui.js"; | ||
| export function parseTaskEffort(value) { | ||
| if (!value || value === "-") | ||
| return 0; | ||
| const parsed = Number.parseFloat(value); | ||
| return Number.isFinite(parsed) ? parsed : 0; | ||
| } | ||
| export function formatTaskSchedule(task) { | ||
| if (task.begin && task.due) | ||
| return `${task.begin} ~ ${task.due}`; | ||
| return task.begin || task.due || "未排期"; | ||
| } | ||
| export function formatTaskEffort(value) { | ||
| return value && value !== "-" ? `${value}d` : "-"; | ||
| } | ||
| export function formatTaskSummary(tasks) { | ||
| const counts = { | ||
| open: 0, | ||
| progressing: 0, | ||
| done: 0 | ||
| }; | ||
| let totalEffort = 0; | ||
| let earliestBegin; | ||
| let latestDue; | ||
| const owners = new Set(); | ||
| for (const task of tasks) { | ||
| if (task.status === "open") | ||
| counts.open += 1; | ||
| else if (task.status === "progressing") | ||
| counts.progressing += 1; | ||
| else if (task.status === "done") | ||
| counts.done += 1; | ||
| totalEffort += parseTaskEffort(task.effort); | ||
| if (task.begin && (!earliestBegin || task.begin < earliestBegin)) | ||
| earliestBegin = task.begin; | ||
| if (task.due && (!latestDue || task.due > latestDue)) | ||
| latestDue = task.due; | ||
| for (const owner of (task.owner ?? "").split(";")) { | ||
| const name = owner.trim(); | ||
| if (name) | ||
| owners.add(name); | ||
| } | ||
| } | ||
| const schedule = earliestBegin && latestDue | ||
| ? ` 起止时间:${earliestBegin} ~ ${latestDue}` | ||
| : earliestBegin | ||
| ? ` 起始时间:${earliestBegin}` | ||
| : latestDue | ||
| ? ` 截止时间:${latestDue}` | ||
| : ""; | ||
| const ownerSummary = owners.size > 0 ? ` 研发人员:${Array.from(owners).join("、")}` : ""; | ||
| return `未开始:${counts.open} 进行中:${counts.progressing} 已完成:${counts.done} 总预估工时:${totalEffort}${schedule}${ownerSummary}`; | ||
| } | ||
| export function renderTaskList(tasks) { | ||
| const groups = [ | ||
| { status: "progressing", title: "进行中" }, | ||
| { status: "open", title: "未开始" }, | ||
| { status: "done", title: "已完成" } | ||
| ]; | ||
| let printed = false; | ||
| for (const group of groups) { | ||
| const items = tasks.filter((task) => task.status === group.status); | ||
| if (items.length === 0) | ||
| continue; | ||
| if (printed) | ||
| console.log(""); | ||
| info(`${group.title}:`); | ||
| compactList(items.map((task) => { | ||
| const owner = task.owner || "未分配"; | ||
| const effort = formatTaskEffort(task.effort); | ||
| const progress = task.progress ? `${task.progress}%` : "-"; | ||
| return { | ||
| title: `${truncate(task.name, 72)} (${task.id})`, | ||
| lines: [`${owner} ${effort} ${progress} ${formatTaskSchedule(task)}`] | ||
| }; | ||
| })); | ||
| printed = true; | ||
| } | ||
| const others = tasks.filter((task) => !groups.some((group) => group.status === task.status)); | ||
| if (others.length > 0) { | ||
| if (printed) | ||
| console.log(""); | ||
| info("其他:"); | ||
| compactList(others.map((task) => { | ||
| const owner = task.owner || "未分配"; | ||
| const effort = formatTaskEffort(task.effort); | ||
| const progress = task.progress ? `${task.progress}%` : "-"; | ||
| return { | ||
| title: `${truncate(task.name, 72)} (${task.id})`, | ||
| lines: [`${taskStatusLabel(task.status)} ${owner} ${effort} ${progress} ${formatTaskSchedule(task)}`] | ||
| }; | ||
| })); | ||
| } | ||
| } | ||
| export async function loadTasks(client, token, params) { | ||
| const total = await client.countTasks(token, { | ||
| workspaceId: params.workspaceId, | ||
| storyId: params.storyId, | ||
| iterationId: params.iterationId, | ||
| status: params.status, | ||
| owner: params.owner | ||
| }); | ||
| const target = params.all ? total : Math.min(total, params.limit); | ||
| if (target === 0) | ||
| return { total, tasks: [] }; | ||
| const tasks = []; | ||
| let page = 1; | ||
| while (tasks.length < target) { | ||
| const batchSize = Math.min(200, target - tasks.length); | ||
| const pageItems = await client.listTasks(token, { | ||
| workspaceId: params.workspaceId, | ||
| storyId: params.storyId, | ||
| iterationId: params.iterationId, | ||
| status: params.status, | ||
| owner: params.owner, | ||
| page, | ||
| limit: batchSize | ||
| }); | ||
| tasks.push(...pageItems); | ||
| if (pageItems.length < batchSize) | ||
| break; | ||
| page += 1; | ||
| } | ||
| return { total, tasks }; | ||
| } | ||
| //# sourceMappingURL=task-view.js.map |
| {"version":3,"file":"task-view.js","sourceRoot":"","sources":["../src/task-view.ts"],"names":[],"mappings":"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"} |
+19
-1
@@ -1,2 +0,2 @@ | ||
| import type { Attachment, Comment, Iteration, Story, TapdAppCredentials, TapdToken, Workspace, WorkspaceUser } from "./types.js"; | ||
| import type { Attachment, Comment, Iteration, Story, TapdAppCredentials, TapdToken, Task, Workspace, WorkspaceUser } from "./types.js"; | ||
| type TapdResponse<T> = { | ||
@@ -21,2 +21,6 @@ status: number; | ||
| }; | ||
| export type GetImageParams = { | ||
| workspaceId: string; | ||
| imagePath: string; | ||
| }; | ||
| export type ListStoriesParams = { | ||
@@ -29,2 +33,11 @@ workspaceId: string; | ||
| }; | ||
| export type ListTasksParams = { | ||
| workspaceId: string; | ||
| storyId?: string; | ||
| iterationId?: string; | ||
| limit?: number; | ||
| page?: number; | ||
| status?: string; | ||
| owner?: string; | ||
| }; | ||
| export declare function isStoryNotFoundError(error: unknown, storyId?: string): boolean; | ||
@@ -45,5 +58,10 @@ export declare class TapdClient { | ||
| uploadImageBase64(token: string, params: UploadImageBase64Params): Promise<Attachment>; | ||
| getImage(token: string, params: GetImageParams): Promise<Attachment>; | ||
| addComment(token: string, payload: Record<string, string | undefined>): Promise<Comment>; | ||
| listComments(token: string, workspaceId: string, storyId: string): Promise<Comment[]>; | ||
| countTasks(token: string, params: Omit<ListTasksParams, "limit" | "page">): Promise<number>; | ||
| listTasks(token: string, params: ListTasksParams): Promise<Task[]>; | ||
| getIteration(token: string, workspaceId: string, iterationId: string): Promise<Iteration>; | ||
| getStoryStatusMap(token: string, workspaceId: string): Promise<Record<string, string>>; | ||
| } | ||
| export {}; |
+65
-0
@@ -166,2 +166,14 @@ export function isStoryNotFoundError(error, storyId) { | ||
| } | ||
| async getImage(token, params) { | ||
| const response = await this.request("/files/get_image", { | ||
| token, | ||
| query: { | ||
| workspace_id: params.workspaceId, | ||
| image_path: params.imagePath | ||
| } | ||
| }); | ||
| if (!response.data?.Attachment) | ||
| throw new Error("获取图片成功但响应缺少 Attachment"); | ||
| return response.data.Attachment; | ||
| } | ||
| async addComment(token, payload) { | ||
@@ -191,3 +203,56 @@ const response = await this.request("/comments", { | ||
| } | ||
| async countTasks(token, params) { | ||
| const response = await this.request("/tasks/count", { | ||
| token, | ||
| query: { | ||
| workspace_id: params.workspaceId, | ||
| story_id: params.storyId, | ||
| iteration_id: params.iterationId, | ||
| status: params.status, | ||
| owner: params.owner | ||
| } | ||
| }); | ||
| const count = response.data?.count; | ||
| const parsed = typeof count === "string" ? Number.parseInt(count, 10) : count; | ||
| return Number.isFinite(parsed) ? Number(parsed) : 0; | ||
| } | ||
| async listTasks(token, params) { | ||
| const response = await this.request("/tasks", { | ||
| token, | ||
| query: { | ||
| workspace_id: params.workspaceId, | ||
| story_id: params.storyId, | ||
| iteration_id: params.iterationId, | ||
| limit: params.limit ?? 100, | ||
| page: params.page ?? 1, | ||
| status: params.status, | ||
| owner: params.owner, | ||
| fields: "id,name,story_id,status,owner,begin,due,progress,effort,effort_completed,remain,iteration_id,created,modified" | ||
| } | ||
| }); | ||
| return (response.data ?? []).map((item) => item.Task); | ||
| } | ||
| async getIteration(token, workspaceId, iterationId) { | ||
| const response = await this.request("/iterations", { | ||
| token, | ||
| query: { | ||
| workspace_id: workspaceId, | ||
| id: iterationId, | ||
| limit: 1, | ||
| fields: "id,name,status,startdate,enddate,creator,description" | ||
| } | ||
| }); | ||
| const iteration = response.data?.[0]?.Iteration; | ||
| if (!iteration) | ||
| throw new Error(`未找到迭代:${iterationId}`); | ||
| return iteration; | ||
| } | ||
| async getStoryStatusMap(token, workspaceId) { | ||
| const response = await this.request("/stories/get_fields_info", { | ||
| token, | ||
| query: { workspace_id: workspaceId } | ||
| }); | ||
| return response.data?.status?.options ?? {}; | ||
| } | ||
| } | ||
| //# sourceMappingURL=api.js.map |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,2 @@ | ||
| export declare function registerAuth(program: import("commander").Command): void; | ||
| export declare function registerLogin(program: import("commander").Command): void; | ||
| export declare function registerLogout(program: import("commander").Command): void; |
+30
-37
| import { input, password, select } from "@inquirer/prompts"; | ||
| import ora from "ora"; | ||
| import { TapdClient } from "../api.js"; | ||
| import { loadConfig, saveConfig, saveCredentials } from "../config.js"; | ||
| import { maskSecret, success, exitHint } from "../ui.js"; | ||
| export function registerAuth(program) { | ||
| const auth = program | ||
| .command("auth") | ||
| .description("授权与凭证管理") | ||
| .addHelpText("after", ` | ||
| 示例: | ||
| tapd auth bind | ||
| tapd auth bind --mode app --client-id tapd-app-xxx --company-id 41988264 | ||
| tapd auth bind --mode personal --personal-token *** --workspace-id 58491787 | ||
| 说明: | ||
| 凭证保存到 .tapd/credentials.json,company_id 保存到 .tapd/config.json。 | ||
| `); | ||
| auth | ||
| .command("bind") | ||
| .description("绑定 TAPD 应用凭证或个人令牌") | ||
| import { COPY } from "../command-text.js"; | ||
| import { deleteCredentials, loadConfig, saveConfig, saveCredentials } from "../config.js"; | ||
| import { currentWorkspaceHelpText, maskSecret, success } from "../ui.js"; | ||
| export function registerLogin(program) { | ||
| program | ||
| .command("login") | ||
| .description(COPY.loginDescription) | ||
| .addHelpCommand(false) | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .addHelpText("after", `\n${COPY.loginHelpAfter}`) | ||
| .option("--mode <mode>", "认证模式:app 或 personal") | ||
@@ -28,17 +20,8 @@ .option("--client-id <id>", "TAPD 应用 ID") | ||
| .option("--workspace-id <id>", "个人令牌验证用 workspace_id") | ||
| .addHelpText("after", ` | ||
| 示例: | ||
| tapd auth bind | ||
| tapd auth bind --mode app --client-id tapd-app-xxx --client-secret *** --company-id 41988264 | ||
| tapd auth bind --mode personal --personal-token *** --workspace-id 58491787 | ||
| `) | ||
| .action(async (options) => { | ||
| if (!options.mode) { | ||
| exitHint(); | ||
| } | ||
| const mode = (options.mode ?? await select({ | ||
| message: "选择认证方式", | ||
| message: COPY.loginModeMessage, | ||
| choices: [ | ||
| { name: "开放应用凭证 client_id/client_secret", value: "app" }, | ||
| { name: "个人令牌 Bearer token", value: "personal" } | ||
| { name: COPY.loginModeApp, value: "app" }, | ||
| { name: COPY.loginModePersonal, value: "personal" } | ||
| ] | ||
@@ -51,8 +34,8 @@ })).trim(); | ||
| const personalToken = (options.personalToken ?? await password({ | ||
| message: "个人令牌", | ||
| message: COPY.loginPersonalTokenMessage, | ||
| mask: "*", | ||
| validate: (value) => value.trim().length > 0 || "请输入个人令牌" | ||
| validate: (value) => value.trim().length > 0 || COPY.loginPersonalTokenRequired | ||
| })).trim(); | ||
| const workspaceId = (options.workspaceId ?? await input({ | ||
| message: "验证用 workspace_id", | ||
| message: COPY.loginWorkspaceIdMessage, | ||
| required: true | ||
@@ -85,9 +68,9 @@ })).trim(); | ||
| } | ||
| const clientId = (options.clientId ?? await input({ message: "应用 ID", required: true })).trim(); | ||
| const clientId = (options.clientId ?? await input({ message: COPY.loginClientIdMessage, required: true })).trim(); | ||
| const clientSecret = (options.clientSecret ?? await password({ | ||
| message: "应用密钥", | ||
| message: COPY.loginClientSecretMessage, | ||
| mask: "*", | ||
| validate: (value) => value.trim().length > 0 || "请输入应用密钥" | ||
| validate: (value) => value.trim().length > 0 || COPY.loginClientSecretRequired | ||
| })).trim(); | ||
| const companyId = (options.companyId ?? await input({ message: "企业 ID company_id", required: true })).trim(); | ||
| const companyId = (options.companyId ?? await input({ message: COPY.loginCompanyIdMessage, required: true })).trim(); | ||
| const spinner = ora("验证 TAPD 凭证").start(); | ||
@@ -111,2 +94,12 @@ let token; | ||
| } | ||
| export function registerLogout(program) { | ||
| program | ||
| .command("logout") | ||
| .description(COPY.logoutDescription) | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .action(async () => { | ||
| await deleteCredentials(); | ||
| success("已清除本地认证文件:.tapd/credentials.json"); | ||
| }); | ||
| } | ||
| function upsertWorkspace(current, workspace) { | ||
@@ -113,0 +106,0 @@ const next = (current ?? []).filter((item) => item.id !== workspace.id); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"} |
@@ -9,3 +9,3 @@ import { readFile } from "node:fs/promises"; | ||
| import { getToken } from "../session.js"; | ||
| import { success, table, truncate, workspaceBanner } from "../ui.js"; | ||
| import { currentWorkspaceHelpText, success, table, truncate, withSpinner, workspaceBanner } from "../ui.js"; | ||
| async function resolveStoryId(value) { | ||
@@ -23,2 +23,4 @@ if (!existsSync(value)) | ||
| .description("TAPD 需求评论") | ||
| .addHelpCommand(false) | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .addHelpText("after", ` | ||
@@ -34,2 +36,3 @@ 示例: | ||
| .description("添加需求评论") | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .addOption(new Option("-m, --message <text>", "评论 Markdown 文本").conflicts("file")) | ||
@@ -59,3 +62,3 @@ .addOption(new Option("-f, --file <file>", "评论 Markdown 文件").conflicts("message")) | ||
| const spinner = ora("添加评论").start(); | ||
| const created = await client.addComment(token, { | ||
| const created = await withSpinner(spinner, () => client.addComment(token, { | ||
| workspace_id: workspaceId, | ||
@@ -66,4 +69,6 @@ entry_type: "stories", | ||
| description: html | ||
| }), { | ||
| successText: "评论添加成功", | ||
| failText: "评论添加失败" | ||
| }); | ||
| spinner.succeed("评论添加成功"); | ||
| success(`${created.id} ${created.created ?? ""}`.trim()); | ||
@@ -75,2 +80,3 @@ }); | ||
| .description("查看需求评论") | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .option("-w, --workspace-id <id>", "覆盖 workspace_id") | ||
@@ -77,0 +83,0 @@ .addHelpText("after", ` |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"comment.js","sourceRoot":"","sources":["../../src/commands/comment.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"comment.js","sourceRoot":"","sources":["../../src/commands/comment.ts"],"names":[],"mappings":"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"} |
+21
-24
| import { select } from "@inquirer/prompts"; | ||
| import ora from "ora"; | ||
| import { TapdClient } from "../api.js"; | ||
| import { COPY } from "../command-text.js"; | ||
| import { loadConfig, loadCredentials, saveConfig } from "../config.js"; | ||
| import { getToken } from "../session.js"; | ||
| import { success, exitHint } from "../ui.js"; | ||
| import { currentWorkspaceHelpText, success, withSpinner } from "../ui.js"; | ||
| export function registerInit(program) { | ||
| program | ||
| .command("init") | ||
| .description("初始化当前项目,选择默认 TAPD 空间") | ||
| .addHelpText("after", ` | ||
| 示例: | ||
| tapd init | ||
| 说明: | ||
| 应用凭证模式会读取 company_id 并拉取空间列表供下拉选择。 | ||
| 个人令牌模式会验证当前默认 workspace,因为个人令牌通常不能列出企业项目。 | ||
| `) | ||
| .description(COPY.initDescription) | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .addHelpText("after", `\n${COPY.initHelpAfter}`) | ||
| .action(async () => { | ||
| const config = await loadConfig(); | ||
| const credentials = await loadCredentials().catch(() => { | ||
| throw new Error("缺少 TAPD 凭证,请先运行 tapd auth bind"); | ||
| throw new Error("缺少 TAPD 凭证,请先运行 tapd login"); | ||
| }); | ||
@@ -28,7 +23,9 @@ const client = new TapdClient(); | ||
| if (!config.defaultWorkspaceId) { | ||
| throw new Error("个人令牌模式缺少默认 workspace_id,请重新运行 tapd auth bind --mode personal --workspace-id <id>"); | ||
| throw new Error("个人令牌模式缺少默认 workspace_id,请重新运行 tapd login --mode personal --workspace-id <id>"); | ||
| } | ||
| const defaultWorkspaceId = config.defaultWorkspaceId; | ||
| const spinner = ora("验证默认 TAPD 空间").start(); | ||
| const workspace = await client.verifyPersonalToken(token, config.defaultWorkspaceId); | ||
| spinner.succeed(`默认空间可用:${workspace.name} (${workspace.id})`); | ||
| const workspace = await withSpinner(spinner, () => client.verifyPersonalToken(token, defaultWorkspaceId), { | ||
| successText: `默认空间可用:${config.defaultWorkspaceName ?? config.defaultWorkspaceId}` | ||
| }); | ||
| // 选择默认创建人 | ||
@@ -38,7 +35,6 @@ const users = await client.listUsers(token, workspace.id); | ||
| if (users.length > 0) { | ||
| exitHint(); | ||
| defaultCreator = await select({ | ||
| message: "选择默认创建人", | ||
| message: COPY.initSelectCreatorMessage, | ||
| choices: [ | ||
| { name: "不设置默认创建人", value: "" }, | ||
| { name: COPY.initNoDefaultCreator, value: "" }, | ||
| ...users.map((item) => ({ | ||
@@ -68,11 +64,12 @@ name: `${item.user}${item.name ? ` - ${item.name}` : ""}`, | ||
| if (!config.companyId) | ||
| throw new Error("缺少 company_id,请先运行 tapd auth bind"); | ||
| throw new Error("缺少 company_id,请先运行 tapd login"); | ||
| const spinner = ora("拉取 TAPD 空间列表").start(); | ||
| const workspaces = await client.listWorkspaces(token, config.companyId); | ||
| spinner.stop(); | ||
| const companyId = config.companyId; | ||
| const workspaces = await withSpinner(spinner, () => client.listWorkspaces(token, companyId), { | ||
| stopOnSuccess: true | ||
| }); | ||
| if (workspaces.length === 0) | ||
| throw new Error("当前 company_id 下没有可用空间"); | ||
| exitHint(); | ||
| const workspaceId = await select({ | ||
| message: "选择默认空间", | ||
| message: COPY.initSelectWorkspaceMessage, | ||
| choices: workspaces.map((workspace) => ({ | ||
@@ -89,5 +86,5 @@ name: `${workspace.name} (${workspace.id})`, | ||
| defaultCreator = await select({ | ||
| message: "选择默认创建人", | ||
| message: COPY.initSelectCreatorMessage, | ||
| choices: [ | ||
| { name: "不设置默认创建人", value: "" }, | ||
| { name: COPY.initNoDefaultCreator, value: "" }, | ||
| ...users.map((item) => ({ | ||
@@ -94,0 +91,0 @@ name: `${item.user}${item.name ? ` - ${item.name}` : ""}`, |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE1E,MAAM,UAAU,YAAY,CAAC,OAAoC;IAC/D,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC;SACjC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,wBAAwB,EAAE,IAAI,CAAC;SAC9D,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;SAC/C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,eAAe,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;YACrD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,WAAW,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;YAClG,CAAC;YACD,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;YACrD,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;YAC5C,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,CAAC,EAAE;gBACxG,WAAW,EAAE,UAAU,MAAM,CAAC,oBAAoB,IAAI,MAAM,CAAC,kBAAkB,EAAE;aAClF,CAAC,CAAC;YAEH,UAAU;YACV,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YAC1D,IAAI,cAAkC,CAAC;YACvC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,cAAc,GAAG,MAAM,MAAM,CAAC;oBAC5B,OAAO,EAAE,IAAI,CAAC,wBAAwB;oBACtC,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,EAAE;wBAC9C,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;4BACtB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;4BACzD,KAAK,EAAE,IAAI,CAAC,IAAI;yBACjB,CAAC,CAAC;qBACJ;iBACF,CAAC,CAAC;gBACH,IAAI,cAAc,KAAK,EAAE;oBAAE,cAAc,GAAG,SAAS,CAAC;YACxD,CAAC;YAED,MAAM,UAAU,CAAC;gBACf,GAAG,MAAM;gBACT,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS;gBAClD,kBAAkB,EAAE,SAAS,CAAC,EAAE;gBAChC,oBAAoB,EAAE,SAAS,CAAC,IAAI;gBACpC,cAAc;gBACd,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC;aAC1D,CAAC,CAAC;YACH,OAAO,CAAC,OAAO,CAAC,CAAC;YACjB,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC;YACrC,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAExE,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;YAC3F,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QAEH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAEtE,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC;YAC/B,OAAO,EAAE,IAAI,CAAC,0BAA0B;YACxC,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACtC,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,GAAG;gBAC3C,KAAK,EAAE,SAAS,CAAC,EAAE;aACpB,CAAC,CAAC;SACJ,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,WAAW,CAAE,CAAC;QAEtE,UAAU;QACV,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACzD,IAAI,cAAkC,CAAC;QACvC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,cAAc,GAAG,MAAM,MAAM,CAAC;gBAC5B,OAAO,EAAE,IAAI,CAAC,wBAAwB;gBACtC,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,EAAE;oBAC9C,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACtB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;wBACzD,KAAK,EAAE,IAAI,CAAC,IAAI;qBACjB,CAAC,CAAC;iBACJ;aACF,CAAC,CAAC;YACH,IAAI,cAAc,KAAK,EAAE;gBAAE,cAAc,GAAG,SAAS,CAAC;QACxD,CAAC;QAED,MAAM,UAAU,CAAC;YACf,GAAG,MAAM;YACT,kBAAkB,EAAE,SAAS,CAAC,EAAE;YAChC,oBAAoB,EAAE,SAAS,CAAC,IAAI;YACpC,cAAc;SACf,CAAC,CAAC;QACH,OAAO,CAAC,QAAQ,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;QACpD,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,eAAe,CACtB,OAA4E,EAC5E,SAA2D;IAE3D,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC;IACxE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC"} |
+230
-123
| import { input, select } from "@inquirer/prompts"; | ||
| import { existsSync } from "node:fs"; | ||
| import { mkdir, writeFile } from "node:fs/promises"; | ||
| import { dirname, join } from "node:path"; | ||
| import ora from "ora"; | ||
| import { isStoryNotFoundError, TapdClient } from "../api.js"; | ||
| import { COPY } from "../command-text.js"; | ||
| import { resolveWorkspaceContext, loadConfig } from "../config.js"; | ||
| import { convertLocalImageReferences, hasLocalImageReferences, imageDataUri as localImageDataUri, stripLocalDocumentLinks } from "../local-assets.js"; | ||
| import { convertMermaidBlocks, hasMermaidBlocks, imageDataUri as mermaidImageDataUri } from "../mermaid.js"; | ||
| import { markdownToHtml, readMarkdown, titleFromDocument, writeFrontmatter } from "../markdown.js"; | ||
| import { htmlToMarkdown, markdownToHtml, readMarkdown, titleFromDocument, writeMarkdown, writeFrontmatter } from "../markdown.js"; | ||
| import { getToken } from "../session.js"; | ||
| import { exitHint, info, success, table, truncate, workspaceBanner } from "../ui.js"; | ||
| import { iterationStatusLabel, storyStatusLabel } from "../status.js"; | ||
| import { formatTaskSummary, loadTasks, renderTaskList } from "../task-view.js"; | ||
| import { compactList, currentWorkspaceHelpText, info, success, truncate, withSpinner, workspaceBanner } from "../ui.js"; | ||
| function selectableIterations(iterations) { | ||
| return iterations.filter((item) => item.status !== "closed" && item.status !== "done"); | ||
| } | ||
| async function chooseIteration(client, token, workspaceId) { | ||
| const iterations = await client.listIterations(token, workspaceId); | ||
| const iterations = selectableIterations(await client.listIterations(token, workspaceId)); | ||
| if (iterations.length === 0) | ||
| return undefined; | ||
| return select({ | ||
| message: "选择迭代", | ||
| message: COPY.storySelectIterationMessage, | ||
| choices: [ | ||
| { name: "不关联迭代", value: "" }, | ||
| { name: COPY.storyNoIteration, value: "" }, | ||
| ...iterations.map((item) => ({ | ||
| name: `${item.name} (${item.id}) ${item.status ?? ""}`.trim(), | ||
| name: `${item.name} (${item.id}) ${iterationStatusLabel(item.status)}`.trim(), | ||
| value: item.id | ||
@@ -30,3 +39,3 @@ })) | ||
| return select({ | ||
| message: "选择创建人", | ||
| message: COPY.storySelectCreatorMessage, | ||
| choices: users.map((item) => ({ | ||
@@ -38,2 +47,17 @@ name: `${item.user}${item.name ? ` - ${item.name}` : ""}`, | ||
| } | ||
| async function resolveStoryTarget(value) { | ||
| if (!existsSync(value)) | ||
| return { storyId: value }; | ||
| const doc = await readMarkdown(value); | ||
| if (!doc.frontmatter.tapd_id) | ||
| throw new Error("Markdown frontmatter 缺少 tapd_id"); | ||
| return { storyId: doc.frontmatter.tapd_id, workspaceId: doc.frontmatter.workspace_id }; | ||
| } | ||
| function renderStoryList(stories) { | ||
| compactList(stories.map((item) => { | ||
| return { | ||
| title: `${truncate(item.name, 72)} (${item.id})` | ||
| }; | ||
| })); | ||
| } | ||
| function extractTapdImageSources(html = "") { | ||
@@ -199,21 +223,10 @@ return [...html.matchAll(/<img[^>]+src="([^"]+)"/g)] | ||
| .command("story") | ||
| .description("TAPD 需求管理") | ||
| .addHelpText("after", ` | ||
| 示例: | ||
| tapd story create ./需求.md | ||
| tapd story update ./需求.md | ||
| tapd story get 1147232921001000017 | ||
| Markdown frontmatter: | ||
| --- | ||
| title: "需求标题" | ||
| iteration_id: "1147232921001000005" | ||
| creator: "黄启智" | ||
| label: "local-md|cli" | ||
| status: "planning" | ||
| --- | ||
| `); | ||
| .description(COPY.storyDescription) | ||
| .addHelpCommand(false) | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .addHelpText("after", `\n${COPY.storyHelpAfter}`); | ||
| story | ||
| .command("list") | ||
| .description("查询需求列表,默认加载全部,也可交互选择分类") | ||
| .description(COPY.storyListDescription) | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .option("-w, --workspace-id <id>", "覆盖默认 workspace_id") | ||
@@ -225,14 +238,3 @@ .option("-s, --status <status>", "按状态筛选,例如 planning") | ||
| .option("--limit <number>", "返回数量,默认 100", "100") | ||
| .addHelpText("after", ` | ||
| 示例: | ||
| tapd story list | ||
| tapd story list --all | ||
| tapd story list --status planning | ||
| tapd story list --iteration-id 1147232921001000005 | ||
| tapd story list --label html-richtext | ||
| 说明: | ||
| 不传筛选参数时,会出现分类下拉:全部、状态、迭代、标签。 | ||
| 默认选“全部”,最多返回 --limit 条。 | ||
| `) | ||
| .addHelpText("after", `\n${COPY.storyListHelpAfter}`) | ||
| .action(async (options) => { | ||
@@ -250,9 +252,9 @@ const workspace = await resolveWorkspaceContext(process.cwd(), options.workspaceId); | ||
| const category = await select({ | ||
| message: "选择需求分类", | ||
| message: COPY.storySelectCategoryMessage, | ||
| default: "all", | ||
| choices: [ | ||
| { name: "全部需求", value: "all" }, | ||
| { name: "按状态筛选", value: "status" }, | ||
| { name: "按迭代筛选", value: "iteration" }, | ||
| { name: "按标签筛选", value: "label" } | ||
| { name: COPY.storyCategoryAll, value: "all" }, | ||
| { name: COPY.storyCategoryStatus, value: "status" }, | ||
| { name: COPY.storyCategoryIteration, value: "iteration" }, | ||
| { name: COPY.storyCategoryLabel, value: "label" } | ||
| ] | ||
@@ -262,20 +264,22 @@ }); | ||
| status = await select({ | ||
| message: "选择状态", | ||
| message: COPY.storySelectStatusMessage, | ||
| choices: [ | ||
| { name: "规划中 planning", value: "planning" }, | ||
| { name: "开发中 developing", value: "developing" }, | ||
| { name: "已实现 resolved", value: "resolved" }, | ||
| { name: "已拒绝 rejected", value: "rejected" }, | ||
| { name: "自定义输入", value: "__custom__" } | ||
| { name: `${COPY.storyStatusPlanningOption} planning`, value: "planning" }, | ||
| { name: `${COPY.storyStatusDevelopingOption} developing`, value: "developing" }, | ||
| { name: `${COPY.storyStatusResolvedOption} resolved`, value: "resolved" }, | ||
| { name: `${COPY.storyStatusRejectedOption} rejected`, value: "rejected" }, | ||
| { name: COPY.storyStatusCustomOption, value: "__custom__" } | ||
| ] | ||
| }); | ||
| if (status === "__custom__") | ||
| status = await input({ message: "输入状态值", required: true }); | ||
| status = await input({ message: COPY.storyInputStatusMessage, required: true }); | ||
| } | ||
| else if (category === "iteration") { | ||
| const iterations = await client.listIterations(token, workspaceId); | ||
| const iterations = selectableIterations(await client.listIterations(token, workspaceId)); | ||
| if (iterations.length === 0) | ||
| throw new Error("当前空间没有可选的进行中迭代"); | ||
| iterationId = await select({ | ||
| message: "选择迭代", | ||
| message: COPY.storySelectIterationMessage, | ||
| choices: iterations.map((item) => ({ | ||
| name: `${item.name} (${item.id}) ${item.status ?? ""}`.trim(), | ||
| name: `${item.name} (${item.id}) ${iterationStatusLabel(item.status)}`.trim(), | ||
| value: item.id | ||
@@ -286,3 +290,3 @@ })) | ||
| else if (category === "label") { | ||
| label = await input({ message: "输入标签", required: true }); | ||
| label = await input({ message: COPY.storyInputLabelMessage, required: true }); | ||
| } | ||
@@ -294,3 +298,3 @@ } | ||
| const spinner = ora("查询 TAPD 需求").start(); | ||
| const stories = await client.listStories(token, { | ||
| const stories = await withSpinner(spinner, () => client.listStories(token, { | ||
| workspaceId, | ||
@@ -301,27 +305,61 @@ limit, | ||
| label | ||
| }), { | ||
| successText: "查询完成", | ||
| failText: "查询 TAPD 需求失败" | ||
| }); | ||
| spinner.succeed(`查询完成,共 ${stories.length} 条`); | ||
| table(stories.map((item) => ({ | ||
| id: item.id, | ||
| title: truncate(item.name, 36), | ||
| status: item.status, | ||
| iteration: item.iteration_id && item.iteration_id !== "0" ? item.iteration_id : "", | ||
| label: truncate(item.label, 24), | ||
| modified: item.modified | ||
| }))); | ||
| success(`共 ${stories.length} 条`); | ||
| renderStoryList(stories); | ||
| }); | ||
| story | ||
| .command("tasks") | ||
| .argument("<markdown-file-or-story-id>", "Markdown 文件或 TAPD 需求 ID") | ||
| .description(COPY.storyTasksDescription) | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .option("-w, --workspace-id <id>", "覆盖默认 workspace_id") | ||
| .option("-s, --status <status>", "按任务状态筛选:open/progressing/done") | ||
| .option("-o, --owner <owner>", "按处理人筛选") | ||
| .option("--all", "拉取全部任务") | ||
| .option("--limit <number>", "返回数量,默认 50", "50") | ||
| .addHelpText("after", `\n${COPY.storyTasksHelpAfter}`) | ||
| .action(async (value, options) => { | ||
| const resolved = await resolveStoryTarget(value); | ||
| const workspace = await resolveWorkspaceContext(process.cwd(), resolved.workspaceId ?? options.workspaceId); | ||
| workspaceBanner(workspace); | ||
| const workspaceId = workspace.id; | ||
| const client = new TapdClient(); | ||
| const token = await getToken(client); | ||
| const limit = Number.parseInt(options.limit ?? "50", 10); | ||
| if (!Number.isFinite(limit) || limit <= 0) | ||
| throw new Error("--limit 必须是正整数"); | ||
| const spinner = ora("查询需求任务").start(); | ||
| const [storyData, taskResult] = await withSpinner(spinner, async () => Promise.all([ | ||
| client.getStory(token, workspaceId, resolved.storyId), | ||
| loadTasks(client, token, { | ||
| workspaceId, | ||
| storyId: resolved.storyId, | ||
| status: options.status, | ||
| owner: options.owner, | ||
| limit, | ||
| all: options.all | ||
| }) | ||
| ]), { successText: "查询完成", failText: "查询需求任务失败" }); | ||
| info(`${storyData.name} (${storyData.id})`); | ||
| success(`任务总数 ${taskResult.total},当前展示 ${taskResult.tasks.length}`); | ||
| if (taskResult.tasks.length === 0) { | ||
| info("暂无任务"); | ||
| return; | ||
| } | ||
| info(formatTaskSummary(taskResult.tasks)); | ||
| renderTaskList(taskResult.tasks); | ||
| if (!options.all && taskResult.total > taskResult.tasks.length) { | ||
| info(`还有 ${taskResult.total - taskResult.tasks.length} 条未展示,可使用 --all 或调大 --limit`); | ||
| } | ||
| }); | ||
| story | ||
| .command("create") | ||
| .argument("<markdown-file>", "本地 Markdown 文件") | ||
| .description("从 Markdown 创建 TAPD 需求,并写回 tapd_id") | ||
| .description(COPY.storyCreateDescription) | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .option("-w, --workspace-id <id>", "覆盖默认 workspace_id") | ||
| .addHelpText("after", ` | ||
| 示例: | ||
| tapd story create ./需求.md | ||
| tapd story create ./需求.md --workspace-id 47232921 | ||
| 行为: | ||
| 缺少 iteration_id 或 creator 时,会交互式拉取 TAPD 数据并下拉选择。 | ||
| 创建成功后会写回 tapd_id、workspace_id、created_at。 | ||
| `) | ||
| .addHelpText("after", `\n${COPY.storyCreateHelpAfter}`) | ||
| .action(async (file, options) => { | ||
@@ -337,10 +375,6 @@ const doc = await readMarkdown(file); | ||
| const defaultCreator = config.defaultCreator; | ||
| if (!doc.frontmatter.iteration_id || (!doc.frontmatter.creator && !defaultCreator)) { | ||
| exitHint(); | ||
| } | ||
| const iterationId = doc.frontmatter.iteration_id ?? await chooseIteration(client, token, workspaceId); | ||
| const creator = doc.frontmatter.creator ?? defaultCreator ?? await chooseCreator(client, token, workspaceId); | ||
| const spinner = ora("创建 TAPD 需求").start(); | ||
| const created = await createStoryFromMarkdown(file, doc, client, token, workspaceId, iterationId, creator, spinner); | ||
| spinner.succeed("需求创建成功"); | ||
| const created = await withSpinner(spinner, () => createStoryFromMarkdown(file, doc, client, token, workspaceId, iterationId, creator, spinner), { successText: "需求创建成功", failText: "创建 TAPD 需求失败" }); | ||
| success(`${created.name} (${created.id})`); | ||
@@ -351,11 +385,6 @@ }); | ||
| .argument("<markdown-file>", "本地 Markdown 文件") | ||
| .description("根据 Markdown frontmatter 更新 TAPD 需求") | ||
| .description(COPY.storyUpdateDescription) | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .option("-w, --workspace-id <id>", "覆盖 workspace_id") | ||
| .addHelpText("after", ` | ||
| 示例: | ||
| tapd story update ./需求.md | ||
| 要求: | ||
| Markdown frontmatter 必须已有 tapd_id。 | ||
| `) | ||
| .addHelpText("after", `\n${COPY.storyUpdateHelpAfter}`) | ||
| .action(async (file, options) => { | ||
@@ -365,2 +394,3 @@ const doc = await readMarkdown(file); | ||
| throw new Error("Markdown frontmatter 缺少 tapd_id,无法更新"); | ||
| const tapdId = doc.frontmatter.tapd_id; | ||
| const workspace = await resolveWorkspaceContext(process.cwd(), doc.frontmatter.workspace_id ?? options.workspaceId); | ||
@@ -372,24 +402,25 @@ workspaceBanner(workspace); | ||
| const spinner = ora("更新 TAPD 需求").start(); | ||
| if (hasUploadableLocalResources(doc.content)) | ||
| spinner.text = "上传本地图片资源并更新需求"; | ||
| let updated; | ||
| try { | ||
| await client.getStory(token, workspaceId, doc.frontmatter.tapd_id); | ||
| updated = await updateStoryFromMarkdown(client, token, { | ||
| id: doc.frontmatter.tapd_id, | ||
| workspace_id: workspaceId, | ||
| name: titleFromDocument(doc), | ||
| iteration_id: doc.frontmatter.iteration_id, | ||
| creator: doc.frontmatter.creator, | ||
| owner: doc.frontmatter.owner, | ||
| label: doc.frontmatter.label, | ||
| status: doc.frontmatter.status | ||
| }, doc, workspaceId, doc.frontmatter.tapd_id, doc.frontmatter.creator); | ||
| } | ||
| catch (error) { | ||
| if (!isStoryNotFoundError(error, doc.frontmatter.tapd_id)) | ||
| throw error; | ||
| spinner.text = "TAPD 需求不存在,重新创建需求"; | ||
| updated = await createStoryFromMarkdown(file, doc, client, token, workspaceId, doc.frontmatter.iteration_id, doc.frontmatter.creator, spinner); | ||
| } | ||
| const updated = await withSpinner(spinner, async () => { | ||
| if (hasUploadableLocalResources(doc.content)) | ||
| spinner.text = "上传本地图片资源并更新需求"; | ||
| try { | ||
| await client.getStory(token, workspaceId, tapdId); | ||
| return await updateStoryFromMarkdown(client, token, { | ||
| id: tapdId, | ||
| workspace_id: workspaceId, | ||
| name: titleFromDocument(doc), | ||
| iteration_id: doc.frontmatter.iteration_id, | ||
| creator: doc.frontmatter.creator, | ||
| owner: doc.frontmatter.owner, | ||
| label: doc.frontmatter.label, | ||
| status: doc.frontmatter.status | ||
| }, doc, workspaceId, tapdId, doc.frontmatter.creator); | ||
| } | ||
| catch (error) { | ||
| if (!isStoryNotFoundError(error, tapdId)) | ||
| throw error; | ||
| spinner.text = "TAPD 需求不存在,重新创建需求"; | ||
| return await createStoryFromMarkdown(file, doc, client, token, workspaceId, doc.frontmatter.iteration_id, doc.frontmatter.creator, spinner); | ||
| } | ||
| }, { successText: "需求更新成功", failText: "更新 TAPD 需求失败" }); | ||
| await writeFrontmatter(file, { | ||
@@ -400,3 +431,2 @@ workspace_id: workspaceId, | ||
| }); | ||
| spinner.succeed("需求更新成功"); | ||
| success(`${updated.name} (${updated.id})`); | ||
@@ -407,9 +437,6 @@ }); | ||
| .argument("<story-id>", "TAPD 需求 ID") | ||
| .description("获取需求内容摘要") | ||
| .description(COPY.storyGetDescription) | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .option("-w, --workspace-id <id>", "覆盖默认 workspace_id") | ||
| .addHelpText("after", ` | ||
| 示例: | ||
| tapd story get 1147232921001000017 | ||
| tapd story get 1147232921001000017 --workspace-id 47232921 | ||
| `) | ||
| .addHelpText("after", `\n${COPY.storyGetHelpAfter}`) | ||
| .action(async (storyId, options) => { | ||
@@ -421,14 +448,94 @@ const workspace = await resolveWorkspaceContext(process.cwd(), options.workspaceId); | ||
| const token = await getToken(client); | ||
| const storyData = await client.getStory(token, workspaceId, storyId); | ||
| table([{ | ||
| id: storyData.id, | ||
| title: storyData.name, | ||
| status: storyData.status, | ||
| iteration: storyData.iteration_id, | ||
| label: storyData.label, | ||
| modified: storyData.modified | ||
| }]); | ||
| const [storyData, storyStatusMap] = await Promise.all([ | ||
| client.getStory(token, workspaceId, storyId), | ||
| client.getStoryStatusMap(token, workspaceId) | ||
| ]); | ||
| info(`${storyData.name} (${storyData.id})`); | ||
| info(`状态:${storyStatusLabel(storyData.status, storyStatusMap)} 迭代:${storyData.iteration_id || "-"} 标签:${storyData.label || "-"} 更新时间:${storyData.modified || "-"}`); | ||
| info(truncate(storyData.description, 300)); | ||
| }); | ||
| story | ||
| .command("pull") | ||
| .argument("<story-id>", "TAPD 需求 ID") | ||
| .argument("[output-file]", "输出 Markdown 文件路径,默认为 <story-id>.md") | ||
| .description(COPY.storyPullDescription) | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .option("-w, --workspace-id <id>", "覆盖默认 workspace_id") | ||
| .addHelpText("after", `\n${COPY.storyPullHelpAfter}`) | ||
| .action(async (storyId, outputFile, options) => { | ||
| const workspace = await resolveWorkspaceContext(process.cwd(), options.workspaceId); | ||
| workspaceBanner(workspace); | ||
| const workspaceId = workspace.id; | ||
| const client = new TapdClient(); | ||
| const token = await getToken(client); | ||
| const spinner = ora("拉取 TAPD 需求").start(); | ||
| const storyData = await withSpinner(spinner, () => client.getStory(token, workspaceId, storyId), { | ||
| successText: "需求拉取成功", | ||
| failText: "拉取 TAPD 需求失败" | ||
| }); | ||
| const filePath = outputFile || `${storyId}.md`; | ||
| const fileDir = dirname(filePath); | ||
| const assetsDir = join(fileDir, "assets"); | ||
| // 提取所有 TAPD 图片链接 | ||
| const imageRegex = /!\[([^\]]*)\]\((\/tfl\/captures\/[^)]+)\)/g; | ||
| const images = []; | ||
| let match; | ||
| const content = storyData.description ? htmlToMarkdown(storyData.description) : ""; | ||
| while ((match = imageRegex.exec(content)) !== null) { | ||
| images.push({ | ||
| alt: match[1], | ||
| url: match[2], | ||
| match: match[0] | ||
| }); | ||
| } | ||
| let finalContent = content; | ||
| if (images.length > 0) { | ||
| spinner.start(`下载 ${images.length} 张图片`); | ||
| await withSpinner(spinner, async () => { | ||
| await mkdir(assetsDir, { recursive: true }); | ||
| for (let i = 0; i < images.length; i++) { | ||
| const image = images[i]; | ||
| const ext = image.url.match(/\.(\w+)$/)?.[1] || "png"; | ||
| const filename = `image-${i + 1}.${ext}`; | ||
| const localPath = join(assetsDir, filename); | ||
| const relativePath = `./assets/${filename}`; | ||
| try { | ||
| const attachment = await client.getImage(token, { | ||
| workspaceId, | ||
| imagePath: image.url | ||
| }); | ||
| if (!attachment.download_url) { | ||
| throw new Error("download_url 缺失"); | ||
| } | ||
| const response = await fetch(attachment.download_url); | ||
| if (!response.ok) { | ||
| throw new Error(`HTTP ${response.status}`); | ||
| } | ||
| const buffer = await response.arrayBuffer(); | ||
| await writeFile(localPath, Buffer.from(buffer)); | ||
| // 替换 Markdown 中的链接 | ||
| finalContent = finalContent.replace(image.match, ``); | ||
| } | ||
| catch (error) { | ||
| spinner.warn(`图片下载失败: ${image.url} - ${error instanceof Error ? error.message : String(error)}`); | ||
| } | ||
| } | ||
| }, { successText: `已下载 ${images.length} 张图片到 ${assetsDir}`, failText: "下载需求图片失败" }); | ||
| } | ||
| const frontmatter = { | ||
| tapd_id: storyData.id, | ||
| title: storyData.name, | ||
| workspace_id: workspaceId, | ||
| iteration_id: storyData.iteration_id && storyData.iteration_id !== "0" ? storyData.iteration_id : undefined, | ||
| creator: storyData.creator, | ||
| owner: storyData.owner, | ||
| label: storyData.label, | ||
| status: storyData.status, | ||
| created_at: storyData.created, | ||
| updated_at: storyData.modified | ||
| }; | ||
| await writeMarkdown(filePath, frontmatter, finalContent); | ||
| success(`已保存到 ${filePath}`); | ||
| }); | ||
| } | ||
| //# sourceMappingURL=story.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"story.js","sourceRoot":"","sources":["../../src/commands/story.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"story.js","sourceRoot":"","sources":["../../src/commands/story.ts"],"names":[],"mappings":"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"} |
| import { select } from "@inquirer/prompts"; | ||
| import ora from "ora"; | ||
| import { TapdClient } from "../api.js"; | ||
| import { COPY } from "../command-text.js"; | ||
| import { loadConfig, loadCredentials, requireConfig, resolveWorkspaceContext, saveConfig } from "../config.js"; | ||
| import { getToken } from "../session.js"; | ||
| import { info, success, table, workspaceBanner, exitHint } from "../ui.js"; | ||
| import { currentWorkspaceHelpText, info, success, table, withSpinner, workspaceBanner } from "../ui.js"; | ||
| async function fetchWorkspaces() { | ||
@@ -13,3 +14,3 @@ const config = await requireConfig(); | ||
| if (!config.defaultWorkspaceId) { | ||
| throw new Error("个人令牌模式缺少默认 workspace_id,请运行 tapd auth bind --mode personal --workspace-id <id>"); | ||
| throw new Error("个人令牌模式缺少默认 workspace_id,请运行 tapd login --mode personal --workspace-id <id>"); | ||
| } | ||
@@ -26,13 +27,10 @@ const workspace = await new TapdClient().verifyPersonalToken(token, config.defaultWorkspaceId); | ||
| .command("workspace") | ||
| .description("TAPD 空间管理") | ||
| .addHelpText("after", ` | ||
| 示例: | ||
| tapd workspace list | ||
| tapd workspace add --workspace-id 58491787 | ||
| tapd workspace use | ||
| tapd workspace use --workspace-id 58491787 | ||
| `); | ||
| .description(COPY.workspaceDescription) | ||
| .addHelpCommand(false) | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .addHelpText("after", `\n${COPY.workspaceHelpAfter}`); | ||
| workspace | ||
| .command("list") | ||
| .description("列出空间;个人令牌模式仅显示当前默认空间") | ||
| .description(COPY.workspaceListDescription) | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .action(async () => { | ||
@@ -42,4 +40,5 @@ const currentWorkspace = await resolveWorkspaceContext(); | ||
| const spinner = ora("拉取空间列表").start(); | ||
| const { config, credentials, workspaces } = await fetchWorkspaces(); | ||
| spinner.stop(); | ||
| const { config, credentials, workspaces } = await withSpinner(spinner, () => fetchWorkspaces(), { | ||
| stopOnSuccess: true | ||
| }); | ||
| if (credentials.mode === "personal") { | ||
@@ -57,3 +56,4 @@ info("个人令牌模式通常不能列出企业项目,仅验证并显示当前默认空间。"); | ||
| .command("add") | ||
| .description("验证并缓存一个 workspace_id,适合个人令牌模式管理多个空间") | ||
| .description(COPY.workspaceAddDescription) | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .requiredOption("-w, --workspace-id <id>", "要添加的 workspace_id") | ||
@@ -64,4 +64,6 @@ .action(async (options) => { | ||
| const spinner = ora("验证 TAPD 空间").start(); | ||
| const workspace = await new TapdClient().verifyPersonalToken(token, options.workspaceId); | ||
| spinner.succeed(`空间可用:${workspace.name} (${workspace.id})`); | ||
| const workspace = await withSpinner(spinner, () => new TapdClient().verifyPersonalToken(token, options.workspaceId), { | ||
| successText: "空间可用", | ||
| failText: "验证 TAPD 空间失败" | ||
| }); | ||
| await saveConfig({ | ||
@@ -76,3 +78,4 @@ ...config, | ||
| .command("use") | ||
| .description("选择默认空间;个人令牌模式可传 --workspace-id 验证切换") | ||
| .description(COPY.workspaceUseDescription) | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .option("-w, --workspace-id <id>", "个人令牌模式下要切换到的 workspace_id") | ||
@@ -83,5 +86,4 @@ .action(async (options) => { | ||
| const config = await loadConfig(); | ||
| exitHint(); | ||
| const workspaceId = options.workspaceId ?? await select({ | ||
| message: "选择默认空间", | ||
| message: COPY.workspaceUseSelectMessage, | ||
| choices: (config.workspaces && config.workspaces.length > 0 | ||
@@ -100,4 +102,6 @@ ? config.workspaces | ||
| const spinner = ora("验证 TAPD 空间").start(); | ||
| const workspace = await new TapdClient().verifyPersonalToken(token, workspaceId); | ||
| spinner.succeed(`空间可用:${workspace.name} (${workspace.id})`); | ||
| const workspace = await withSpinner(spinner, () => new TapdClient().verifyPersonalToken(token, workspaceId), { | ||
| successText: "空间可用", | ||
| failText: "验证 TAPD 空间失败" | ||
| }); | ||
| await saveConfig({ | ||
@@ -114,7 +118,7 @@ ...config, | ||
| const spinner = ora("拉取空间列表").start(); | ||
| const { config, workspaces } = await fetchWorkspaces(); | ||
| spinner.stop(); | ||
| exitHint(); | ||
| const { config, workspaces } = await withSpinner(spinner, () => fetchWorkspaces(), { | ||
| stopOnSuccess: true | ||
| }); | ||
| const workspaceId = await select({ | ||
| message: "选择默认空间", | ||
| message: COPY.workspaceUseSelectMessage, | ||
| choices: workspaces.map((item) => ({ | ||
@@ -121,0 +125,0 @@ name: `${item.name} (${item.id})${item.id === config.defaultWorkspaceId ? " 当前" : ""}`, |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"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"} |
+6
-0
@@ -6,5 +6,7 @@ import type { TapdConfig, TapdCredentials } from "./types.js"; | ||
| export declare function loadConfig(cwd?: string): Promise<TapdConfig>; | ||
| export declare function loadConfigSync(cwd?: string): TapdConfig; | ||
| export declare function saveConfig(config: TapdConfig, cwd?: string): Promise<void>; | ||
| export declare function loadCredentials(cwd?: string): Promise<TapdCredentials>; | ||
| export declare function saveCredentials(credentials: TapdCredentials, cwd?: string): Promise<void>; | ||
| export declare function deleteCredentials(cwd?: string): Promise<void>; | ||
| export declare function requireConfig(cwd?: string): Promise<TapdConfig>; | ||
@@ -16,1 +18,5 @@ export declare function requireWorkspace(cwd?: string, override?: string): Promise<string>; | ||
| }>; | ||
| export declare function resolveWorkspaceContextSync(cwd?: string, override?: string): { | ||
| id?: string; | ||
| name?: string; | ||
| }; |
+26
-2
| import { mkdir, readFile, writeFile } from "node:fs/promises"; | ||
| import { existsSync } from "node:fs"; | ||
| import { existsSync, readFileSync } from "node:fs"; | ||
| import path from "node:path"; | ||
@@ -49,2 +49,9 @@ import { z } from "zod"; | ||
| } | ||
| export function loadConfigSync(cwd = process.cwd()) { | ||
| const file = configPath(cwd); | ||
| if (!existsSync(file)) | ||
| return {}; | ||
| const raw = readFileSync(file, "utf8"); | ||
| return configSchema.parse(JSON.parse(raw)); | ||
| } | ||
| export async function saveConfig(config, cwd = process.cwd()) { | ||
@@ -59,6 +66,12 @@ await writeJson(configPath(cwd), config); | ||
| } | ||
| export async function deleteCredentials(cwd = process.cwd()) { | ||
| const file = credentialsPath(cwd); | ||
| if (!existsSync(file)) | ||
| return; | ||
| await import("node:fs/promises").then(({ rm }) => rm(file, { force: true })); | ||
| } | ||
| export async function requireConfig(cwd = process.cwd()) { | ||
| const config = await loadConfig(cwd); | ||
| if (!config.companyId) { | ||
| throw new Error("缺少 company_id,请先运行 tapd auth bind"); | ||
| throw new Error("缺少 company_id,请先运行 tapd login"); | ||
| } | ||
@@ -88,2 +101,13 @@ return config; | ||
| } | ||
| export function resolveWorkspaceContextSync(cwd = process.cwd(), override) { | ||
| const config = loadConfigSync(cwd); | ||
| const id = override ?? config.defaultWorkspaceId; | ||
| if (!id) | ||
| return {}; | ||
| const cached = config.workspaces?.find((item) => item.id === id); | ||
| return { | ||
| id, | ||
| name: cached?.name ?? (id === config.defaultWorkspaceId ? config.defaultWorkspaceName : undefined) | ||
| }; | ||
| } | ||
| //# sourceMappingURL=config.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"} |
+13
-14
| #!/usr/bin/env node | ||
| import { Command } from "commander"; | ||
| import chalk from "chalk"; | ||
| import { registerAuth } from "./commands/auth.js"; | ||
| import { registerLogin, registerLogout } from "./commands/auth.js"; | ||
| import { registerComment } from "./commands/comment.js"; | ||
| import { registerInit } from "./commands/init.js"; | ||
| import { registerIteration } from "./commands/iteration.js"; | ||
| import { registerStory } from "./commands/story.js"; | ||
| import { registerWorkspace } from "./commands/workspace.js"; | ||
| import { brand, fail } from "./ui.js"; | ||
| import { COPY } from "./command-text.js"; | ||
| import { brand, currentWorkspaceHelpText, fail } from "./ui.js"; | ||
| const program = new Command(); | ||
| program | ||
| .name("tapd") | ||
| .description("用本地 Markdown 管理 TAPD 需求、迭代空间和评论") | ||
| .description(COPY.rootDescription) | ||
| .version("0.1.0") | ||
| .addHelpCommand(false) | ||
| .showHelpAfterError("(使用 tapd -h 查看帮助)") | ||
@@ -21,3 +24,3 @@ .configureHelp({ | ||
| styleArgumentText: (str) => chalk.magenta(str), | ||
| sortSubcommands: true, | ||
| sortSubcommands: false, | ||
| sortOptions: true, | ||
@@ -36,15 +39,11 @@ showGlobalOptions: true, | ||
| .addHelpText("beforeAll", `${brand()}\n`) | ||
| .addHelpText("after", ` | ||
| ${chalk.cyan.bold("常用流程")} | ||
| ${chalk.gray("1.")} tapd auth bind | ||
| ${chalk.gray("2.")} tapd init | ||
| ${chalk.gray("3.")} tapd story create ./需求.md | ||
| ${chalk.gray("4.")} tapd story update ./需求.md | ||
| ${chalk.gray("5.")} tapd comment add ./需求.md --message "已评审" | ||
| `); | ||
| registerAuth(program); | ||
| .addHelpText("before", () => `${currentWorkspaceHelpText()}\n`) | ||
| .addHelpText("after", `\n${COPY.rootHelpAfter.trim()}\n`); | ||
| registerLogin(program); | ||
| registerInit(program); | ||
| registerWorkspace(program); | ||
| registerStory(program); | ||
| registerIteration(program); | ||
| registerComment(program); | ||
| registerWorkspace(program); | ||
| registerLogout(program); | ||
| program.parseAsync(process.argv).catch((error) => { | ||
@@ -51,0 +50,0 @@ // 用户按 Ctrl+C 退出时静默处理 |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} |
@@ -13,1 +13,3 @@ import type { StoryFrontmatter } from "./types.js"; | ||
| export declare function titleFromDocument(doc: MarkdownDocument): string; | ||
| export declare function htmlToMarkdown(html: string): string; | ||
| export declare function writeMarkdown(filePath: string, frontmatter: StoryFrontmatter, content: string): Promise<void>; |
+13
-0
| import { readFile, writeFile } from "node:fs/promises"; | ||
| import matter from "gray-matter"; | ||
| import { marked } from "marked"; | ||
| import TurndownService from "turndown"; | ||
| marked.setOptions({ | ||
@@ -39,2 +40,14 @@ gfm: true, | ||
| } | ||
| const turndownService = new TurndownService({ | ||
| headingStyle: "atx", | ||
| codeBlockStyle: "fenced", | ||
| bulletListMarker: "-" | ||
| }); | ||
| export function htmlToMarkdown(html) { | ||
| return turndownService.turndown(html); | ||
| } | ||
| export async function writeMarkdown(filePath, frontmatter, content) { | ||
| const data = Object.fromEntries(Object.entries(frontmatter).filter(([, value]) => value !== undefined)); | ||
| await writeFile(filePath, matter.stringify(content, data), "utf8"); | ||
| } | ||
| //# sourceMappingURL=markdown.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAUhC,MAAM,CAAC,UAAU,CAAC;IAChB,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,KAAK;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,MAAM,CAAC,IAAwB;QAC5C,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB,EAAE,OAAyB;IAChF,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAC1F,CAAC;IACF,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,OAAO,MAAM,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAsC,EAAE,OAAO,GAAG,GAAG,CAAC,OAAO;IAChG,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAqB;IACrD,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACvE,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC9D,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACrE,CAAC"} | ||
| {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"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"} |
+16
-0
@@ -58,2 +58,18 @@ export type TapdConfig = { | ||
| }; | ||
| export type Task = { | ||
| id: string; | ||
| name: string; | ||
| story_id?: string; | ||
| status?: string; | ||
| owner?: string; | ||
| begin?: string; | ||
| due?: string; | ||
| progress?: string; | ||
| effort?: string; | ||
| effort_completed?: string; | ||
| remain?: string; | ||
| iteration_id?: string; | ||
| created?: string; | ||
| modified?: string; | ||
| }; | ||
| export type Comment = { | ||
@@ -60,0 +76,0 @@ id: string; |
+11
-1
@@ -0,1 +1,2 @@ | ||
| import type { Ora } from "ora"; | ||
| export declare function brand(): string; | ||
@@ -12,3 +13,12 @@ export declare function success(message: string): void; | ||
| export declare function table(rows: Array<Record<string, string | undefined>>): void; | ||
| export declare function compactList(rows: Array<{ | ||
| title: string; | ||
| lines?: string[]; | ||
| }>): void; | ||
| export declare function truncate(value: string | undefined, max?: number): string; | ||
| export declare function exitHint(): void; | ||
| export declare function withSpinner<T>(spinner: Ora, task: () => Promise<T>, options?: { | ||
| successText?: string; | ||
| failText?: string; | ||
| stopOnSuccess?: boolean; | ||
| }): Promise<T>; | ||
| export declare function currentWorkspaceHelpText(cwd?: string): string; |
+45
-4
| import chalk from "chalk"; | ||
| import { resolveWorkspaceContextSync } from "./config.js"; | ||
| import { COPY } from "./command-text.js"; | ||
| export function brand() { | ||
| return `${chalk.cyan.bold("tapd")} ${chalk.gray("markdown cli")}`; | ||
| return `${chalk.cyan.bold("tapd")} ${chalk.gray(COPY.brandSubtitle)}`; | ||
| } | ||
@@ -16,3 +18,3 @@ export function success(message) { | ||
| const name = workspace.name ?? "未知空间"; | ||
| console.log(`${chalk.green("✓")} 默认空间: ${chalk.bold(name)} ${chalk.gray(`(${workspace.id})`)}`); | ||
| console.log(`${chalk.green("✓")} 当前空间: ${chalk.bold(name)} ${chalk.gray(`(${workspace.id})`)}`); | ||
| } | ||
@@ -34,2 +36,14 @@ export function fail(message) { | ||
| } | ||
| export function compactList(rows) { | ||
| if (rows.length === 0) { | ||
| info("暂无数据"); | ||
| return; | ||
| } | ||
| for (const [index, row] of rows.entries()) { | ||
| console.log(row.title); | ||
| for (const line of row.lines ?? []) { | ||
| console.log(` ${chalk.gray(line)}`); | ||
| } | ||
| } | ||
| } | ||
| export function truncate(value, max = 120) { | ||
@@ -41,5 +55,32 @@ if (!value) | ||
| } | ||
| export function exitHint() { | ||
| console.log(chalk.gray("按 Ctrl+C 可以随时退出")); | ||
| export async function withSpinner(spinner, task, options = {}) { | ||
| try { | ||
| const result = await task(); | ||
| if (options.stopOnSuccess) { | ||
| spinner.stop(); | ||
| } | ||
| else if (options.successText) { | ||
| spinner.succeed(options.successText); | ||
| } | ||
| return result; | ||
| } | ||
| catch (error) { | ||
| if (spinner.isSpinning) { | ||
| if (options.failText) { | ||
| spinner.fail(options.failText); | ||
| } | ||
| else { | ||
| spinner.stop(); | ||
| } | ||
| } | ||
| throw error; | ||
| } | ||
| } | ||
| export function currentWorkspaceHelpText(cwd = process.cwd()) { | ||
| const workspace = resolveWorkspaceContextSync(cwd); | ||
| if (!workspace.id) { | ||
| return `${chalk.cyan.bold("当前空间")} ${chalk.gray("未设置")}`; | ||
| } | ||
| return `${chalk.cyan.bold("当前空间")} ${chalk.bold(workspace.name ?? "未知空间")} ${chalk.gray(`(${workspace.id})`)}`; | ||
| } | ||
| //# sourceMappingURL=ui.js.map |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,KAAK;IACnB,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAwC;IACtE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,MAAM,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC;IAC1C,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,IAA+C;IACnE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,CAAC;QACb,OAAO;IACT,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAyB,EAAE,GAAG,GAAG,GAAG;IAC3D,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,OAAO,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC7C,CAAC"} | ||
| {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"} |
+5
-3
| { | ||
| "name": "@huangqz/tapd-cli", | ||
| "version": "0.1.0", | ||
| "version": "0.2.0", | ||
| "description": "Manage TAPD stories from local Markdown files.", | ||
@@ -16,3 +16,3 @@ "type": "module", | ||
| "type": "git", | ||
| "url": "git@github.com:qizhi2design-svg/tapd-cli.git" | ||
| "url": "git+ssh://git@github.com/qizhi2design-svg/tapd-cli.git" | ||
| }, | ||
@@ -24,3 +24,3 @@ "homepage": "https://github.com/qizhi2design-svg/tapd-cli", | ||
| "bin": { | ||
| "tapd": "./dist/index.js" | ||
| "tapd": "dist/index.js" | ||
| }, | ||
@@ -50,2 +50,3 @@ "files": [ | ||
| "strip-ansi": "^7.1.0", | ||
| "turndown": "^7.2.0", | ||
| "zod": "^3.24.1" | ||
@@ -55,2 +56,3 @@ }, | ||
| "@types/node": "^22.10.5", | ||
| "@types/turndown": "^5.0.5", | ||
| "tsx": "^4.19.2", | ||
@@ -57,0 +59,0 @@ "typescript": "^5.7.2", |
+15
-5
@@ -17,6 +17,6 @@ # @huangqz/tapd-cli | ||
| # 使用个人令牌认证 | ||
| tapd auth bind --mode personal --token YOUR_TOKEN --workspace-id YOUR_WORKSPACE_ID | ||
| tapd login --mode personal --token YOUR_TOKEN --workspace-id YOUR_WORKSPACE_ID | ||
| # 或使用开放应用凭证认证 | ||
| tapd auth bind --mode app --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET | ||
| tapd login --mode app --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET | ||
| ``` | ||
@@ -71,2 +71,4 @@ | ||
| - ✅ 双向同步:从 TAPD 拉取需求到本地 | ||
| - ✅ 查看需求下的排期任务 | ||
| - ✅ 查看迭代信息和迭代任务情况 | ||
| - ✅ 评论管理 | ||
@@ -78,4 +80,4 @@ | ||
| - `tapd auth bind` - 绑定 TAPD 凭证 | ||
| - `tapd auth status` - 查看认证状态 | ||
| - `tapd login` - 登录 TAPD 并保存本地凭证 | ||
| - `tapd logout` - 清除本地认证文件 | ||
@@ -88,2 +90,8 @@ ### 工作空间 | ||
| ### 迭代 | ||
| - `tapd iteration list` - 查看当前空间迭代列表 | ||
| - `tapd iteration get <iteration-id>` - 查看迭代基础信息 | ||
| - `tapd iteration tasks <iteration-id>` - 查看迭代下的任务情况 | ||
| ### 需求管理 | ||
@@ -93,4 +101,6 @@ | ||
| - `tapd story update <file>` - 更新需求 | ||
| - `tapd story get <story-id>` - 拉取需求到本地 | ||
| - `tapd story get <story-id>` - 获取需求内容摘要 | ||
| - `tapd story pull <story-id> [output-file]` - 拉取需求到本地 Markdown | ||
| - `tapd story list` - 列出需求 | ||
| - `tapd story tasks <story-id>` - 查看需求下的任务排期 | ||
@@ -97,0 +107,0 @@ ### 评论 |
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 2 instances
201726
55.91%56
27.27%2558
52.99%128
8.47%9
12.5%5
25%9
28.57%3
50%+ Added
+ Added
+ Added