DraftLenses
Above a release draft: release the package, its notes taking the words written there.
import { draftName } from "#codebase/tcmts/vscode/releases"; import type { PublishedPackage, ReleaseCheck, Request } from "#codebase/tcmts/vscode/releases"; import * as vscode from "vscode"; export class DraftLenses implements vscode.CodeLensProvider { request: Request; changed = new vscode.EventEmitter<void>(); onDidChangeCodeLenses = this.changed.event; constructor(request: Request) { this.request = request; } async provideCodeLenses(doc: vscode.TextDocument): Promise<vscode.CodeLens[]> { const file = doc.uri.path.slice(doc.uri.path.lastIndexOf("/") + 1); let pkgs: PublishedPackage[]; try { pkgs = await this.request("tcm/publishing", {}); } catch { return []; } const pkg = pkgs.find((p) => draftName(p.name) === file); if (!pkg) return []; let check: ReleaseCheck; try { check = await this.request("tcm/releaseCheck", { name: pkg.name }); } catch { return []; } const top = new vscode.Range(0, 0, 0, 0); return [ new vscode.CodeLens(top, { title: `$(rocket) Release ${pkg.name} (${check.version} as things stand: ${check.reason})`, command: "tcm.releasePackage", arguments: [{ name: pkg.name, fromDraft: doc.uri }] }), new vscode.CodeLens(top, { title: "Regenerate the changes", command: "tcm.draftRelease", arguments: [{ name: pkg.name }] }), ]; } }
uses
- tcmts.vscode.releases.PublishedPackage
- tcmts.vscode.releases.ReleaseCheck
- tcmts.vscode.releases.Request
- tcmts.vscode.releases.draftName