✨ feat(vscode): 摘修复可按作者筛选,高亮发布点后第一条
This commit is contained in:
1 parent
54fc2ead4c
commit
beb7750eac
9 files changed
+137
-33
No files matched your search
@@ -0,0 +1,47 @@
|
||||
import type { ReleaseCommitGroup } from './messages'
|
||||
|
||||
export function uniqueAuthors(groups: ReleaseCommitGroup[]): string[] {
|
||||
const out: string[] = []
|
||||
for (const g of groups) {
|
||||
for (const a of g.authors) {
|
||||
if (!out.includes(a))
|
||||
out.push(a)
|
||||
}
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
export function filterCherryPickGroups(
|
||||
groups: ReleaseCommitGroup[],
|
||||
query: string,
|
||||
authors: ReadonlySet<string>,
|
||||
): ReleaseCommitGroup[] {
|
||||
const q = query.trim().toLowerCase()
|
||||
const out: ReleaseCommitGroup[] = []
|
||||
for (const g of groups) {
|
||||
const commits = g.commits.filter(c => authors.has(c.author))
|
||||
if (commits.length === 0)
|
||||
continue
|
||||
if (!q) {
|
||||
out.push({ ...g, authors: uniqueAuthors([{ ...g, commits }]), commits })
|
||||
continue
|
||||
}
|
||||
const head = `#${g.pr ?? ''} ${g.title} ${g.authors.join(' ')}`.toLowerCase()
|
||||
if (head.includes(q)) {
|
||||
out.push({ ...g, authors: uniqueAuthors([{ ...g, commits }]), commits })
|
||||
continue
|
||||
}
|
||||
const hit = commits.filter(c =>
|
||||
`${c.subject} ${c.author} ${c.sha} ${c.date}`.toLowerCase().includes(q),
|
||||
)
|
||||
if (hit.length > 0)
|
||||
out.push({ ...g, authors: uniqueAuthors([{ ...g, commits: hit }]), commits: hit })
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
export function groupContainingSha(groups: ReleaseCommitGroup[], sha: string | undefined): ReleaseCommitGroup | undefined {
|
||||
if (!sha)
|
||||
return undefined
|
||||
return groups.find(g => g.commits.some(c => c.sha === sha))
|
||||
}
|
||||
Reference in new issue
Block a user