1+ import ms from "ms" ;
12import { StatusBarAlignment , window } from "vscode" ;
23import type { ExtensionContext } from "vscode" ;
34
@@ -13,6 +14,7 @@ import { createLocalStackStatusTracker } from "./utils/localstack-status.ts";
1314import { getOrCreateExtensionSessionId } from "./utils/manage.ts" ;
1415import { createSetupStatusTracker } from "./utils/setup-status.ts" ;
1516import { createTelemetry } from "./utils/telemetry.ts" ;
17+ import { createTimeTracker } from "./utils/time-tracker.ts" ;
1618
1719const plugins = new PluginManager ( [
1820 setup ,
@@ -29,36 +31,83 @@ export async function activate(context: ExtensionContext) {
2931 } ) ;
3032 context . subscriptions . push ( outputChannel ) ;
3133
32- const statusBarItem = window . createStatusBarItem ( StatusBarAlignment . Left , - 1 ) ;
33- context . subscriptions . push ( statusBarItem ) ;
34- statusBarItem . text = "$(loading~spin) LocalStack" ;
35- statusBarItem . show ( ) ;
34+ const timeTracker = createTimeTracker ( { outputChannel } ) ;
3635
37- const containerStatusTracker = await createContainerStatusTracker (
38- "localstack-main" ,
39- outputChannel ,
40- ) ;
41- context . subscriptions . push ( containerStatusTracker ) ;
42-
43- const localStackStatusTracker = await createLocalStackStatusTracker (
44- containerStatusTracker ,
45- outputChannel ,
46- ) ;
47- context . subscriptions . push ( localStackStatusTracker ) ;
48-
49- const setupStatusTracker = await createSetupStatusTracker ( outputChannel ) ;
50-
51- const sessionId = await getOrCreateExtensionSessionId ( context ) ;
52- const telemetry = createTelemetry ( outputChannel , sessionId ) ;
53-
54- await plugins . activate ( {
55- context,
56- outputChannel,
57- statusBarItem,
36+ const {
5837 containerStatusTracker,
5938 localStackStatusTracker,
6039 setupStatusTracker,
40+ statusBarItem,
6141 telemetry,
42+ } = await timeTracker . run ( "extension.dependencies" , async ( ) => {
43+ const statusBarItem = window . createStatusBarItem (
44+ StatusBarAlignment . Left ,
45+ - 1 ,
46+ ) ;
47+ context . subscriptions . push ( statusBarItem ) ;
48+ statusBarItem . text = "$(loading~spin) LocalStack" ;
49+ statusBarItem . show ( ) ;
50+
51+ const containerStatusTracker = await createContainerStatusTracker (
52+ "localstack-main" ,
53+ outputChannel ,
54+ timeTracker ,
55+ ) ;
56+ context . subscriptions . push ( containerStatusTracker ) ;
57+
58+ const localStackStatusTracker = await createLocalStackStatusTracker (
59+ containerStatusTracker ,
60+ outputChannel ,
61+ timeTracker ,
62+ ) ;
63+ context . subscriptions . push ( localStackStatusTracker ) ;
64+
65+ outputChannel . trace ( `[setup-status]: Starting...` ) ;
66+ const startStatusTracker = Date . now ( ) ;
67+ const setupStatusTracker = await createSetupStatusTracker (
68+ outputChannel ,
69+ timeTracker ,
70+ ) ;
71+ context . subscriptions . push ( setupStatusTracker ) ;
72+ const endStatusTracker = Date . now ( ) ;
73+ outputChannel . trace (
74+ `[setup-status]: Completed in ${ ms (
75+ endStatusTracker - startStatusTracker ,
76+ { long : true } ,
77+ ) } `,
78+ ) ;
79+
80+ const startTelemetry = Date . now ( ) ;
81+ outputChannel . trace ( `[telemetry]: Starting...` ) ;
82+ const sessionId = await getOrCreateExtensionSessionId ( context ) ;
83+ const telemetry = createTelemetry ( outputChannel , sessionId ) ;
84+ const endTelemetry = Date . now ( ) ;
85+ outputChannel . trace (
86+ `[telemetry]: Completed in ${ ms ( endTelemetry - startTelemetry , {
87+ long : true ,
88+ } ) } `,
89+ ) ;
90+
91+ return {
92+ statusBarItem,
93+ containerStatusTracker,
94+ localStackStatusTracker,
95+ setupStatusTracker,
96+ telemetry,
97+ } ;
98+ } ) ;
99+
100+ await timeTracker . run ( "extension.activatePlugins" , async ( ) => {
101+ await plugins . activate ( {
102+ context,
103+ outputChannel,
104+ statusBarItem,
105+ containerStatusTracker,
106+ localStackStatusTracker,
107+ setupStatusTracker,
108+ telemetry,
109+ timeTracker,
110+ } ) ;
62111 } ) ;
63112}
64113
0 commit comments