Extract NodeLogDirectoryProvider to electron specific file
This commit is contained in:
parent
00bd63c32c
commit
3b9db3df27
|
@ -5,6 +5,7 @@
|
|||
|
||||
import * as rimraf from 'rimraf';
|
||||
import * as vscode from 'vscode';
|
||||
import { NodeLogDirectoryProvider } from './utils/logDirectoryProvider.electron';
|
||||
import { Api, getExtensionApi } from './api';
|
||||
import { registerCommands } from './commands/index';
|
||||
import { LanguageConfigurationManager } from './features/languageConfiguration';
|
||||
|
@ -12,7 +13,6 @@ import * as task from './features/task';
|
|||
import { createLazyClientHost, lazilyActivateClient } from './lazyClientHost';
|
||||
import { CommandManager } from './utils/commandManager';
|
||||
import * as electron from './utils/electron';
|
||||
import LogDirectoryProvider from './utils/logDirectoryProvider';
|
||||
import { PluginManager } from './utils/plugins';
|
||||
|
||||
export function activate(
|
||||
|
@ -27,7 +27,7 @@ export function activate(
|
|||
const onCompletionAccepted = new vscode.EventEmitter<vscode.CompletionItem>();
|
||||
context.subscriptions.push(onCompletionAccepted);
|
||||
|
||||
const logDirectoryProvider = new LogDirectoryProvider(context);
|
||||
const logDirectoryProvider = new NodeLogDirectoryProvider(context);
|
||||
|
||||
const lazyClientHost = createLazyClientHost(context, pluginManager, commandManager, logDirectoryProvider, item => {
|
||||
onCompletionAccepted.fire(item);
|
||||
|
|
|
@ -11,7 +11,7 @@ import * as fileSchemes from './utils/fileSchemes';
|
|||
import { standardLanguageDescriptions } from './utils/languageDescription';
|
||||
import * as ProjectStatus from './utils/largeProjectStatus';
|
||||
import { lazy, Lazy } from './utils/lazy';
|
||||
import LogDirectoryProvider from './utils/logDirectoryProvider';
|
||||
import { ILogDirectoryProvider } from './utils/logDirectoryProvider';
|
||||
import ManagedFileContextManager from './utils/managedFileContext';
|
||||
import { PluginManager } from './utils/plugins';
|
||||
|
||||
|
@ -19,7 +19,7 @@ export function createLazyClientHost(
|
|||
context: vscode.ExtensionContext,
|
||||
pluginManager: PluginManager,
|
||||
commandManager: CommandManager,
|
||||
logDirectoryProvider: LogDirectoryProvider,
|
||||
logDirectoryProvider: ILogDirectoryProvider,
|
||||
onCompletionAccepted: (item: vscode.CompletionItem) => void,
|
||||
): Lazy<TypeScriptServiceClientHost> {
|
||||
return lazy(() => {
|
||||
|
|
|
@ -9,7 +9,7 @@ import { ClientCapabilities, ClientCapability } from '../typescriptService';
|
|||
import API from '../utils/api';
|
||||
import { SeparateSyntaxServerConfiguration, TsServerLogLevel, TypeScriptServiceConfiguration } from '../utils/configuration';
|
||||
import * as electron from '../utils/electron';
|
||||
import LogDirectoryProvider from '../utils/logDirectoryProvider';
|
||||
import { ILogDirectoryProvider } from '../utils/logDirectoryProvider';
|
||||
import Logger from '../utils/logger';
|
||||
import { TypeScriptPluginPathsProvider } from '../utils/pluginPathsProvider';
|
||||
import { PluginManager } from '../utils/plugins';
|
||||
|
@ -43,7 +43,7 @@ const enum CompositeServerType {
|
|||
export class TypeScriptServerSpawner {
|
||||
public constructor(
|
||||
private readonly _versionProvider: TypeScriptVersionProvider,
|
||||
private readonly _logDirectoryProvider: LogDirectoryProvider,
|
||||
private readonly _logDirectoryProvider: ILogDirectoryProvider,
|
||||
private readonly _pluginPathsProvider: TypeScriptPluginPathsProvider,
|
||||
private readonly _logger: Logger,
|
||||
private readonly _telemetryReporter: TelemetryReporter,
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
* ------------------------------------------------------------------------------------------ */
|
||||
|
||||
import * as vscode from 'vscode';
|
||||
import { ILogDirectoryProvider } from './utils/logDirectoryProvider';
|
||||
import { DiagnosticKind } from './features/diagnostics';
|
||||
import FileConfigurationManager from './features/fileConfigurationManager';
|
||||
import LanguageProvider from './languageProvider';
|
||||
|
@ -20,7 +21,6 @@ import { CommandManager } from './utils/commandManager';
|
|||
import { Disposable } from './utils/dispose';
|
||||
import * as errorCodes from './utils/errorCodes';
|
||||
import { DiagnosticLanguage, LanguageDescription } from './utils/languageDescription';
|
||||
import LogDirectoryProvider from './utils/logDirectoryProvider';
|
||||
import { PluginManager } from './utils/plugins';
|
||||
import * as typeConverters from './utils/typeConverters';
|
||||
import TypingsStatus, { AtaProgressReporter } from './utils/typingsStatus';
|
||||
|
@ -60,7 +60,7 @@ export default class TypeScriptServiceClientHost extends Disposable {
|
|||
workspaceState: vscode.Memento,
|
||||
pluginManager: PluginManager,
|
||||
private readonly commandManager: CommandManager,
|
||||
logDirectoryProvider: LogDirectoryProvider,
|
||||
logDirectoryProvider: ILogDirectoryProvider,
|
||||
onCompletionAccepted: (item: vscode.CompletionItem) => void,
|
||||
) {
|
||||
super();
|
||||
|
|
|
@ -20,7 +20,7 @@ import API from './utils/api';
|
|||
import { TsServerLogLevel, TypeScriptServiceConfiguration } from './utils/configuration';
|
||||
import { Disposable } from './utils/dispose';
|
||||
import * as fileSchemes from './utils/fileSchemes';
|
||||
import LogDirectoryProvider from './utils/logDirectoryProvider';
|
||||
import { ILogDirectoryProvider } from './utils/logDirectoryProvider';
|
||||
import Logger from './utils/logger';
|
||||
import { TypeScriptPluginPathsProvider } from './utils/pluginPathsProvider';
|
||||
import { PluginManager } from './utils/plugins';
|
||||
|
@ -124,7 +124,7 @@ export default class TypeScriptServiceClient extends Disposable implements IType
|
|||
constructor(
|
||||
private readonly workspaceState: vscode.Memento,
|
||||
public readonly pluginManager: PluginManager,
|
||||
private readonly logDirectoryProvider: LogDirectoryProvider,
|
||||
private readonly logDirectoryProvider: ILogDirectoryProvider,
|
||||
allModeIds: readonly string[]
|
||||
) {
|
||||
super();
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import * as vscode from 'vscode';
|
||||
import { ILogDirectoryProvider } from './logDirectoryProvider';
|
||||
import { memoize } from './memoize';
|
||||
|
||||
export class NodeLogDirectoryProvider implements ILogDirectoryProvider {
|
||||
public constructor(
|
||||
private readonly context: vscode.ExtensionContext
|
||||
) { }
|
||||
|
||||
public getNewLogDirectory(): string | undefined {
|
||||
const root = this.logDirectory();
|
||||
if (root) {
|
||||
try {
|
||||
return fs.mkdtempSync(path.join(root, `tsserver-log-`));
|
||||
} catch (e) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
@memoize
|
||||
private logDirectory(): string | undefined {
|
||||
try {
|
||||
const path = this.context.logPath;
|
||||
if (!fs.existsSync(path)) {
|
||||
fs.mkdirSync(path);
|
||||
}
|
||||
return this.context.logPath;
|
||||
} catch {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -3,38 +3,12 @@
|
|||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import * as vscode from 'vscode';
|
||||
import { memoize } from './memoize';
|
||||
export interface ILogDirectoryProvider {
|
||||
getNewLogDirectory(): string | undefined;
|
||||
}
|
||||
|
||||
export default class LogDirectoryProvider {
|
||||
public constructor(
|
||||
private readonly context: vscode.ExtensionContext
|
||||
) { }
|
||||
|
||||
public getNewLogDirectory(): string | undefined {
|
||||
const root = this.logDirectory();
|
||||
if (root) {
|
||||
try {
|
||||
return fs.mkdtempSync(path.join(root, `tsserver-log-`));
|
||||
} catch (e) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
export const noopLogDirectoryProvider = new class implements ILogDirectoryProvider {
|
||||
public getNewLogDirectory(): undefined {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
@memoize
|
||||
private logDirectory(): string | undefined {
|
||||
try {
|
||||
const path = this.context.logPath;
|
||||
if (!fs.existsSync(path)) {
|
||||
fs.mkdirSync(path);
|
||||
}
|
||||
return this.context.logPath;
|
||||
} catch {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue