From bd2160f014aa0bd6761c90697e00650bf008993a Mon Sep 17 00:00:00 2001 From: Bruno Ortiz Date: Wed, 26 Apr 2023 21:54:31 -0300 Subject: [PATCH] final rabasing fixes --- editors/code/src/ctx.ts | 25 +++----- editors/code/src/dependencies_provider.ts | 33 +++++------ editors/code/src/toolchain.ts | 69 +---------------------- 3 files changed, 23 insertions(+), 104 deletions(-) diff --git a/editors/code/src/ctx.ts b/editors/code/src/ctx.ts index 4e592823b0..60ea769579 100644 --- a/editors/code/src/ctx.ts +++ b/editors/code/src/ctx.ts @@ -22,13 +22,6 @@ import { DependencyId, } from "./dependencies_provider"; import { execRevealDependency } from "./commands"; -import { - Dependency, - DependencyFile, - RustDependenciesProvider, - DependencyId, -} from "./dependencies_provider"; -import { execRevealDependency } from "./commands"; import { PersistentState } from "./persistent_state"; import { bootstrap } from "./bootstrap"; import { ExecOptions } from "child_process"; @@ -40,12 +33,12 @@ import { ExecOptions } from "child_process"; export type Workspace = | { kind: "Empty" } | { - kind: "Workspace Folder"; - } + kind: "Workspace Folder"; +} | { - kind: "Detached Files"; - files: vscode.TextDocument[]; - }; + kind: "Detached Files"; + files: vscode.TextDocument[]; +}; export function fetchWorkspace(): Workspace { const folders = (vscode.workspace.workspaceFolders || []).filter( @@ -59,9 +52,9 @@ export function fetchWorkspace(): Workspace { ? rustDocuments.length === 0 ? { kind: "Empty" } : { - kind: "Detached Files", - files: rustDocuments, - } + kind: "Detached Files", + files: rustDocuments, + } : { kind: "Workspace Folder" }; } @@ -483,4 +476,4 @@ export interface Disposable { dispose(): void; } -export type Cmd = (...args: any[]) => unknown; +export type Cmd = (...args: any[]) => unknown; \ No newline at end of file diff --git a/editors/code/src/dependencies_provider.ts b/editors/code/src/dependencies_provider.ts index b1ea365886..0faf7665cf 100644 --- a/editors/code/src/dependencies_provider.ts +++ b/editors/code/src/dependencies_provider.ts @@ -1,17 +1,12 @@ import * as vscode from "vscode"; import * as fspath from "path"; import * as fs from "fs"; -import { CtxInit } from "./ctx"; +import {CtxInit} from "./ctx"; import * as ra from "./lsp_ext"; -import { FetchDependencyListResult } from "./lsp_ext"; -import { Ctx } from "./ctx"; -import { setFlagsFromString } from "v8"; -import * as ra from "./lsp_ext"; - +import {FetchDependencyListResult} from "./lsp_ext"; export class RustDependenciesProvider - implements vscode.TreeDataProvider -{ + implements vscode.TreeDataProvider { dependenciesMap: { [id: string]: Dependency | DependencyFile }; ctx: CtxInit; @@ -61,7 +56,6 @@ export class RustDependenciesProvider void vscode.window.showInformationMessage("No dependency in empty workspace"); return Promise.resolve([]); } - if (element) { const files = fs.readdirSync(element.dependencyPath).map((fileName) => { const filePath = fspath.join(element.dependencyPath, fileName); @@ -80,20 +74,17 @@ export class RustDependenciesProvider } private async getRootDependencies(): Promise { - const crates = await this.ctx.client.sendRequest(ra.fetchDependencyGraph, {}); - const dependenciesResult: FetchDependencyListResult = await this.ctx.client.sendRequest( ra.fetchDependencyList, {} ); const crates = dependenciesResult.crates; - const deps = crates.map((crate) => { - const dep = this.toDep(crate.name || "unknown", crate.version || "", crate.path); + + return crates.map((crate) => { + const dep = this.toDep(crate.name || "unknown", crate.version || "", crate.path); this.dependenciesMap[dep.dependencyPath.toLowerCase()] = dep; - this.dependenciesMap[stdlib.dependencyPath.toLowerCase()] = stdlib; - return dep; + return dep; }); - return deps; } private toDep(moduleName: string, version: string, path: string): Dependency { @@ -131,11 +122,13 @@ export class DependencyFile extends vscode.TreeItem { this.id = this.dependencyPath.toLowerCase(); const isDir = fs.lstatSync(this.dependencyPath).isDirectory(); if (!isDir) { - this.command = { command: "vscode.open", + this.command = { + command: "vscode.open", title: "Open File", arguments: [vscode.Uri.file(this.dependencyPath)], - }; - }} + }; + } + } } -export type DependencyId = { id: string }; +export type DependencyId = { id: string }; \ No newline at end of file diff --git a/editors/code/src/toolchain.ts b/editors/code/src/toolchain.ts index 9c5c88c49e..c876048ba6 100644 --- a/editors/code/src/toolchain.ts +++ b/editors/code/src/toolchain.ts @@ -96,40 +96,6 @@ export class Cargo { return artifacts[0].fileName; } - async crates(): Promise { - const pathToCargo = await cargoPath(); - return await new Promise((resolve, reject) => { - const crates: Crate[] = []; - - const cargo = cp.spawn(pathToCargo, ["tree", "--prefix", "none"], { - stdio: ["ignore", "pipe", "pipe"], - cwd: this.rootFolder, - }); - const rl = readline.createInterface({ input: cargo.stdout }); - rl.on("line", (line) => { - const match = line.match(TREE_LINE_PATTERN); - if (match) { - const name = match[1]; - const version = match[2]; - const extraInfo = match[3]; - // ignore duplicates '(*)' and path dependencies - if (this.shouldIgnore(extraInfo)) { - return; - } - crates.push({ name, version }); - } - }); - cargo.on("exit", (exitCode, _) => { - if (exitCode === 0) resolve(crates); - else reject(new Error(`exit code: ${exitCode}.`)); - }); - }); - } - - private shouldIgnore(extraInfo: string): boolean { - return extraInfo !== undefined && (extraInfo === "*" || path.isAbsolute(extraInfo)); - } - private async runCargo( cargoArgs: string[], onStdoutJson: (obj: any) => void, @@ -161,29 +127,6 @@ export class Cargo { } } -export async function activeToolchain(): Promise { - const pathToRustup = await rustupPath(); - return await new Promise((resolve, reject) => { - const execution = cp.spawn(pathToRustup, ["show", "active-toolchain"], { - stdio: ["ignore", "pipe", "pipe"], - cwd: os.homedir(), - }); - const rl = readline.createInterface({ input: execution.stdout }); - - let currToolchain: string | undefined = undefined; - rl.on("line", (line) => { - const match = line.match(TOOLCHAIN_PATTERN); - if (match) { - currToolchain = match[1]; - } - }); - execution.on("exit", (exitCode, _) => { - if (exitCode === 0 && currToolchain) resolve(currToolchain); - else reject(new Error(`exit code: ${exitCode}.`)); - }); - }); -} - /** Mirrors `project_model::sysroot::discover_sysroot_dir()` implementation*/ export async function getSysroot(dir: string): Promise { const rustcPath = await getPathForExecutable("rustc"); @@ -202,16 +145,6 @@ export async function getRustcId(dir: string): Promise { return rx.exec(data)![1]; } -export async function getRustcVersion(dir: string): Promise { - const rustcPath = await getPathForExecutable("rustc"); - - // do not memoize the result because the toolchain may change between runs - const data = await execute(`${rustcPath} -V`, { cwd: dir }); - const rx = /(\d\.\d+\.\d+)/; - - return rx.exec(data)![1]; -} - /** Mirrors `toolchain::cargo()` implementation */ export function cargoPath(): Promise { return getPathForExecutable("cargo"); @@ -278,4 +211,4 @@ async function isFileAtUri(uri: vscode.Uri): Promise { } catch { return false; } -} +} \ No newline at end of file