diff --git a/src/extension.ts b/src/extension.ts index 393ebf50..abe1891e 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -19,7 +19,7 @@ import { ConnectionType, ProtocolType, PuppetInstallType, ISettings } from './se import { ILogger } from './logging'; import { OutputChannelLogger } from './logging/outputchannel'; import { legacySettings, SettingsFromWorkspace } from './settings'; -import { Reporter, reporter } from './telemetry/telemetry'; +import { reporter } from './telemetry'; import { PuppetModuleHoverFeature } from './feature/PuppetModuleHoverFeature'; const axios = require('axios'); @@ -41,8 +41,6 @@ export function activate(context: vscode.ExtensionContext) { checkForLegacySettings(); - context.subscriptions.push(new Reporter(extContext)); - const settings = SettingsFromWorkspace(); const previousInstallType = settings.installType; configSettings = CreateAggregrateConfiguration(settings); @@ -114,6 +112,7 @@ export function deactivate() { if (connectionHandler !== undefined) { connectionHandler.stop(); } + reporter.dispose(); } function checkForLegacySettings() { diff --git a/src/feature/BoltFeature.ts b/src/feature/BoltFeature.ts index 9cbfa47d..a1cef9d2 100644 --- a/src/feature/BoltFeature.ts +++ b/src/feature/BoltFeature.ts @@ -2,7 +2,7 @@ import { ExtensionContext, commands, window, Uri } from 'vscode'; import { IFeature } from '../feature'; import * as path from 'path'; import * as fs from 'fs'; -import { reporter } from '../telemetry/telemetry'; +import { reporter } from '../telemetry'; export class BoltFeature implements IFeature { dispose() { } diff --git a/src/feature/NodeGraphFeature.ts b/src/feature/NodeGraphFeature.ts index 138473e9..25340e2e 100644 --- a/src/feature/NodeGraphFeature.ts +++ b/src/feature/NodeGraphFeature.ts @@ -7,7 +7,7 @@ import { IFeature } from "../feature"; import { ILogger } from "../logging"; import { ConnectionStatus } from '../interfaces'; import { CompileNodeGraphRequest, CompileNodeGraphResponse } from '../messages'; -import { reporter } from '../telemetry/telemetry'; +import { reporter } from '../telemetry'; import * as viz from 'viz.js'; import { ConnectionHandler } from "../handler"; import { ISettings, SettingsFromWorkspace } from '../settings'; diff --git a/src/feature/PDKFeature.ts b/src/feature/PDKFeature.ts index b1a6a2ee..2acfafaf 100644 --- a/src/feature/PDKFeature.ts +++ b/src/feature/PDKFeature.ts @@ -4,7 +4,7 @@ import * as vscode from 'vscode'; import { IFeature } from '../feature'; import { ILogger } from '../logging'; import { PDKCommandStrings } from '../messages'; -import { reporter } from '../telemetry/telemetry'; +import { reporter } from '../telemetry'; export class PDKFeature implements IFeature { private terminal: vscode.Terminal; diff --git a/src/feature/PuppetResourceFeature.ts b/src/feature/PuppetResourceFeature.ts index a52896fe..cec8a0a8 100644 --- a/src/feature/PuppetResourceFeature.ts +++ b/src/feature/PuppetResourceFeature.ts @@ -4,7 +4,7 @@ import * as vscode from 'vscode'; import { IFeature } from '../feature'; import { ILogger } from '../logging'; import { PuppetCommandStrings, PuppetResourceRequestParams, PuppetResourceRequest, PuppetResourceResponse } from '../messages'; -import { reporter } from '../telemetry/telemetry'; +import { reporter } from '../telemetry'; import { ConnectionStatus } from '../interfaces'; import { ConnectionHandler } from '../handler'; import { ISettings, SettingsFromWorkspace } from '../settings'; diff --git a/src/handler.ts b/src/handler.ts index 8daf1f7e..e82c482f 100644 --- a/src/handler.ts +++ b/src/handler.ts @@ -6,7 +6,7 @@ import { ConnectionType, ProtocolType } from './settings'; import { IPuppetStatusBar } from './feature/PuppetStatusBarFeature'; import { OutputChannelLogger } from './logging/outputchannel'; import { PuppetVersionDetails, PuppetVersionRequest, PuppetCommandStrings } from './messages'; -import { reporter } from './telemetry/telemetry'; +import { reporter } from './telemetry'; import { puppetFileLangID, puppetLangID} from './extension'; import { IAggregateConfiguration } from './configuration'; diff --git a/src/telemetry.ts b/src/telemetry.ts new file mode 100644 index 00000000..0fd24160 --- /dev/null +++ b/src/telemetry.ts @@ -0,0 +1,30 @@ +import * as vscode from 'vscode'; +import TelemetryReporter from 'vscode-extension-telemetry'; + + +export const reporter:TelemetryReporter = getTelemetryReporter(); + +function getTelemetryReporter() { + let pkg = getPackageInfo(); + let reporter:TelemetryReporter = new TelemetryReporter( + pkg.name, + pkg.version, + pkg.aiKey + ); + return reporter; +} + +function getPackageInfo(): IPackageInfo { + let pkg = vscode.extensions.getExtension('jpogran.puppet-vscode'); + return { + name: pkg.packageJSON.name, + version: pkg.packageJSON.version, + aiKey: pkg.packageJSON.aiKey + }; +} + +interface IPackageInfo { + name: string; + version: string; + aiKey: string; +} diff --git a/src/telemetry/telemetry.ts b/src/telemetry/telemetry.ts deleted file mode 100644 index fd67e6e4..00000000 --- a/src/telemetry/telemetry.ts +++ /dev/null @@ -1,31 +0,0 @@ -import vscode = require('vscode'); -import TelemetryReporter from 'vscode-extension-telemetry'; - -export var reporter: TelemetryReporter; - -export class Reporter extends vscode.Disposable { - constructor(ctx: vscode.ExtensionContext) { - super(() => reporter.dispose()); - let packageInfo = getPackageInfo(ctx); - reporter = packageInfo && new TelemetryReporter( - packageInfo.name, - packageInfo.version, - packageInfo.aiKey - ); - } -} - -interface IPackageInfo { - name: string; - version: string; - aiKey: string; -} - -function getPackageInfo(context: vscode.ExtensionContext): IPackageInfo { - let extensionPackage = require(context.asAbsolutePath('./package.json')); - return { - name: extensionPackage.name, - version: extensionPackage.version, - aiKey: extensionPackage.aiKey - }; -} diff --git a/src/telemetry/typings/vscode-extension-telemetry.d.ts b/src/telemetry/typings/vscode-extension-telemetry.d.ts deleted file mode 100644 index 6cb1f5a5..00000000 --- a/src/telemetry/typings/vscode-extension-telemetry.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -declare module 'vscode-extension-telemetry' { - export default class TelemetryReporter { - constructor(extensionId: string, extensionVersion: string, key: string); - sendTelemetryEvent( - eventName: string, - properties?: { [key: string]: string }, - measures?: { [key: string]: number } - ): void; - sendTelemetryException( - error: Error, - properties?: { [key: string]: string;}, - measurements?: { [key: string]: number; } - ): void; - dispose(); // tslint:disable-line - } -}