Skip to content

Commit 45e286f

Browse files
authored
Merge pull request #114 from docker/record-installed-extensions-telemetry
Record if certain extensions are installed
2 parents 489660c + 931cf06 commit 45e286f

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

TELEMETRY.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ If you have already opted out of sending telemetry in Visual Studio Code then no
2323
- Docker version
2424
- function names and parameters for diagnosing errors and crashes
2525
- error messages when the language server is unable to start or is crashing
26+
- if certain extensions are also installed
27+
- [Microsoft's Container Tools extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-containers)
28+
- [Microsoft's Docker extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker)
29+
- [Red Hat's YAML extension](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml)
2630

2731
The list above does _not_ include any telemetry collected by the [Docker Language Server](https://github.com/docker/docker-language-server). For telemetry collected by the Docker Language Server, please refer to the telemetry documentation of that project.
2832

src/extension.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,15 @@ function listenForConfigurationChanges(ctx: vscode.ExtensionContext) {
211211
}
212212

213213
function recordVersionTelemetry() {
214+
const installedExtensions = vscode.extensions.all
215+
.filter((extension) => {
216+
return (
217+
extension.id === 'ms-azuretools.vscode-docker' ||
218+
extension.id === 'ms-azuretools.vscode-containers' ||
219+
extension.id === 'redhat.vscode-yaml'
220+
);
221+
})
222+
.map((extension) => extension.id);
214223
let versionString: string | null = null;
215224
const process = spawn('docker', ['-v']);
216225
process.stdout.on('data', (data) => {
@@ -223,17 +232,20 @@ function recordVersionTelemetry() {
223232
// this happens if docker cannot be found on the PATH
224233
queueTelemetryEvent(EVENT_CLIENT_HEARTBEAT, false, {
225234
docker_version: 'spawn docker -v failed',
235+
installedExtensions,
226236
});
227237
publishTelemetry();
228238
});
229239
process.on('exit', (code) => {
230240
if (code === 0) {
231241
queueTelemetryEvent(EVENT_CLIENT_HEARTBEAT, false, {
232242
docker_version: String(versionString),
243+
installedExtensions,
233244
});
234245
} else {
235246
queueTelemetryEvent(EVENT_CLIENT_HEARTBEAT, false, {
236247
docker_version: String(code),
248+
installedExtensions,
237249
});
238250
}
239251
publishTelemetry();

src/telemetry/client.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ interface TelemetryRecord {
99
event: string;
1010
source: string;
1111
event_timestamp: number;
12-
properties: { [key: string]: boolean | number | string | undefined };
12+
properties: { [key: string]: boolean | number | string | object | undefined };
1313
}
1414

1515
const events: TelemetryRecord[] = [];
1616

1717
export function queueTelemetryEvent(
1818
event: string,
1919
error: boolean,
20-
properties: { [key: string]: boolean | number | string | undefined },
20+
properties: { [key: string]: boolean | number | string | object | undefined },
2121
) {
2222
if (!vscode.env.isTelemetryEnabled) {
2323
return;

0 commit comments

Comments
 (0)