statusbar-quick-actions 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/FUNDING.yml +3 -0
- package/.vscodeignore +11 -0
- package/CLAUDE.md +230 -0
- package/LICENSE +21 -0
- package/README.md +529 -0
- package/assets/icon.png +0 -0
- package/bun.lock +908 -0
- package/docs/PERFORMANCE_OPTIMIZATIONS.md +240 -0
- package/docs/PRESET_AND_DYNAMIC_LABELS.md +536 -0
- package/docs/SAMPLE-CONFIGURATIONS.md +973 -0
- package/eslint.config.mjs +41 -0
- package/package.json +605 -0
- package/src/config-cli.ts +1287 -0
- package/src/configuration.ts +530 -0
- package/src/dynamic-label.ts +360 -0
- package/src/executor.ts +406 -0
- package/src/extension.ts +1754 -0
- package/src/history.ts +175 -0
- package/src/material-icons.ts +388 -0
- package/src/notifications.ts +189 -0
- package/src/output-panel.ts +403 -0
- package/src/preset-manager.ts +406 -0
- package/src/theme.ts +318 -0
- package/src/types.ts +368 -0
- package/src/utils/debounce.ts +91 -0
- package/src/visibility.ts +283 -0
- package/tsconfig.dev.json +10 -0
- package/tsconfig.json +19 -0
|
@@ -0,0 +1,973 @@
|
|
|
1
|
+
# StatusBar Quick Actions - Sample Configurations
|
|
2
|
+
|
|
3
|
+
This document provides comprehensive sample configurations for various development workflows and project types.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
1. [Basic JavaScript/Node.js](#basic-javascriptnodejs)
|
|
8
|
+
2. [React/TypeScript Project](#reacttypescript-project)
|
|
9
|
+
3. [Python Development](#python-development)
|
|
10
|
+
4. [Git Operations](#git-operations)
|
|
11
|
+
5. [Docker Workflows](#docker-workflows)
|
|
12
|
+
6. [Multi-Service Applications](#multi-service-applications)
|
|
13
|
+
7. [Advanced Use Cases](#advanced-use-cases)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Basic JavaScript/Node.js
|
|
18
|
+
|
|
19
|
+
Perfect for npm/yarn/pnpm/bun package management and basic development tasks.
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"statusbarQuickActions": {
|
|
24
|
+
"buttons": [
|
|
25
|
+
{
|
|
26
|
+
"id": "npm-install",
|
|
27
|
+
"text": "$(cloud-download) Install",
|
|
28
|
+
"tooltip": "Install npm dependencies",
|
|
29
|
+
"command": {
|
|
30
|
+
"type": "npm",
|
|
31
|
+
"script": "install"
|
|
32
|
+
},
|
|
33
|
+
"enabled": true,
|
|
34
|
+
"alignment": "left",
|
|
35
|
+
"priority": 100,
|
|
36
|
+
"execution": {
|
|
37
|
+
"foreground": true,
|
|
38
|
+
"showProgress": true,
|
|
39
|
+
"timeout": 300000
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "npm-dev",
|
|
44
|
+
"text": "$(play) Dev",
|
|
45
|
+
"tooltip": "Start development server",
|
|
46
|
+
"command": {
|
|
47
|
+
"type": "npm",
|
|
48
|
+
"script": "dev"
|
|
49
|
+
},
|
|
50
|
+
"enabled": true,
|
|
51
|
+
"alignment": "left",
|
|
52
|
+
"priority": 200,
|
|
53
|
+
"execution": {
|
|
54
|
+
"foreground": true,
|
|
55
|
+
"showProgress": true,
|
|
56
|
+
"timeout": 0
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "npm-build",
|
|
61
|
+
"text": "$(package) Build",
|
|
62
|
+
"tooltip": "Build for production",
|
|
63
|
+
"command": {
|
|
64
|
+
"type": "npm",
|
|
65
|
+
"script": "build"
|
|
66
|
+
},
|
|
67
|
+
"enabled": true,
|
|
68
|
+
"alignment": "left",
|
|
69
|
+
"priority": 300,
|
|
70
|
+
"execution": {
|
|
71
|
+
"foreground": true,
|
|
72
|
+
"showProgress": true,
|
|
73
|
+
"timeout": 600000
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": "npm-test",
|
|
78
|
+
"text": "$(beaker) Test",
|
|
79
|
+
"tooltip": "Run tests",
|
|
80
|
+
"command": {
|
|
81
|
+
"type": "npm",
|
|
82
|
+
"script": "test"
|
|
83
|
+
},
|
|
84
|
+
"enabled": true,
|
|
85
|
+
"alignment": "left",
|
|
86
|
+
"priority": 400,
|
|
87
|
+
"execution": {
|
|
88
|
+
"foreground": false,
|
|
89
|
+
"showProgress": true,
|
|
90
|
+
"timeout": 300000
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## React/TypeScript Project
|
|
101
|
+
|
|
102
|
+
Comprehensive React/TypeScript development workflow with TypeScript support.
|
|
103
|
+
|
|
104
|
+
```json
|
|
105
|
+
{
|
|
106
|
+
"statusbarQuickActions": {
|
|
107
|
+
"buttons": [
|
|
108
|
+
{
|
|
109
|
+
"id": "react-dev",
|
|
110
|
+
"text": "$(triangle-right) Start",
|
|
111
|
+
"tooltip": "Start React development server",
|
|
112
|
+
"command": {
|
|
113
|
+
"type": "npm",
|
|
114
|
+
"script": "dev"
|
|
115
|
+
},
|
|
116
|
+
"enabled": true,
|
|
117
|
+
"alignment": "left",
|
|
118
|
+
"priority": 100,
|
|
119
|
+
"execution": {
|
|
120
|
+
"foreground": true,
|
|
121
|
+
"showProgress": true
|
|
122
|
+
},
|
|
123
|
+
"visibility": {
|
|
124
|
+
"conditions": [
|
|
125
|
+
{
|
|
126
|
+
"type": "fileType",
|
|
127
|
+
"patterns": ["*.tsx", "*.ts", "*.jsx", "*.js"]
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"id": "react-build",
|
|
134
|
+
"text": "$(package) Build",
|
|
135
|
+
"tooltip": "Build React app for production",
|
|
136
|
+
"command": {
|
|
137
|
+
"type": "npm",
|
|
138
|
+
"script": "build"
|
|
139
|
+
},
|
|
140
|
+
"enabled": true,
|
|
141
|
+
"alignment": "left",
|
|
142
|
+
"priority": 200,
|
|
143
|
+
"execution": {
|
|
144
|
+
"foreground": false,
|
|
145
|
+
"showProgress": true,
|
|
146
|
+
"timeout": 600000
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"id": "react-test",
|
|
151
|
+
"text": "$(beaker) Test",
|
|
152
|
+
"tooltip": "Run React tests with coverage",
|
|
153
|
+
"command": {
|
|
154
|
+
"type": "npm",
|
|
155
|
+
"script": "test -- --coverage"
|
|
156
|
+
},
|
|
157
|
+
"enabled": true,
|
|
158
|
+
"alignment": "left",
|
|
159
|
+
"priority": 300,
|
|
160
|
+
"execution": {
|
|
161
|
+
"foreground": false,
|
|
162
|
+
"showProgress": true,
|
|
163
|
+
"timeout": 300000
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"id": "react-storybook",
|
|
168
|
+
"text": "$(book) Storybook",
|
|
169
|
+
"tooltip": "Start Storybook development server",
|
|
170
|
+
"command": {
|
|
171
|
+
"type": "npm",
|
|
172
|
+
"script": "storybook"
|
|
173
|
+
},
|
|
174
|
+
"enabled": true,
|
|
175
|
+
"alignment": "right",
|
|
176
|
+
"priority": 100,
|
|
177
|
+
"execution": {
|
|
178
|
+
"foreground": true,
|
|
179
|
+
"showProgress": true
|
|
180
|
+
},
|
|
181
|
+
"visibility": {
|
|
182
|
+
"conditions": [
|
|
183
|
+
{
|
|
184
|
+
"type": "fileExists",
|
|
185
|
+
"path": ".storybook"
|
|
186
|
+
}
|
|
187
|
+
]
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"id": "ts-check",
|
|
192
|
+
"text": "$(symbol-constructor) Type Check",
|
|
193
|
+
"tooltip": "Run TypeScript type checking",
|
|
194
|
+
"command": {
|
|
195
|
+
"type": "npm",
|
|
196
|
+
"script": "type-check"
|
|
197
|
+
},
|
|
198
|
+
"enabled": true,
|
|
199
|
+
"alignment": "right",
|
|
200
|
+
"priority": 200,
|
|
201
|
+
"execution": {
|
|
202
|
+
"foreground": false,
|
|
203
|
+
"showProgress": true
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
]
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Python Development
|
|
214
|
+
|
|
215
|
+
Python-focused configuration with virtual environment support and testing.
|
|
216
|
+
|
|
217
|
+
```json
|
|
218
|
+
{
|
|
219
|
+
"statusbarQuickActions": {
|
|
220
|
+
"buttons": [
|
|
221
|
+
{
|
|
222
|
+
"id": "python-run",
|
|
223
|
+
"text": "$(play) Run",
|
|
224
|
+
"tooltip": "Run current Python file",
|
|
225
|
+
"command": {
|
|
226
|
+
"type": "shell",
|
|
227
|
+
"command": "python",
|
|
228
|
+
"args": ["${fileBasename}"]
|
|
229
|
+
},
|
|
230
|
+
"enabled": true,
|
|
231
|
+
"alignment": "left",
|
|
232
|
+
"priority": 100,
|
|
233
|
+
"execution": {
|
|
234
|
+
"foreground": true,
|
|
235
|
+
"showProgress": true,
|
|
236
|
+
"timeout": 60000
|
|
237
|
+
},
|
|
238
|
+
"visibility": {
|
|
239
|
+
"conditions": [
|
|
240
|
+
{
|
|
241
|
+
"type": "fileType",
|
|
242
|
+
"patterns": ["*.py"]
|
|
243
|
+
}
|
|
244
|
+
]
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"id": "python-test",
|
|
249
|
+
"text": "$(beaker) Test",
|
|
250
|
+
"tooltip": "Run pytest",
|
|
251
|
+
"command": {
|
|
252
|
+
"type": "shell",
|
|
253
|
+
"command": "pytest",
|
|
254
|
+
"args": ["-v"]
|
|
255
|
+
},
|
|
256
|
+
"enabled": true,
|
|
257
|
+
"alignment": "left",
|
|
258
|
+
"priority": 200,
|
|
259
|
+
"execution": {
|
|
260
|
+
"foreground": false,
|
|
261
|
+
"showProgress": true,
|
|
262
|
+
"timeout": 300000
|
|
263
|
+
},
|
|
264
|
+
"visibility": {
|
|
265
|
+
"conditions": [
|
|
266
|
+
{
|
|
267
|
+
"type": "fileExists",
|
|
268
|
+
"path": "pytest.ini"
|
|
269
|
+
}
|
|
270
|
+
]
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"id": "python-format",
|
|
275
|
+
"text": "$(symbol-number) Format",
|
|
276
|
+
"tooltip": "Format Python code with black",
|
|
277
|
+
"command": {
|
|
278
|
+
"type": "shell",
|
|
279
|
+
"command": "black",
|
|
280
|
+
"args": ["."]
|
|
281
|
+
},
|
|
282
|
+
"enabled": true,
|
|
283
|
+
"alignment": "right",
|
|
284
|
+
"priority": 100,
|
|
285
|
+
"execution": {
|
|
286
|
+
"foreground": false,
|
|
287
|
+
"showProgress": true,
|
|
288
|
+
"timeout": 120000
|
|
289
|
+
},
|
|
290
|
+
"visibility": {
|
|
291
|
+
"conditions": [
|
|
292
|
+
{
|
|
293
|
+
"type": "fileType",
|
|
294
|
+
"patterns": ["*.py"]
|
|
295
|
+
}
|
|
296
|
+
]
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
"id": "python-lint",
|
|
301
|
+
"text": "$(warning) Lint",
|
|
302
|
+
"tooltip": "Run pylint",
|
|
303
|
+
"command": {
|
|
304
|
+
"type": "shell",
|
|
305
|
+
"command": "pylint",
|
|
306
|
+
"args": ["."]
|
|
307
|
+
},
|
|
308
|
+
"enabled": true,
|
|
309
|
+
"alignment": "right",
|
|
310
|
+
"priority": 200,
|
|
311
|
+
"execution": {
|
|
312
|
+
"foreground": false,
|
|
313
|
+
"showProgress": true,
|
|
314
|
+
"timeout": 120000
|
|
315
|
+
},
|
|
316
|
+
"visibility": {
|
|
317
|
+
"conditions": [
|
|
318
|
+
{
|
|
319
|
+
"type": "fileType",
|
|
320
|
+
"patterns": ["*.py"]
|
|
321
|
+
}
|
|
322
|
+
]
|
|
323
|
+
}
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
"id": "python-venv",
|
|
327
|
+
"text": "$(symbol-class) Venv",
|
|
328
|
+
"tooltip": "Activate virtual environment",
|
|
329
|
+
"command": {
|
|
330
|
+
"type": "shell",
|
|
331
|
+
"command": "source",
|
|
332
|
+
"args": [
|
|
333
|
+
"venv/bin/activate",
|
|
334
|
+
"&&",
|
|
335
|
+
"echo",
|
|
336
|
+
"Virtual environment activated"
|
|
337
|
+
]
|
|
338
|
+
},
|
|
339
|
+
"enabled": true,
|
|
340
|
+
"alignment": "right",
|
|
341
|
+
"priority": 300,
|
|
342
|
+
"execution": {
|
|
343
|
+
"foreground": true,
|
|
344
|
+
"showProgress": true,
|
|
345
|
+
"timeout": 10000
|
|
346
|
+
},
|
|
347
|
+
"visibility": {
|
|
348
|
+
"conditions": [
|
|
349
|
+
{
|
|
350
|
+
"type": "fileExists",
|
|
351
|
+
"path": "venv"
|
|
352
|
+
}
|
|
353
|
+
]
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
]
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## Git Operations
|
|
364
|
+
|
|
365
|
+
Git workflow buttons for repository management and common GitHub actions.
|
|
366
|
+
|
|
367
|
+
```json
|
|
368
|
+
{
|
|
369
|
+
"statusbarQuickActions": {
|
|
370
|
+
"buttons": [
|
|
371
|
+
{
|
|
372
|
+
"id": "git-status",
|
|
373
|
+
"text": "$(git-branch) Status",
|
|
374
|
+
"tooltip": "Show Git status",
|
|
375
|
+
"command": {
|
|
376
|
+
"type": "shell",
|
|
377
|
+
"command": "git",
|
|
378
|
+
"args": ["status", "--porcelain"]
|
|
379
|
+
},
|
|
380
|
+
"enabled": true,
|
|
381
|
+
"alignment": "left",
|
|
382
|
+
"priority": 100,
|
|
383
|
+
"execution": {
|
|
384
|
+
"foreground": false,
|
|
385
|
+
"showProgress": false
|
|
386
|
+
},
|
|
387
|
+
"visibility": {
|
|
388
|
+
"conditions": [
|
|
389
|
+
{
|
|
390
|
+
"type": "gitStatus",
|
|
391
|
+
"status": "repository"
|
|
392
|
+
}
|
|
393
|
+
]
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
"id": "git-commit",
|
|
398
|
+
"text": "$(git-commit) Commit",
|
|
399
|
+
"tooltip": "Commit changes with message",
|
|
400
|
+
"command": {
|
|
401
|
+
"type": "shell",
|
|
402
|
+
"command": "git",
|
|
403
|
+
"args": ["commit", "-m", "${input:commitMessage}"]
|
|
404
|
+
},
|
|
405
|
+
"enabled": true,
|
|
406
|
+
"alignment": "left",
|
|
407
|
+
"priority": 200,
|
|
408
|
+
"execution": {
|
|
409
|
+
"foreground": true,
|
|
410
|
+
"showProgress": true,
|
|
411
|
+
"timeout": 60000
|
|
412
|
+
},
|
|
413
|
+
"visibility": {
|
|
414
|
+
"conditions": [
|
|
415
|
+
{
|
|
416
|
+
"type": "gitStatus",
|
|
417
|
+
"status": "dirty"
|
|
418
|
+
}
|
|
419
|
+
]
|
|
420
|
+
}
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
"id": "git-push",
|
|
424
|
+
"text": "$(cloud-upload) Push",
|
|
425
|
+
"tooltip": "Push to remote repository",
|
|
426
|
+
"command": {
|
|
427
|
+
"type": "shell",
|
|
428
|
+
"command": "git",
|
|
429
|
+
"args": ["push", "origin", "HEAD"]
|
|
430
|
+
},
|
|
431
|
+
"enabled": true,
|
|
432
|
+
"alignment": "left",
|
|
433
|
+
"priority": 300,
|
|
434
|
+
"execution": {
|
|
435
|
+
"foreground": false,
|
|
436
|
+
"showProgress": true,
|
|
437
|
+
"timeout": 120000
|
|
438
|
+
},
|
|
439
|
+
"visibility": {
|
|
440
|
+
"conditions": [
|
|
441
|
+
{
|
|
442
|
+
"type": "gitStatus",
|
|
443
|
+
"status": "ahead"
|
|
444
|
+
}
|
|
445
|
+
]
|
|
446
|
+
}
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
"id": "git-pull",
|
|
450
|
+
"text": "$(cloud-download) Pull",
|
|
451
|
+
"tooltip": "Pull from remote repository",
|
|
452
|
+
"command": {
|
|
453
|
+
"type": "shell",
|
|
454
|
+
"command": "git",
|
|
455
|
+
"args": ["pull", "--rebase"]
|
|
456
|
+
},
|
|
457
|
+
"enabled": true,
|
|
458
|
+
"alignment": "left",
|
|
459
|
+
"priority": 400,
|
|
460
|
+
"execution": {
|
|
461
|
+
"foreground": false,
|
|
462
|
+
"showProgress": true,
|
|
463
|
+
"timeout": 120000
|
|
464
|
+
},
|
|
465
|
+
"visibility": {
|
|
466
|
+
"conditions": [
|
|
467
|
+
{
|
|
468
|
+
"type": "gitStatus",
|
|
469
|
+
"status": "repository"
|
|
470
|
+
}
|
|
471
|
+
]
|
|
472
|
+
}
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
"id": "gh-pr-create",
|
|
476
|
+
"text": "$(git-pull-request) PR",
|
|
477
|
+
"tooltip": "Create GitHub Pull Request",
|
|
478
|
+
"command": {
|
|
479
|
+
"type": "github",
|
|
480
|
+
"command": "pr",
|
|
481
|
+
"args": ["create", "--fill"]
|
|
482
|
+
},
|
|
483
|
+
"enabled": true,
|
|
484
|
+
"alignment": "right",
|
|
485
|
+
"priority": 100,
|
|
486
|
+
"execution": {
|
|
487
|
+
"foreground": true,
|
|
488
|
+
"showProgress": true,
|
|
489
|
+
"timeout": 60000
|
|
490
|
+
},
|
|
491
|
+
"visibility": {
|
|
492
|
+
"conditions": [
|
|
493
|
+
{
|
|
494
|
+
"type": "gitStatus",
|
|
495
|
+
"status": "ahead"
|
|
496
|
+
}
|
|
497
|
+
]
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
]
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
---
|
|
506
|
+
|
|
507
|
+
## Docker Workflows
|
|
508
|
+
|
|
509
|
+
Container management and deployment buttons for Docker-based projects.
|
|
510
|
+
|
|
511
|
+
```json
|
|
512
|
+
{
|
|
513
|
+
"statusbarQuickActions": {
|
|
514
|
+
"buttons": [
|
|
515
|
+
{
|
|
516
|
+
"id": "docker-build",
|
|
517
|
+
"text": "$(package) Build",
|
|
518
|
+
"tooltip": "Build Docker image",
|
|
519
|
+
"command": {
|
|
520
|
+
"type": "shell",
|
|
521
|
+
"command": "docker",
|
|
522
|
+
"args": ["build", "-t", "${input:imageName}", "."]
|
|
523
|
+
},
|
|
524
|
+
"enabled": true,
|
|
525
|
+
"alignment": "left",
|
|
526
|
+
"priority": 100,
|
|
527
|
+
"execution": {
|
|
528
|
+
"foreground": false,
|
|
529
|
+
"showProgress": true,
|
|
530
|
+
"timeout": 600000
|
|
531
|
+
},
|
|
532
|
+
"visibility": {
|
|
533
|
+
"conditions": [
|
|
534
|
+
{
|
|
535
|
+
"type": "fileExists",
|
|
536
|
+
"path": "Dockerfile"
|
|
537
|
+
}
|
|
538
|
+
]
|
|
539
|
+
}
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
"id": "docker-run",
|
|
543
|
+
"text": "$(play) Run",
|
|
544
|
+
"tooltip": "Run Docker container",
|
|
545
|
+
"command": {
|
|
546
|
+
"type": "shell",
|
|
547
|
+
"command": "docker",
|
|
548
|
+
"args": [
|
|
549
|
+
"run",
|
|
550
|
+
"-d",
|
|
551
|
+
"--name",
|
|
552
|
+
"${input:containerName}",
|
|
553
|
+
"${input:imageName}"
|
|
554
|
+
]
|
|
555
|
+
},
|
|
556
|
+
"enabled": true,
|
|
557
|
+
"alignment": "left",
|
|
558
|
+
"priority": 200,
|
|
559
|
+
"execution": {
|
|
560
|
+
"foreground": true,
|
|
561
|
+
"showProgress": true,
|
|
562
|
+
"timeout": 30000
|
|
563
|
+
},
|
|
564
|
+
"visibility": {
|
|
565
|
+
"conditions": [
|
|
566
|
+
{
|
|
567
|
+
"type": "fileExists",
|
|
568
|
+
"path": "Dockerfile"
|
|
569
|
+
}
|
|
570
|
+
]
|
|
571
|
+
}
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
"id": "docker-logs",
|
|
575
|
+
"text": "$(list-ordered) Logs",
|
|
576
|
+
"tooltip": "View container logs",
|
|
577
|
+
"command": {
|
|
578
|
+
"type": "shell",
|
|
579
|
+
"command": "docker",
|
|
580
|
+
"args": ["logs", "-f", "${input:containerName}"]
|
|
581
|
+
},
|
|
582
|
+
"enabled": true,
|
|
583
|
+
"alignment": "left",
|
|
584
|
+
"priority": 300,
|
|
585
|
+
"execution": {
|
|
586
|
+
"foreground": true,
|
|
587
|
+
"showProgress": false,
|
|
588
|
+
"timeout": 0
|
|
589
|
+
}
|
|
590
|
+
},
|
|
591
|
+
{
|
|
592
|
+
"id": "docker-compose-up",
|
|
593
|
+
"text": "$(play-circle) Compose Up",
|
|
594
|
+
"tooltip": "Start services with docker-compose",
|
|
595
|
+
"command": {
|
|
596
|
+
"type": "shell",
|
|
597
|
+
"command": "docker-compose",
|
|
598
|
+
"args": ["up", "-d"]
|
|
599
|
+
},
|
|
600
|
+
"enabled": true,
|
|
601
|
+
"alignment": "right",
|
|
602
|
+
"priority": 100,
|
|
603
|
+
"execution": {
|
|
604
|
+
"foreground": false,
|
|
605
|
+
"showProgress": true,
|
|
606
|
+
"timeout": 300000
|
|
607
|
+
},
|
|
608
|
+
"visibility": {
|
|
609
|
+
"conditions": [
|
|
610
|
+
{
|
|
611
|
+
"type": "fileExists",
|
|
612
|
+
"path": "docker-compose.yml"
|
|
613
|
+
}
|
|
614
|
+
]
|
|
615
|
+
}
|
|
616
|
+
},
|
|
617
|
+
{
|
|
618
|
+
"id": "docker-clean",
|
|
619
|
+
"text": "$(trash) Clean",
|
|
620
|
+
"tooltip": "Clean up Docker resources",
|
|
621
|
+
"command": {
|
|
622
|
+
"type": "shell",
|
|
623
|
+
"command": "docker",
|
|
624
|
+
"args": ["system", "prune", "-f"]
|
|
625
|
+
},
|
|
626
|
+
"enabled": true,
|
|
627
|
+
"alignment": "right",
|
|
628
|
+
"priority": 200,
|
|
629
|
+
"execution": {
|
|
630
|
+
"foreground": false,
|
|
631
|
+
"showProgress": true,
|
|
632
|
+
"timeout": 120000
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
]
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
---
|
|
641
|
+
|
|
642
|
+
## Multi-Service Applications
|
|
643
|
+
|
|
644
|
+
Complex applications with multiple services and environments.
|
|
645
|
+
|
|
646
|
+
```json
|
|
647
|
+
{
|
|
648
|
+
"statusbarQuickActions": {
|
|
649
|
+
"buttons": [
|
|
650
|
+
{
|
|
651
|
+
"id": "service-api",
|
|
652
|
+
"text": "API $(play)",
|
|
653
|
+
"tooltip": "Start API service",
|
|
654
|
+
"command": {
|
|
655
|
+
"type": "shell",
|
|
656
|
+
"command": "npm",
|
|
657
|
+
"args": ["run", "dev:api"]
|
|
658
|
+
},
|
|
659
|
+
"enabled": true,
|
|
660
|
+
"alignment": "left",
|
|
661
|
+
"priority": 100,
|
|
662
|
+
"execution": {
|
|
663
|
+
"foreground": true,
|
|
664
|
+
"showProgress": true,
|
|
665
|
+
"timeout": 0
|
|
666
|
+
},
|
|
667
|
+
"visibility": {
|
|
668
|
+
"conditions": [
|
|
669
|
+
{
|
|
670
|
+
"type": "workspaceFolder",
|
|
671
|
+
"folders": ["api", "backend", "server"]
|
|
672
|
+
}
|
|
673
|
+
]
|
|
674
|
+
}
|
|
675
|
+
},
|
|
676
|
+
{
|
|
677
|
+
"id": "service-frontend",
|
|
678
|
+
"text": "Web $(play)",
|
|
679
|
+
"tooltip": "Start frontend service",
|
|
680
|
+
"command": {
|
|
681
|
+
"type": "shell",
|
|
682
|
+
"command": "npm",
|
|
683
|
+
"args": ["run", "dev:frontend"]
|
|
684
|
+
},
|
|
685
|
+
"enabled": true,
|
|
686
|
+
"alignment": "left",
|
|
687
|
+
"priority": 200,
|
|
688
|
+
"execution": {
|
|
689
|
+
"foreground": true,
|
|
690
|
+
"showProgress": true,
|
|
691
|
+
"timeout": 0
|
|
692
|
+
},
|
|
693
|
+
"visibility": {
|
|
694
|
+
"conditions": [
|
|
695
|
+
{
|
|
696
|
+
"type": "workspaceFolder",
|
|
697
|
+
"folders": ["frontend", "web", "client"]
|
|
698
|
+
}
|
|
699
|
+
]
|
|
700
|
+
}
|
|
701
|
+
},
|
|
702
|
+
{
|
|
703
|
+
"id": "env-dev",
|
|
704
|
+
"text": "Dev",
|
|
705
|
+
"tooltip": "Switch to development environment",
|
|
706
|
+
"command": {
|
|
707
|
+
"type": "shell",
|
|
708
|
+
"command": "export",
|
|
709
|
+
"args": [
|
|
710
|
+
"NODE_ENV=development",
|
|
711
|
+
"&&",
|
|
712
|
+
"echo",
|
|
713
|
+
"Development environment set"
|
|
714
|
+
]
|
|
715
|
+
},
|
|
716
|
+
"enabled": true,
|
|
717
|
+
"alignment": "right",
|
|
718
|
+
"priority": 100,
|
|
719
|
+
"execution": {
|
|
720
|
+
"foreground": true,
|
|
721
|
+
"showProgress": true,
|
|
722
|
+
"timeout": 10000
|
|
723
|
+
}
|
|
724
|
+
},
|
|
725
|
+
{
|
|
726
|
+
"id": "env-prod",
|
|
727
|
+
"text": "Prod",
|
|
728
|
+
"tooltip": "Switch to production environment",
|
|
729
|
+
"command": {
|
|
730
|
+
"type": "shell",
|
|
731
|
+
"command": "export",
|
|
732
|
+
"args": [
|
|
733
|
+
"NODE_ENV=production",
|
|
734
|
+
"&&",
|
|
735
|
+
"echo",
|
|
736
|
+
"Production environment set"
|
|
737
|
+
]
|
|
738
|
+
},
|
|
739
|
+
"enabled": true,
|
|
740
|
+
"alignment": "right",
|
|
741
|
+
"priority": 200,
|
|
742
|
+
"execution": {
|
|
743
|
+
"foreground": true,
|
|
744
|
+
"showProgress": true,
|
|
745
|
+
"timeout": 10000
|
|
746
|
+
}
|
|
747
|
+
},
|
|
748
|
+
{
|
|
749
|
+
"id": "services-all",
|
|
750
|
+
"text": "All $(rocket)",
|
|
751
|
+
"tooltip": "Start all services",
|
|
752
|
+
"command": {
|
|
753
|
+
"type": "shell",
|
|
754
|
+
"command": "concurrently",
|
|
755
|
+
"args": [
|
|
756
|
+
"\"npm run dev:api\"",
|
|
757
|
+
"\"npm run dev:frontend\"",
|
|
758
|
+
"\"npm run dev:worker\""
|
|
759
|
+
]
|
|
760
|
+
},
|
|
761
|
+
"enabled": true,
|
|
762
|
+
"alignment": "left",
|
|
763
|
+
"priority": 50,
|
|
764
|
+
"execution": {
|
|
765
|
+
"foreground": true,
|
|
766
|
+
"showProgress": true,
|
|
767
|
+
"timeout": 0
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
]
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
```
|
|
774
|
+
|
|
775
|
+
---
|
|
776
|
+
|
|
777
|
+
## Advanced Use Cases
|
|
778
|
+
|
|
779
|
+
### Conditional Visibility with Git Status
|
|
780
|
+
|
|
781
|
+
```json
|
|
782
|
+
{
|
|
783
|
+
"statusbarQuickActions": {
|
|
784
|
+
"buttons": [
|
|
785
|
+
{
|
|
786
|
+
"id": "deploy-production",
|
|
787
|
+
"text": "$(rocket) Deploy",
|
|
788
|
+
"tooltip": "Deploy to production",
|
|
789
|
+
"command": {
|
|
790
|
+
"type": "shell",
|
|
791
|
+
"command": "npm",
|
|
792
|
+
"args": ["run", "deploy:prod"]
|
|
793
|
+
},
|
|
794
|
+
"enabled": true,
|
|
795
|
+
"alignment": "right",
|
|
796
|
+
"priority": 100,
|
|
797
|
+
"execution": {
|
|
798
|
+
"foreground": false,
|
|
799
|
+
"showProgress": true,
|
|
800
|
+
"timeout": 300000
|
|
801
|
+
},
|
|
802
|
+
"visibility": {
|
|
803
|
+
"conditions": [
|
|
804
|
+
{
|
|
805
|
+
"type": "gitStatus",
|
|
806
|
+
"status": "clean"
|
|
807
|
+
},
|
|
808
|
+
{
|
|
809
|
+
"type": "fileType",
|
|
810
|
+
"patterns": ["package.json"]
|
|
811
|
+
},
|
|
812
|
+
{
|
|
813
|
+
"type": "workspaceFolder",
|
|
814
|
+
"folders": ["main", "master"],
|
|
815
|
+
"invert": true
|
|
816
|
+
}
|
|
817
|
+
]
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
]
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
```
|
|
824
|
+
|
|
825
|
+
### Custom Environment Variables
|
|
826
|
+
|
|
827
|
+
```json
|
|
828
|
+
{
|
|
829
|
+
"statusbarQuickActions": {
|
|
830
|
+
"buttons": [
|
|
831
|
+
{
|
|
832
|
+
"id": "custom-env-run",
|
|
833
|
+
"text": "$(symbol-property) Run",
|
|
834
|
+
"tooltip": "Run with custom environment",
|
|
835
|
+
"command": {
|
|
836
|
+
"type": "shell",
|
|
837
|
+
"command": "node",
|
|
838
|
+
"args": ["app.js"]
|
|
839
|
+
},
|
|
840
|
+
"enabled": true,
|
|
841
|
+
"alignment": "left",
|
|
842
|
+
"priority": 100,
|
|
843
|
+
"execution": {
|
|
844
|
+
"foreground": true,
|
|
845
|
+
"showProgress": true,
|
|
846
|
+
"timeout": 60000
|
|
847
|
+
},
|
|
848
|
+
"workingDirectory": "${workspaceFolder}",
|
|
849
|
+
"environment": {
|
|
850
|
+
"NODE_ENV": "development",
|
|
851
|
+
"API_URL": "http://localhost:3000",
|
|
852
|
+
"DEBUG": "app:*"
|
|
853
|
+
}
|
|
854
|
+
}
|
|
855
|
+
]
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
```
|
|
859
|
+
|
|
860
|
+
### VSCode Command Integration
|
|
861
|
+
|
|
862
|
+
```json
|
|
863
|
+
{
|
|
864
|
+
"statusbarQuickActions": {
|
|
865
|
+
"buttons": [
|
|
866
|
+
{
|
|
867
|
+
"id": "format-document",
|
|
868
|
+
"text": "$(symbol-number) Format",
|
|
869
|
+
"tooltip": "Format current document",
|
|
870
|
+
"command": {
|
|
871
|
+
"type": "vscode",
|
|
872
|
+
"command": "editor.action.formatDocument"
|
|
873
|
+
},
|
|
874
|
+
"enabled": true,
|
|
875
|
+
"alignment": "right",
|
|
876
|
+
"priority": 100,
|
|
877
|
+
"execution": {
|
|
878
|
+
"foreground": true,
|
|
879
|
+
"showProgress": true,
|
|
880
|
+
"timeout": 30000
|
|
881
|
+
}
|
|
882
|
+
},
|
|
883
|
+
{
|
|
884
|
+
"id": "toggle-terminal",
|
|
885
|
+
"text": "$(terminal) Toggle",
|
|
886
|
+
"tooltip": "Toggle integrated terminal",
|
|
887
|
+
"command": {
|
|
888
|
+
"type": "vscode",
|
|
889
|
+
"command": "workbench.action.terminal.toggleTerminal"
|
|
890
|
+
},
|
|
891
|
+
"enabled": true,
|
|
892
|
+
"alignment": "right",
|
|
893
|
+
"priority": 200,
|
|
894
|
+
"execution": {
|
|
895
|
+
"foreground": true,
|
|
896
|
+
"showProgress": false
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
]
|
|
900
|
+
}
|
|
901
|
+
}
|
|
902
|
+
```
|
|
903
|
+
|
|
904
|
+
---
|
|
905
|
+
|
|
906
|
+
## Tips and Best Practices
|
|
907
|
+
|
|
908
|
+
### 1. Button Priority
|
|
909
|
+
|
|
910
|
+
- **Left side (low priority numbers)**: 100-500
|
|
911
|
+
- **Right side (high priority numbers)**: 100-500
|
|
912
|
+
- Higher numbers appear further from the edge
|
|
913
|
+
|
|
914
|
+
### 2. Execution Settings
|
|
915
|
+
|
|
916
|
+
- **Foreground**: User sees command output in terminal
|
|
917
|
+
- **Background**: Command runs silently, shows progress only
|
|
918
|
+
- **Timeout**: Set to 0 for unlimited (long-running commands)
|
|
919
|
+
|
|
920
|
+
### 3. Visibility Conditions
|
|
921
|
+
|
|
922
|
+
- Use multiple conditions for complex logic
|
|
923
|
+
- Combine with `invert: true` for exclusion patterns
|
|
924
|
+
- File type patterns support wildcards (_.js, _.test.\*)
|
|
925
|
+
|
|
926
|
+
### 4. Icon Animations
|
|
927
|
+
|
|
928
|
+
- `spin`: Spinning animation for loading states
|
|
929
|
+
- `pulse`: Pulsing animation for notifications
|
|
930
|
+
- Use `null` for no animation
|
|
931
|
+
|
|
932
|
+
### 5. Environment Variables
|
|
933
|
+
|
|
934
|
+
- Define project-specific environment variables
|
|
935
|
+
- Use VS Code variables like `${workspaceFolder}`, `${fileBasename}`
|
|
936
|
+
- Combine shell commands with environment setup
|
|
937
|
+
|
|
938
|
+
### 6. Package Manager Auto-Detection
|
|
939
|
+
|
|
940
|
+
- Set command type to "detect" for automatic package manager detection
|
|
941
|
+
- Extension will choose between npm, yarn, pnpm, or bun based on lock files
|
|
942
|
+
|
|
943
|
+
---
|
|
944
|
+
|
|
945
|
+
## Troubleshooting
|
|
946
|
+
|
|
947
|
+
### Common Issues
|
|
948
|
+
|
|
949
|
+
1. **Button not showing**: Check visibility conditions and file associations
|
|
950
|
+
2. **Command not found**: Verify package manager installation and PATH
|
|
951
|
+
3. **Permission errors**: Check file permissions and working directory
|
|
952
|
+
4. **Timeout errors**: Increase timeout value for slow commands
|
|
953
|
+
|
|
954
|
+
### Debug Mode
|
|
955
|
+
|
|
956
|
+
Enable debug mode in settings:
|
|
957
|
+
|
|
958
|
+
```json
|
|
959
|
+
{
|
|
960
|
+
"statusbarQuickActions": {
|
|
961
|
+
"settings": {
|
|
962
|
+
"debug": true
|
|
963
|
+
}
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
```
|
|
967
|
+
|
|
968
|
+
This will show detailed error messages and command execution logs in the output panel.
|
|
969
|
+
|
|
970
|
+
---
|
|
971
|
+
|
|
972
|
+
_Last updated: December 2024_
|
|
973
|
+
_Extension version: 1.0.0_
|