-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
/
Copy pathwd.ts
128 lines (125 loc) · 3.05 KB
/
wd.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
const warpPointsGenerator: Fig.Generator = {
custom: async (_, executeCommand, context) => {
const { stdout } = await executeCommand({
command: "cat",
// eslint-disable-next-line @withfig/fig-linter/no-useless-arrays
args: [`${context.environmentVariables["HOME"]}/.warprc`],
});
// find all warp points names
const iter = stdout.matchAll(/^(\w+)/gm);
const suggestions: Fig.Suggestion[] = [];
for (const [point] of iter) {
suggestions.push({
name: point,
description: "Warp point",
icon: "🔘",
priority: 76,
});
}
return suggestions;
},
};
const completionSpec: Fig.Spec = {
name: "wd",
description: "Warp to directories without using cd",
args: [
{
name: "point",
description: "Warp point to the specified directory",
generators: warpPointsGenerator,
},
{
name: "path",
description: "Appended path",
isOptional: true,
},
],
subcommands: [
{
name: "add",
description: "Adds the current working directory to your warp points",
args: {
name: "point",
description: "Name of the warp point to be created",
isOptional: true,
},
},
{
name: "rm",
description: "Removes the given warp point",
args: {
name: "point",
description: "Name of the warp point to be removed",
isOptional: true,
generators: warpPointsGenerator,
},
},
{
name: "show",
description: "Print path to given warp point",
args: {
name: "point",
description: "Name of the warp point",
isOptional: true,
generators: warpPointsGenerator,
},
},
{
name: "list",
description: "Print all stored warp points",
},
{
name: "ls",
description: "Show files from given warp point (ls)",
args: {
name: "point",
description: "Name of the warp point",
generators: warpPointsGenerator,
},
},
{
name: "path",
description: "Show the path to given warp point (pwd)",
args: {
name: "point",
description: "Name of the warp point",
generators: warpPointsGenerator,
},
},
{
name: "clean",
description:
"Remove points warping to nonexistent directories (will prompt unless --force is used)",
},
{
name: "help",
description: "Shows help for wd",
},
],
options: [
{
name: ["-v", "--version"],
description: "Print version",
},
{
name: ["-d", "--debug"],
description: "Exit after execution with exit codes (for testing)",
},
{
name: ["-c", "--config"],
description: "Specify config file (default ~/.warprc)",
args: {
name: "file",
},
},
{
name: ["-q", "--quiet"],
description: "Suppress all output",
},
{
name: ["-f", "--force"],
description: "Allows overwriting without warning (for add & clean)",
},
],
};
export default completionSpec;