Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
c3a9e10a
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c3a9e10a
编写于
7月 15, 2019
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
move extensionValidator to common
上级
1bd34868
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
19 addition
and
14 deletion
+19
-14
src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts
.../code/electron-browser/sharedProcess/sharedProcessMain.ts
+3
-0
src/vs/code/node/cliProcessMain.ts
src/vs/code/node/cliProcessMain.ts
+3
-0
src/vs/platform/extensionManagement/node/extensionGalleryService.ts
...tform/extensionManagement/node/extensionGalleryService.ts
+7
-7
src/vs/platform/extensionManagement/node/extensionManagementService.ts
...rm/extensionManagement/node/extensionManagementService.ts
+2
-2
src/vs/platform/extensions/common/extensionValidator.ts
src/vs/platform/extensions/common/extensionValidator.ts
+2
-3
src/vs/platform/extensions/test/node/extensionValidator.test.ts
.../platform/extensions/test/node/extensionValidator.test.ts
+1
-1
src/vs/workbench/services/extensions/node/extensionPoints.ts
src/vs/workbench/services/extensions/node/extensionPoints.ts
+1
-1
未找到文件。
src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts
浏览文件 @
c3a9e10a
...
...
@@ -55,6 +55,8 @@ import { FileService } from 'vs/platform/files/common/fileService';
import
{
IFileService
}
from
'
vs/platform/files/common/files
'
;
import
{
DiskFileSystemProvider
}
from
'
vs/platform/files/electron-browser/diskFileSystemProvider
'
;
import
{
Schemas
}
from
'
vs/base/common/network
'
;
import
{
IProductService
}
from
'
vs/platform/product/common/product
'
;
import
{
ProductService
}
from
'
vs/platform/product/node/productService
'
;
export
interface
ISharedProcessConfiguration
{
readonly
machineId
:
string
;
...
...
@@ -114,6 +116,7 @@ async function main(server: Server, initData: ISharedProcessInitData, configurat
services
.
set
(
IConfigurationService
,
configurationService
);
services
.
set
(
IRequestService
,
new
SyncDescriptor
(
RequestService
));
services
.
set
(
IDownloadService
,
new
SyncDescriptor
(
DownloadService
));
services
.
set
(
IProductService
,
new
SyncDescriptor
(
ProductService
));
const
mainProcessService
=
new
MainProcessService
(
server
,
mainRouter
);
services
.
set
(
IMainProcessService
,
mainProcessService
);
...
...
src/vs/code/node/cliProcessMain.ts
浏览文件 @
c3a9e10a
...
...
@@ -46,6 +46,8 @@ import { FileService } from 'vs/platform/files/common/fileService';
import
{
IFileService
}
from
'
vs/platform/files/common/files
'
;
import
{
DiskFileSystemProvider
}
from
'
vs/platform/files/node/diskFileSystemProvider
'
;
import
{
DisposableStore
}
from
'
vs/base/common/lifecycle
'
;
import
{
IProductService
}
from
'
vs/platform/product/common/product
'
;
import
{
ProductService
}
from
'
vs/platform/product/node/productService
'
;
const
notFound
=
(
id
:
string
)
=>
localize
(
'
notFound
'
,
"
Extension '{0}' not found.
"
,
id
);
const
notInstalled
=
(
id
:
string
)
=>
localize
(
'
notInstalled
'
,
"
Extension '{0}' is not installed.
"
,
id
);
...
...
@@ -301,6 +303,7 @@ export async function main(argv: ParsedArgs): Promise<void> {
services
.
set
(
ILogService
,
logService
);
services
.
set
(
IConfigurationService
,
configurationService
);
services
.
set
(
IStateService
,
new
SyncDescriptor
(
StateService
));
services
.
set
(
IProductService
,
new
SyncDescriptor
(
ProductService
));
// Files
const
fileService
=
new
FileService
(
logService
);
...
...
src/vs/platform/extensionManagement/node/extensionGalleryService.ts
浏览文件 @
c3a9e10a
...
...
@@ -11,7 +11,7 @@ import { assign, getOrDefault } from 'vs/base/common/objects';
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IPager
}
from
'
vs/base/common/paging
'
;
import
{
IRequestService
,
IRequestOptions
,
IRequestContext
,
asJson
,
asText
}
from
'
vs/platform/request/common/request
'
;
import
{
isEngineValid
}
from
'
vs/platform/extensions/
node
/extensionValidator
'
;
import
{
isEngineValid
}
from
'
vs/platform/extensions/
common
/extensionValidator
'
;
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
{
generateUuid
,
isUUID
}
from
'
vs/base/common/uuid
'
;
import
{
values
}
from
'
vs/base/common/map
'
;
...
...
@@ -338,7 +338,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
@
IEnvironmentService
private
readonly
environmentService
:
IEnvironmentService
,
@
ITelemetryService
private
readonly
telemetryService
:
ITelemetryService
,
@
IFileService
private
readonly
fileService
:
IFileService
,
@
IProductService
productService
:
IProductService
,
@
IProductService
pr
ivate
readonly
pr
oductService
:
IProductService
,
)
{
const
config
=
productService
.
extensionsGallery
;
this
.
extensionsGalleryUrl
=
config
&&
config
.
serviceUrl
;
...
...
@@ -356,7 +356,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
getCompatibleExtension
(
arg1
:
IExtensionIdentifier
|
IGalleryExtension
,
version
?:
string
):
Promise
<
IGalleryExtension
|
null
>
{
const
extension
:
IGalleryExtension
|
null
=
isIExtensionIdentifier
(
arg1
)
?
null
:
arg1
;
if
(
extension
&&
extension
.
properties
.
engine
&&
isEngineValid
(
extension
.
properties
.
engine
))
{
if
(
extension
&&
extension
.
properties
.
engine
&&
isEngineValid
(
extension
.
properties
.
engine
,
this
.
productService
.
version
))
{
return
Promise
.
resolve
(
extension
);
}
const
{
id
,
uuid
}
=
extension
?
extension
.
identifier
:
<
IExtensionIdentifier
>
arg1
;
...
...
@@ -382,7 +382,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
const
versionAsset
=
rawExtension
.
versions
.
filter
(
v
=>
v
.
version
===
version
)[
0
];
if
(
versionAsset
)
{
const
extension
=
toExtension
(
rawExtension
,
versionAsset
,
0
,
query
);
if
(
extension
.
properties
.
engine
&&
isEngineValid
(
extension
.
properties
.
engine
))
{
if
(
extension
.
properties
.
engine
&&
isEngineValid
(
extension
.
properties
.
engine
,
this
.
productService
.
version
))
{
return
extension
;
}
}
...
...
@@ -615,7 +615,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
return
this
.
queryGallery
(
query
,
CancellationToken
.
None
).
then
(({
galleryExtensions
})
=>
{
if
(
galleryExtensions
.
length
)
{
if
(
compatible
)
{
return
Promise
.
all
(
galleryExtensions
[
0
].
versions
.
map
(
v
=>
this
.
getEngine
(
v
).
then
(
engine
=>
isEngineValid
(
engine
)
?
v
:
null
)))
return
Promise
.
all
(
galleryExtensions
[
0
].
versions
.
map
(
v
=>
this
.
getEngine
(
v
).
then
(
engine
=>
isEngineValid
(
engine
,
this
.
productService
.
version
)
?
v
:
null
)))
.
then
(
versions
=>
versions
.
filter
(
v
=>
!!
v
)
.
map
(
v
=>
({
version
:
v
!
.
version
,
date
:
v
!
.
lastUpdated
})));
...
...
@@ -701,7 +701,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
if
(
!
engine
)
{
return
null
;
}
if
(
isEngineValid
(
engine
))
{
if
(
isEngineValid
(
engine
,
this
.
productService
.
version
))
{
return
Promise
.
resolve
(
version
);
}
}
...
...
@@ -733,7 +733,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
const
version
=
versions
[
0
];
return
this
.
getEngine
(
version
)
.
then
(
engine
=>
{
if
(
!
isEngineValid
(
engine
))
{
if
(
!
isEngineValid
(
engine
,
this
.
productService
.
version
))
{
return
this
.
getLastValidExtensionVersionRecursively
(
extension
,
versions
.
slice
(
1
));
}
...
...
src/vs/platform/extensionManagement/node/extensionManagementService.ts
浏览文件 @
c3a9e10a
...
...
@@ -35,7 +35,7 @@ import { ExtensionsManifestCache } from 'vs/platform/extensionManagement/node/ex
import
{
ExtensionsLifecycle
}
from
'
vs/platform/extensionManagement/node/extensionLifecycle
'
;
import
{
toErrorMessage
}
from
'
vs/base/common/errorMessage
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
isEngineValid
}
from
'
vs/platform/extensions/
node
/extensionValidator
'
;
import
{
isEngineValid
}
from
'
vs/platform/extensions/
common
/extensionValidator
'
;
import
{
tmpdir
}
from
'
os
'
;
import
{
generateUuid
}
from
'
vs/base/common/uuid
'
;
import
{
IDownloadService
}
from
'
vs/platform/download/common/download
'
;
...
...
@@ -197,7 +197,7 @@ export class ExtensionManagementService extends Disposable implements IExtension
.
then
(
manifest
=>
{
const
identifier
=
{
id
:
getGalleryExtensionId
(
manifest
.
publisher
,
manifest
.
name
)
};
let
operation
:
InstallOperation
=
InstallOperation
.
Install
;
if
(
manifest
.
engines
&&
manifest
.
engines
.
vscode
&&
!
isEngineValid
(
manifest
.
engines
.
vscode
))
{
if
(
manifest
.
engines
&&
manifest
.
engines
.
vscode
&&
!
isEngineValid
(
manifest
.
engines
.
vscode
,
pkg
.
version
))
{
return
Promise
.
reject
(
new
Error
(
nls
.
localize
(
'
incompatible
'
,
"
Unable to install extension '{0}' as it is not compatible with VS Code '{1}'.
"
,
identifier
.
id
,
pkg
.
version
)));
}
const
identifierWithVersion
=
new
ExtensionIdentifierWithVersion
(
identifier
,
manifest
.
version
);
...
...
src/vs/platform/extensions/
node
/extensionValidator.ts
→
src/vs/platform/extensions/
common
/extensionValidator.ts
浏览文件 @
c3a9e10a
...
...
@@ -4,7 +4,6 @@
*--------------------------------------------------------------------------------------------*/
import
*
as
nls
from
'
vs/nls
'
;
import
pkg
from
'
vs/platform/product/node/package
'
;
export
interface
IParsedVersion
{
hasCaret
:
boolean
;
...
...
@@ -222,9 +221,9 @@ export function isValidExtensionVersion(version: string, extensionDesc: IReduced
return
isVersionValid
(
version
,
extensionDesc
.
engines
.
vscode
,
notices
);
}
export
function
isEngineValid
(
engine
:
string
):
boolean
{
export
function
isEngineValid
(
engine
:
string
,
version
:
string
):
boolean
{
// TODO@joao: discuss with alex '*' doesn't seem to be a valid engine version
return
engine
===
'
*
'
||
isVersionValid
(
pkg
.
version
,
engine
);
return
engine
===
'
*
'
||
isVersionValid
(
version
,
engine
);
}
export
function
isVersionValid
(
currentVersion
:
string
,
requestedVersion
:
string
,
notices
:
string
[]
=
[]):
boolean
{
...
...
src/vs/platform/extensions/test/node/extensionValidator.test.ts
浏览文件 @
c3a9e10a
...
...
@@ -3,7 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
*
as
assert
from
'
assert
'
;
import
{
INormalizedVersion
,
IParsedVersion
,
IReducedExtensionDescription
,
isValidExtensionVersion
,
isValidVersion
,
isValidVersionStr
,
normalizeVersion
,
parseVersion
}
from
'
vs/platform/extensions/
node
/extensionValidator
'
;
import
{
INormalizedVersion
,
IParsedVersion
,
IReducedExtensionDescription
,
isValidExtensionVersion
,
isValidVersion
,
isValidVersionStr
,
normalizeVersion
,
parseVersion
}
from
'
vs/platform/extensions/
common
/extensionValidator
'
;
suite
(
'
Extension Version Validator
'
,
()
=>
{
...
...
src/vs/workbench/services/extensions/node/extensionPoints.ts
浏览文件 @
c3a9e10a
...
...
@@ -13,7 +13,7 @@ import * as types from 'vs/base/common/types';
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
*
as
pfs
from
'
vs/base/node/pfs
'
;
import
{
getGalleryExtensionId
,
groupByExtension
,
ExtensionIdentifierWithVersion
}
from
'
vs/platform/extensionManagement/common/extensionManagementUtil
'
;
import
{
isValidExtensionVersion
}
from
'
vs/platform/extensions/
node
/extensionValidator
'
;
import
{
isValidExtensionVersion
}
from
'
vs/platform/extensions/
common
/extensionValidator
'
;
import
{
ExtensionIdentifier
,
IExtensionDescription
}
from
'
vs/platform/extensions/common/extensions
'
;
import
{
Translations
,
ILog
}
from
'
vs/workbench/services/extensions/common/extensionPoints
'
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录