Skip to content

Commit 70b13f7

Browse files
author
MikhailArkhipov
committed
Add MacOS version check
1 parent 5d45558 commit 70b13f7

3 files changed

Lines changed: 40 additions & 7 deletions

File tree

src/client/activation/languageServer.ts

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,24 @@
33

44
import { inject, injectable } from 'inversify';
55
import * as path from 'path';
6-
import { CancellationToken, CompletionContext, OutputChannel, Position,
7-
TextDocument, Uri } from 'vscode';
8-
import { Disposable, LanguageClient, LanguageClientOptions,
9-
ProvideCompletionItemsSignature, ServerOptions } from 'vscode-languageclient';
6+
import {
7+
CancellationToken, CompletionContext, OutputChannel, Position,
8+
TextDocument, Uri
9+
} from 'vscode';
10+
import {
11+
Disposable, LanguageClient, LanguageClientOptions,
12+
ProvideCompletionItemsSignature, ServerOptions
13+
} from 'vscode-languageclient';
1014
import { IApplicationShell, ICommandManager, IWorkspaceService } from '../common/application/types';
1115
import { PythonSettings } from '../common/configSettings';
1216
import { isTestExecution, STANDARD_OUTPUT_CHANNEL } from '../common/constants';
1317
import { createDeferred, Deferred } from '../common/helpers';
1418
import { IFileSystem, IPlatformService } from '../common/platform/types';
1519
import { StopWatch } from '../common/stopWatch';
16-
import { BANNER_NAME_LS_SURVEY, IConfigurationService, IExtensionContext, ILogger,
17-
IOutputChannel, IPythonExtensionBanner, IPythonSettings } from '../common/types';
20+
import {
21+
BANNER_NAME_LS_SURVEY, IConfigurationService, IExtensionContext, ILogger,
22+
IOutputChannel, IPythonExtensionBanner, IPythonSettings
23+
} from '../common/types';
1824
import { IServiceContainer } from '../ioc/types';
1925
import {
2026
PYTHON_LANGUAGE_SERVER_DOWNLOADED,
@@ -91,6 +97,10 @@ export class LanguageServerExtensionActivator implements IExtensionActivator {
9197
}
9298

9399
public async activate(): Promise<boolean> {
100+
if (!this.checkSupportedPlatform()) {
101+
return false;
102+
}
103+
94104
this.sw.reset();
95105
const clientOptions = await this.getAnalysisOptions();
96106
if (!clientOptions) {
@@ -115,6 +125,15 @@ export class LanguageServerExtensionActivator implements IExtensionActivator {
115125
(this.configuration.getSettings() as PythonSettings).removeListener('change', this.onSettingsChanged.bind(this));
116126
}
117127

128+
private checkSupportedPlatform(): boolean {
129+
const platform = this.services.get<IPlatformService>(IPlatformService);
130+
if (platform.isMac && platform.versionMajor === 10 && platform.versionMinor < 12) {
131+
this.services.get<ILogger>(ILogger).logError('Unsupported MacOS');
132+
this.appShell.showErrorMessage('Microsoft Python Language Server does not support MacOS older than 10.12.');
133+
return false;
134+
}
135+
return true;
136+
}
118137
private async startLanguageServer(clientOptions: LanguageClientOptions): Promise<boolean> {
119138
// Determine if we are running MSIL/Universal via dotnet or self-contained app.
120139

src/client/common/platform/platformService.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
'use strict';
44

55
import { injectable } from 'inversify';
6-
import { arch } from 'os';
6+
import { arch, release } from 'os';
77
import { NON_WINDOWS_PATH_VARIABLE_NAME, WINDOWS_PATH_VARIABLE_NAME } from './constants';
88
import { IPlatformService } from './types';
99

@@ -34,4 +34,15 @@ export class PlatformService implements IPlatformService {
3434
public get virtualEnvBinName() {
3535
return this.isWindows ? 'scripts' : 'bin';
3636
}
37+
public get version(): string {
38+
return release();
39+
}
40+
public get versionMajor(): number {
41+
const parts = this.version.split('.');
42+
return parts.length > 0 ? parseInt(parts[0], 10) : 0;
43+
}
44+
public get versionMinor(): number {
45+
const parts = this.version.split('.');
46+
return parts.length > 1 ? parseInt(parts[1], 10) : 0;
47+
}
3748
}

src/client/common/platform/types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ export interface IPlatformService {
2727
is64bit: boolean;
2828
pathVariableName: 'Path' | 'PATH';
2929
virtualEnvBinName: 'bin' | 'scripts';
30+
version: string;
31+
versionMajor: number;
32+
versionMinor: number;
3033
}
3134

3235
export type TemporaryFile = { filePath: string } & Disposable;

0 commit comments

Comments
 (0)