mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-08-28 08:35:57 +00:00
chore: initialize my-pi extension bundle
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import type { AutocompleteItem } from "@earendil-works/pi-tui";
|
||||
|
||||
interface CompletionDefinition {
|
||||
name: string;
|
||||
description: string;
|
||||
}
|
||||
|
||||
const TOP_LEVEL_SUBCOMMANDS: CompletionDefinition[] = [
|
||||
{ name: "show", description: "Show current RTK config + runtime summary" },
|
||||
{ name: "path", description: "Show RTK config file path" },
|
||||
{ name: "verify", description: "Check whether rtk binary is available" },
|
||||
{ name: "stats", description: "Show output compaction metrics" },
|
||||
{ name: "clear-stats", description: "Clear output compaction metrics" },
|
||||
{ name: "reset", description: "Reset RTK settings to defaults" },
|
||||
{ name: "help", description: "Show usage help" },
|
||||
];
|
||||
|
||||
function startsWithFilter(value: string, prefix: string): boolean {
|
||||
if (!prefix) {
|
||||
return true;
|
||||
}
|
||||
return value.startsWith(prefix);
|
||||
}
|
||||
|
||||
function mapCompletions(values: CompletionDefinition[]): AutocompleteItem[] {
|
||||
return values.map((entry) => ({
|
||||
value: entry.name,
|
||||
label: entry.name,
|
||||
description: entry.description,
|
||||
}));
|
||||
}
|
||||
|
||||
export function getRtkArgumentCompletions(argumentPrefix: string): AutocompleteItem[] | null {
|
||||
const normalized = argumentPrefix.trimStart().toLowerCase();
|
||||
if (!normalized) {
|
||||
return mapCompletions(TOP_LEVEL_SUBCOMMANDS);
|
||||
}
|
||||
|
||||
if (normalized.includes(" ")) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const filtered = TOP_LEVEL_SUBCOMMANDS.filter((entry) => startsWithFilter(entry.name, normalized));
|
||||
if (filtered.length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return mapCompletions(filtered);
|
||||
}
|
||||
Reference in New Issue
Block a user