From 779fbce6d5ad1387e0de3f4417b8f1a5b957b048 Mon Sep 17 00:00:00 2001 From: Emanuele Libralato Date: Tue, 17 Dec 2019 00:01:52 +0100 Subject: [PATCH] fix: stuff --- examples/demo-project/backend/garden.yml | 4 ++-- garden-service/src/analytics/analytics.ts | 6 +++--- garden-service/src/cli/cli.ts | 3 +-- garden-service/src/config/project.ts | 9 ++++++++- garden-service/src/config/validation.ts | 9 ++++++--- garden-service/src/garden.ts | 8 +++++++- 6 files changed, 27 insertions(+), 12 deletions(-) diff --git a/examples/demo-project/backend/garden.yml b/examples/demo-project/backend/garden.yml index 3c12958829d..3d9408a9f2f 100644 --- a/examples/demo-project/backend/garden.yml +++ b/examples/demo-project/backend/garden.yml @@ -2,13 +2,13 @@ kind: Module name: backend description: Backend service container type: container -sesrvices: +services: - name: backend ports: - name: http containerPort: 8080 # Maps service:80 -> container:8080 servicePort: 80 - ingrssesses: + ingresses: - path: /hello-backend port: http diff --git a/garden-service/src/analytics/analytics.ts b/garden-service/src/analytics/analytics.ts index de23c180fab..47b8085da35 100644 --- a/garden-service/src/analytics/analytics.ts +++ b/garden-service/src/analytics/analytics.ts @@ -123,7 +123,7 @@ export class AnalyticsHandler implements Analytics { private constructor(log: LogEntry) { // { flushAt: 1 } means the client will track events as soon as they are created // no batching is occurring: this will change once the daemon is implemented - this.segment = new segmentClient(API_KEY, { flushAt: 10, flushInterval: 300 }) + this.segment = new segmentClient(API_KEY, { flushAt: 1, flushInterval: 100 }) this.log = log this.globalConfigStore = new GlobalConfigStore() this.globalConfig = { @@ -234,7 +234,7 @@ export class AnalyticsHandler implements Analytics { * @memberof Analytics */ private track(event: AnalyticsEvent) { - if (this.segment && this.hasOptedIn() && !ci.isCI) { + if (this.segment && this.hasOptedIn()) { const segmentEvent: SegmentEvent = { userId: this.globalConfig.userId, event: event.type, @@ -334,7 +334,7 @@ export class AnalyticsHandler implements Analytics { trackProjectConfigError(fields: Array) { return this.track({ - type: AnalyticsType.MODULE_CONFIG_ERROR, + type: AnalyticsType.PROJECT_CONFIG_ERROR, properties: { ...this.getBasicAnalyticsProperties(), fields, diff --git a/garden-service/src/cli/cli.ts b/garden-service/src/cli/cli.ts index 1470790a9be..c7d615ed45d 100644 --- a/garden-service/src/cli/cli.ts +++ b/garden-service/src/cli/cli.ts @@ -460,8 +460,7 @@ export async function run(): Promise { console.log(err) code = 1 } finally { - const log = Logger.getInstance().placeholder() - const analytics = await AnalyticsHandler.getInstance(log) + const analytics = await AnalyticsHandler.getInstance() await analytics.flush() shutdown(code) } diff --git a/garden-service/src/config/project.ts b/garden-service/src/config/project.ts index 9612ff5d64d..6c1f87f07d8 100644 --- a/garden-service/src/config/project.ts +++ b/garden-service/src/config/project.ts @@ -32,6 +32,8 @@ import { DEFAULT_API_VERSION } from "../constants" import { defaultDotIgnoreFiles } from "../util/fs" import { pathExists, readFile } from "fs-extra" import { resolve } from "path" +import { AnalyticsHandler } from "../analytics/analytics" +import { AnalyticsType } from "../analytics/analytics-types" export const defaultVarfilePath = "garden.env" export const defaultEnvVarfilePath = (environmentName: string) => `garden.${environmentName}.env` @@ -303,7 +305,8 @@ export const projectSchema = joi export async function resolveProjectConfig(config: ProjectConfig, artifactsPath: string): Promise { // Resolve template strings for non-environment-specific fields let { environmentDefaults, environments = [] } = config - + const analytics = await AnalyticsHandler.getInstance() + debugger const globalConfig = await resolveTemplateStrings( { apiVersion: config.apiVersion, @@ -325,6 +328,10 @@ export async function resolveProjectConfig(config: ProjectConfig, artifactsPath: configType: "project", path: config.path, projectRoot: config.path, + analyticsContext: { + analytics, + analyticsType: AnalyticsType.PROJECT_CONFIG_ERROR, + }, }) // Convert deprecated fields diff --git a/garden-service/src/config/validation.ts b/garden-service/src/config/validation.ts index 05f2180f235..540396e70de 100644 --- a/garden-service/src/config/validation.ts +++ b/garden-service/src/config/validation.ts @@ -28,7 +28,7 @@ export interface ValidateOptions { export interface AnalyticsContext { analytics: Analytics analyticsType: AnalyticsType - metadata: any + metadata?: any } export interface ValidateWithPathParams { @@ -117,12 +117,15 @@ export function validate( return e }) + if (analyticsContext) { + debugger if (analyticsContext.analyticsType === AnalyticsType.PROJECT_CONFIG_ERROR) { analyticsContext.analytics.trackProjectConfigError(paths) - } - if (analyticsContext.analyticsType === AnalyticsType.MODULE_CONFIG_ERROR) { + } else if (analyticsContext.analyticsType === AnalyticsType.MODULE_CONFIG_ERROR) { analyticsContext.analytics.trackModuleConfigError(analyticsContext.metadata.moduleType) + } else if (analyticsContext.analyticsType === AnalyticsType.VALIDATION_ERROR) { + analyticsContext.analytics.trackConfigValidationError(paths) } } diff --git a/garden-service/src/garden.ts b/garden-service/src/garden.ts index cafc3481ded..2216befca4b 100644 --- a/garden-service/src/garden.ts +++ b/garden-service/src/garden.ts @@ -206,7 +206,6 @@ export class Garden { opts: GardenOpts = {} ): Promise> { let { environmentName, config, gardenDirPath, plugins = [] } = opts - const analytics = await AnalyticsHandler.getInstance() if (!config) { config = await findProjectConfig(currentDirectory) @@ -632,6 +631,13 @@ export class Garden { name: config.name, path: config.path, projectRoot: this.projectRoot, + analyticsContext: { + analytics: analyticsInst, + analyticsType: AnalyticsType.MODULE_CONFIG_ERROR, + metadata: { + moduleType: config.type, + }, + }, }) if (config.repositoryUrl) {