in src/extension.ts [58:119]
await callWithTelemetryAndErrorHandling('docker.activate', async (activateContext: IActionContext) => {
activateContext.errorHandling.rethrow = true;
activateContext.telemetry.properties.isActivationEvent = 'true';
activateContext.telemetry.measurements.mainFileLoad = (perfStats.loadEndTime - perfStats.loadStartTime) / 1000;
activateContext.telemetry.properties.dockerInstallationIDHash = await getDockerInstallationIDHash();
// All of these internally handle telemetry opt-in
ext.activityMeasurementService = new ActivityMeasurementService(ctx.globalState);
let targetPopulation: tas.TargetPopulation;
if (process.env.DEBUGTELEMETRY || process.env.VSCODE_DOCKER_TEAM === '1') {
targetPopulation = tas.TargetPopulation.Team;
} else if (/alpha/ig.test(extensionVersion.value)) {
targetPopulation = tas.TargetPopulation.Insiders;
} else {
targetPopulation = tas.TargetPopulation.Public;
}
ext.experimentationService = await createExperimentationService(ctx, targetPopulation);
// Temporarily disabled--reenable if we need to do any surveys
// (new SurveyManager()).activate();
// Remove the "Report Issue" button from all error messages in favor of the command
// TODO: use built-in issue reporter if/when support is added to include arbitrary info in addition to repro steps (which we would leave blank to force the user to type *something*)
registerErrorHandler(ctx => ctx.errorHandling.suppressReportIssue = true);
registerReportIssueCommand('vscode-docker.help.reportIssue');
ctx.subscriptions.push(
vscode.languages.registerCompletionItemProvider(
DOCUMENT_SELECTOR,
new DockerfileCompletionItemProvider(),
'.'
)
);
ctx.subscriptions.push(ext.dockerContextManager = new DockerContextManager());
// At initialization we need to force a refresh since the filesystem watcher would have no reason to trigger
// No need to wait thanks to ContextLoadingClient
void ext.dockerContextManager.refresh();
ctx.subscriptions.push(
vscode.workspace.registerFileSystemProvider(
'docker',
new ContainerFilesProvider(() => ext.dockerClient),
{
// While Windows containers aren't generally case-sensitive, Linux containers are and make up the overwhelming majority of running containers.
isCaseSensitive: true,
isReadonly: false
})
);
registerTrees();
registerCommands();
registerDebugProvider(ctx);
registerTaskProviders(ctx);
activateDockerfileLanguageClient(ctx);
activateComposeLanguageClient(ctx);
registerListeners();
});