summaryrefslogtreecommitdiff
path: root/extension
diff options
context:
space:
mode:
authorNate Sesti <33237525+sestinj@users.noreply.github.com>2023-09-01 14:03:53 -0700
committerGitHub <noreply@github.com>2023-09-01 14:03:53 -0700
commit07f1a9a4dbbca57c14957eb21ef356adbf803bff (patch)
treefafa6ddf7d9d08d314093e798b3cc370332a086c /extension
parent456a8239f18ac5159fffc2484050f94ac3f36317 (diff)
downloadsncontinue-07f1a9a4dbbca57c14957eb21ef356adbf803bff.tar.gz
sncontinue-07f1a9a4dbbca57c14957eb21ef356adbf803bff.tar.bz2
sncontinue-07f1a9a4dbbca57c14957eb21ef356adbf803bff.zip
Windows meilisearch (#441)
* feat: :sparkles: first attempt at windows download meilisearch * Fixed starting meilisearch on windows * Meilisearch to server/meilisearch * feat: :sparkles: select custom model to use with edit step * feat: :art: recursive getDirectoryContents
Diffstat (limited to 'extension')
-rw-r--r--extension/src/activation/environmentSetup.ts35
-rw-r--r--extension/src/continueIdeClient.ts89
2 files changed, 68 insertions, 56 deletions
diff --git a/extension/src/activation/environmentSetup.ts b/extension/src/activation/environmentSetup.ts
index 7ca87768..3aa536d0 100644
--- a/extension/src/activation/environmentSetup.ts
+++ b/extension/src/activation/environmentSetup.ts
@@ -74,6 +74,14 @@ function serverVersionPath(): string {
return path.join(serverPath(), "server_version.txt");
}
+function serverBinaryPath(): string {
+ return path.join(
+ serverPath(),
+ "exe",
+ `run${os.platform() === "win32" ? ".exe" : ""}`
+ );
+}
+
export function getExtensionVersion() {
const extension = vscode.extensions.getExtension("continue.continue");
return extension?.packageJSON.version || "";
@@ -105,14 +113,7 @@ async function checkOrKillRunningServer(serverUrl: string): Promise<boolean> {
// Try again, on Windows. This time with taskkill
if (os.platform() === "win32") {
try {
- const exePath = path.join(
- getExtensionUri().fsPath,
- "server",
- "exe",
- "run.exe"
- );
-
- await runCommand(`taskkill /F /IM ${exePath}`);
+ await runCommand(`taskkill /F /IM run.exe`);
} catch (e: any) {
console.log(
"Failed to kill old server second time on windows with taskkill:",
@@ -126,14 +127,9 @@ async function checkOrKillRunningServer(serverUrl: string): Promise<boolean> {
fs.unlinkSync(serverVersionPath());
}
// Also delete the server binary
- const serverBinaryPath = path.join(
- getExtensionUri().fsPath,
- "server",
- "exe",
- `run${os.platform() === "win32" ? ".exe" : ""}`
- );
- if (fs.existsSync(serverBinaryPath)) {
- fs.unlinkSync(serverBinaryPath);
+ const serverBinary = serverBinaryPath();
+ if (fs.existsSync(serverBinary)) {
+ fs.unlinkSync(serverBinary);
}
}
@@ -213,12 +209,7 @@ export async function startContinuePythonServer(redownload: boolean = true) {
: "mac/run"
: "linux/run";
- const destination = path.join(
- getExtensionUri().fsPath,
- "server",
- "exe",
- `run${os.platform() === "win32" ? ".exe" : ""}`
- );
+ const destination = serverBinaryPath();
// First, check if the server is already downloaded
let shouldDownload = true;
diff --git a/extension/src/continueIdeClient.ts b/extension/src/continueIdeClient.ts
index 94997d76..353584e9 100644
--- a/extension/src/continueIdeClient.ts
+++ b/extension/src/continueIdeClient.ts
@@ -272,40 +272,10 @@ class IdeProtocolClient {
break;
case "listDirectoryContents":
messenger.send("listDirectoryContents", {
- contents: (
- await vscode.workspace.fs.readDirectory(
- uriFromFilePath(data.directory)
- )
- )
- .map(([name, type]) => name)
- .filter((name) => {
- const DEFAULT_IGNORE_DIRS = [
- ".git",
- ".vscode",
- ".idea",
- ".vs",
- ".venv",
- "env",
- ".env",
- "node_modules",
- "dist",
- "build",
- "target",
- "out",
- "bin",
- ".pytest_cache",
- ".vscode-test",
- ".continue",
- "__pycache__",
- ];
- if (
- !DEFAULT_IGNORE_DIRS.some((dir) =>
- name.split(path.sep).includes(dir)
- )
- ) {
- return name;
- }
- }),
+ contents: await this.getDirectoryContents(
+ data.directory,
+ data.recursive || false
+ ),
});
break;
case "editFile":
@@ -562,6 +532,57 @@ class IdeProtocolClient {
});
}
+ async getDirectoryContents(
+ directory: string,
+ recursive: boolean
+ ): Promise<string[]> {
+ let nameAndType = (
+ await vscode.workspace.fs.readDirectory(uriFromFilePath(directory))
+ ).filter(([name, type]) => {
+ const DEFAULT_IGNORE_DIRS = [
+ ".git",
+ ".vscode",
+ ".idea",
+ ".vs",
+ ".venv",
+ "env",
+ ".env",
+ "node_modules",
+ "dist",
+ "build",
+ "target",
+ "out",
+ "bin",
+ ".pytest_cache",
+ ".vscode-test",
+ ".continue",
+ "__pycache__",
+ ];
+ if (
+ !DEFAULT_IGNORE_DIRS.some((dir) => name.split(path.sep).includes(dir))
+ ) {
+ return name;
+ }
+ });
+
+ let absolutePaths = nameAndType
+ .filter(([name, type]) => type === vscode.FileType.File)
+ .map(([name, type]) => path.join(directory, name));
+ if (recursive) {
+ for (const [name, type] of nameAndType) {
+ if (type === vscode.FileType.Directory) {
+ const subdirectory = path.join(directory, name);
+ const subdirectoryContents = await this.getDirectoryContents(
+ subdirectory,
+ recursive
+ );
+ absolutePaths = absolutePaths.concat(subdirectoryContents);
+ }
+ }
+ }
+ return absolutePaths;
+ }
+
async readFile(filepath: string): Promise<string> {
let contents: string | undefined;
if (typeof contents === "undefined") {