summaryrefslogtreecommitdiff
path: root/extension/src/activation/activate.ts
diff options
context:
space:
mode:
authorNate Sesti <sestinj@gmail.com>2023-07-19 00:33:50 -0700
committerNate Sesti <sestinj@gmail.com>2023-07-19 00:33:50 -0700
commit1b92180d4b7720bf1cf36dd63142760d421dabf8 (patch)
tree26e25e005b06526267c2a140c1fbf1cbf822f066 /extension/src/activation/activate.ts
parent924a0c09259d25a4dfe62c0a626a9204df45daa9 (diff)
parenta7c57e1d1e4a0eff3e4b598f8bf0448ea6068353 (diff)
downloadsncontinue-1b92180d4b7720bf1cf36dd63142760d421dabf8.tar.gz
sncontinue-1b92180d4b7720bf1cf36dd63142760d421dabf8.tar.bz2
sncontinue-1b92180d4b7720bf1cf36dd63142760d421dabf8.zip
Merge branch 'main' into config-py
Diffstat (limited to 'extension/src/activation/activate.ts')
-rw-r--r--extension/src/activation/activate.ts93
1 files changed, 60 insertions, 33 deletions
diff --git a/extension/src/activation/activate.ts b/extension/src/activation/activate.ts
index 18650561..a7f6c55b 100644
--- a/extension/src/activation/activate.ts
+++ b/extension/src/activation/activate.ts
@@ -2,52 +2,84 @@ import * as vscode from "vscode";
import { registerAllCommands } from "../commands";
import { registerAllCodeLensProviders } from "../lang-server/codeLens";
import { sendTelemetryEvent, TelemetryEvent } from "../telemetry";
-// import { openCapturedTerminal } from "../terminal/terminalEmulator";
import IdeProtocolClient from "../continueIdeClient";
import { getContinueServerUrl } from "../bridge";
-import { CapturedTerminal } from "../terminal/terminalEmulator";
-import { setupDebugPanel, ContinueGUIWebviewViewProvider } from "../debugPanel";
-import { startContinuePythonServer } from "./environmentSetup";
+import { ContinueGUIWebviewViewProvider } from "../debugPanel";
+import {
+ getExtensionVersion,
+ startContinuePythonServer,
+} from "./environmentSetup";
+import fetch from "node-fetch";
+import registerQuickFixProvider from "../lang-server/codeActions";
// import { CapturedTerminal } from "../terminal/terminalEmulator";
+const PACKAGE_JSON_RAW_GITHUB_URL =
+ "https://raw.githubusercontent.com/continuedev/continue/HEAD/extension/package.json";
+
export let extensionContext: vscode.ExtensionContext | undefined = undefined;
export let ideProtocolClient: IdeProtocolClient;
-export async function activateExtension(
- context: vscode.ExtensionContext,
- showTutorial: boolean
-) {
+export async function activateExtension(context: vscode.ExtensionContext) {
extensionContext = context;
- await new Promise((resolve, reject) => {
- vscode.window.withProgress(
- {
- location: vscode.ProgressLocation.Notification,
- title:
- "Starting Continue Server... (it may take a minute to download Python packages)",
- cancellable: false,
- },
- async (progress, token) => {
- await startContinuePythonServer();
- resolve(null);
+ // Before anything else, check whether this is an out-of-date version of the extension
+ // Do so by grabbing the package.json off of the GitHub respository for now.
+ fetch(PACKAGE_JSON_RAW_GITHUB_URL)
+ .then(async (res) => res.json())
+ .then((packageJson) => {
+ if (packageJson.version !== getExtensionVersion()) {
+ vscode.window.showInformationMessage(
+ `You are using an out-of-date version of the Continue extension. Please update to the latest version.`
+ );
}
- );
- });
+ })
+ .catch((e) => console.log("Error checking for extension updates: ", e));
- sendTelemetryEvent(TelemetryEvent.ExtensionActivated);
- registerAllCodeLensProviders(context);
- registerAllCommands(context);
+ // Start the server and display loader if taking > 2 seconds
+ await new Promise((resolve) => {
+ let serverStarted = false;
- const serverUrl = getContinueServerUrl();
+ // Start the server and set serverStarted to true when done
+ startContinuePythonServer().then(() => {
+ serverStarted = true;
+ resolve(null);
+ });
+ // Wait for 2 seconds
+ setTimeout(() => {
+ // If the server hasn't started after 2 seconds, show the notification
+ if (!serverStarted) {
+ vscode.window.withProgress(
+ {
+ location: vscode.ProgressLocation.Notification,
+ title:
+ "Starting Continue Server... (it may take a minute to download Python packages)",
+ cancellable: false,
+ },
+ async (progress, token) => {
+ // Wait for the server to start
+ while (!serverStarted) {
+ await new Promise((innerResolve) =>
+ setTimeout(innerResolve, 1000)
+ );
+ }
+ return Promise.resolve();
+ }
+ );
+ }
+ }, 2000);
+ });
+
+ // Initialize IDE Protocol Client
+ const serverUrl = getContinueServerUrl();
ideProtocolClient = new IdeProtocolClient(
`${serverUrl.replace("http", "ws")}/ide/ws`,
context
);
- // Setup the left panel
- (async () => {
+ // Register Continue GUI as sidebar webview, and beging a new session
+ {
const sessionIdPromise = await ideProtocolClient.getSessionId();
const provider = new ContinueGUIWebviewViewProvider(sessionIdPromise);
@@ -60,10 +92,5 @@ export async function activateExtension(
}
)
);
- })();
- // All opened terminals should be replaced by our own terminal
- // vscode.window.onDidOpenTerminal((terminal) => {});
-
- // If any terminals are open to start, replace them
- // vscode.window.terminals.forEach((terminal) => {}
+ }
}