Something went wrong. Try again.
A CLI for Semble link crawling and connection making
Something went wrong. Try again.
1.3 kB · 44 lines
TypeScript
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445import { select, confirm, isCancel } from '@clack/prompts';
export type LinkAction = 'connect' | 'save' | 'skip' | 'quit';
export interface LinkView { url: string; title?: string; description?: string; connected?: boolean; saved?: boolean;}
export async function promptForLink(link: LinkView): Promise<LinkAction> { const title = link.title?.slice(0, 80) || 'no title'; const description = link.description?.slice(0, 120) || ''; const statuses: string[] = []; if (link.saved) statuses.push('saved'); if (link.connected) statuses.push('connected'); const status = statuses.length ? ` [${statuses.join(', ')}]` : '';
const action = await select<LinkAction>({ message: `${title}${status}\n ${link.url}\n ${description}`, options: [ { value: 'connect', label: 'connect (create RELATED link)' }, { value: 'save', label: 'save + create RELATED link' }, { value: 'skip', label: 'skip' }, { value: 'quit', label: 'quit' }, ], });
if (isCancel(action)) return 'quit'; return action;}
export async function confirmContinue(): Promise<boolean> { const answer = await confirm({ message: 'Continue reviewing links?', active: 'Y', inactive: 'n', initialValue: true, }); if (isCancel(answer)) return false; return answer;}