Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
240d0ae3
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
240d0ae3
编写于
5月 10, 2018
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix #49583
上级
33a00fd4
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
15 deletion
+26
-15
src/vs/platform/extensionManagement/node/extensionManagementService.ts
...rm/extensionManagement/node/extensionManagementService.ts
+26
-15
未找到文件。
src/vs/platform/extensionManagement/node/extensionManagementService.ts
浏览文件 @
240d0ae3
...
...
@@ -102,6 +102,11 @@ interface InstallableExtension {
metadata
?:
IGalleryMetadata
;
}
enum
Operation
{
Install
=
1
,
Update
}
export
class
ExtensionManagementService
extends
Disposable
implements
IExtensionManagementService
{
_serviceBrand
:
any
;
...
...
@@ -227,19 +232,21 @@ export class ExtensionManagementService extends Disposable implements IExtension
installFromGallery
(
extension
:
IGalleryExtension
):
TPromise
<
ILocalExtension
>
{
this
.
onInstallExtensions
([
extension
]);
return
this
.
collectExtensionsToInstall
(
extension
)
.
then
(
extensionsToInstall
=>
{
if
(
extensionsToInstall
.
length
>
1
)
{
this
.
onInstallExtensions
(
extensionsToInstall
.
slice
(
1
));
}
return
this
.
downloadAndInstallExtensions
(
extensionsToInstall
)
.
then
(
locals
=>
this
.
onDidInstallExtensions
(
extensionsToInstall
,
locals
,
[])
.
then
(()
=>
locals
.
filter
(
l
=>
areSameExtensions
({
id
:
getGalleryExtensionIdFromLocal
(
l
),
uuid
:
l
.
identifier
.
uuid
},
extension
.
identifier
)[
0
])),
errors
=>
this
.
onDidInstallExtensions
(
extensionsToInstall
,
[],
errors
));
},
error
=>
this
.
onDidInstallExtensions
([
extension
],
[],
[
error
]));
return
this
.
getInstalled
(
LocalExtensionType
.
User
)
.
then
(
installed
=>
this
.
collectExtensionsToInstall
(
extension
)
.
then
(
extensionsToInstall
=>
{
if
(
extensionsToInstall
.
length
>
1
)
{
this
.
onInstallExtensions
(
extensionsToInstall
.
slice
(
1
));
}
const
operataions
:
Operation
[]
=
extensionsToInstall
.
map
(
e
=>
this
.
getOperation
(
e
,
installed
));
return
this
.
downloadAndInstallExtensions
(
extensionsToInstall
)
.
then
(
locals
=>
this
.
onDidInstallExtensions
(
extensionsToInstall
,
locals
,
operataions
,
[])
.
then
(()
=>
locals
.
filter
(
l
=>
areSameExtensions
({
id
:
getGalleryExtensionIdFromLocal
(
l
),
uuid
:
l
.
identifier
.
uuid
},
extension
.
identifier
)[
0
])),
errors
=>
this
.
onDidInstallExtensions
(
extensionsToInstall
,
[],
operataions
,
errors
));
},
error
=>
this
.
onDidInstallExtensions
([
extension
],
[],
[
this
.
getOperation
(
extension
,
installed
)],
[
error
])));
}
reinstallFromGallery
(
extension
:
ILocalExtension
):
TPromise
<
ILocalExtension
>
{
...
...
@@ -259,6 +266,10 @@ export class ExtensionManagementService extends Disposable implements IExtension
});
}
private
getOperation
(
extensionToInstall
:
IGalleryExtension
,
installed
:
ILocalExtension
[]):
Operation
{
return
installed
.
some
(
i
=>
areSameExtensions
({
id
:
getGalleryExtensionIdFromLocal
(
i
),
uuid
:
i
.
identifier
.
uuid
},
extensionToInstall
.
identifier
))
?
Operation
.
Update
:
Operation
.
Install
;
}
private
collectExtensionsToInstall
(
extension
:
IGalleryExtension
):
TPromise
<
IGalleryExtension
[]
>
{
return
this
.
galleryService
.
loadCompatibleVersion
(
extension
)
.
then
(
compatible
=>
{
...
...
@@ -340,7 +351,7 @@ export class ExtensionManagementService extends Disposable implements IExtension
}
}
private
onDidInstallExtensions
(
extensions
:
IGalleryExtension
[],
locals
:
ILocalExtension
[],
errors
:
Error
[]):
TPromise
<
any
>
{
private
onDidInstallExtensions
(
extensions
:
IGalleryExtension
[],
locals
:
ILocalExtension
[],
operations
:
Operation
[],
errors
:
Error
[]):
TPromise
<
any
>
{
extensions
.
forEach
((
gallery
,
index
)
=>
{
const
identifier
=
{
id
:
getLocalExtensionIdFromGallery
(
gallery
,
gallery
.
version
),
uuid
:
gallery
.
identifier
.
uuid
};
const
local
=
locals
[
index
];
...
...
@@ -354,7 +365,7 @@ export class ExtensionManagementService extends Disposable implements IExtension
this
.
_onDidInstallExtension
.
fire
({
identifier
,
gallery
,
error
:
errorCode
});
}
const
startTime
=
this
.
installationStartTime
.
get
(
gallery
.
identifier
.
id
);
this
.
reportTelemetry
(
'
extensionGallery:install
'
,
getGalleryExtensionTelemetryData
(
gallery
),
startTime
?
new
Date
().
getTime
()
-
startTime
:
void
0
,
error
);
this
.
reportTelemetry
(
operations
[
index
]
===
Operation
.
Install
?
'
extensionGallery:install
'
:
'
extensionGallery:update
'
,
getGalleryExtensionTelemetryData
(
gallery
),
startTime
?
new
Date
().
getTime
()
-
startTime
:
void
0
,
error
);
this
.
installationStartTime
.
delete
(
gallery
.
identifier
.
id
);
});
return
errors
.
length
?
TPromise
.
wrapError
(
this
.
joinErrors
(
errors
))
:
TPromise
.
as
(
null
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录