Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
70900a51
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,体验更适合开发者的 AI 搜索 >>
提交
70900a51
编写于
11月 21, 2017
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix #15477
上级
74d3e2a0
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
50 addition
and
41 deletion
+50
-41
src/vs/platform/extensionManagement/common/extensionManagement.ts
...latform/extensionManagement/common/extensionManagement.ts
+1
-1
src/vs/platform/extensionManagement/node/extensionGalleryService.ts
...tform/extensionManagement/node/extensionGalleryService.ts
+5
-9
src/vs/platform/extensionManagement/node/extensionManagementService.ts
...rm/extensionManagement/node/extensionManagementService.ts
+43
-30
src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts
...bench/parts/extensions/node/extensionsWorkbenchService.ts
+1
-1
未找到文件。
src/vs/platform/extensionManagement/common/extensionManagement.ts
浏览文件 @
70900a51
...
...
@@ -225,7 +225,7 @@ export interface IExtensionGalleryService {
getManifest
(
extension
:
IGalleryExtension
):
TPromise
<
IExtensionManifest
>
;
getChangelog
(
extension
:
IGalleryExtension
):
TPromise
<
string
>
;
loadCompatibleVersion
(
extension
:
IGalleryExtension
):
TPromise
<
IGalleryExtension
>
;
getAllDependencies
(
extension
:
IGalleryExtension
):
TPromise
<
IGalleryExtension
[]
>
;
loadAllDependencies
(
dependencies
:
IExtensionIdentifier
[]
):
TPromise
<
IGalleryExtension
[]
>
;
}
export
interface
InstallExtensionEvent
{
...
...
src/vs/platform/extensionManagement/node/extensionGalleryService.ts
浏览文件 @
70900a51
...
...
@@ -10,7 +10,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
import
*
as
uuid
from
'
vs/base/common/uuid
'
;
import
{
distinct
}
from
'
vs/base/common/arrays
'
;
import
{
getErrorMessage
,
isPromiseCanceledError
}
from
'
vs/base/common/errors
'
;
import
{
StatisticType
,
IGalleryExtension
,
IExtensionGalleryService
,
IGalleryExtensionAsset
,
IQueryOptions
,
SortBy
,
SortOrder
,
IExtensionManifest
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
StatisticType
,
IGalleryExtension
,
IExtensionGalleryService
,
IGalleryExtensionAsset
,
IQueryOptions
,
SortBy
,
SortOrder
,
IExtensionManifest
,
IExtensionIdentifier
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
getGalleryExtensionId
,
getGalleryExtensionTelemetryData
,
adoptToGalleryExtensionId
}
from
'
vs/platform/extensionManagement/common/extensionManagementUtil
'
;
import
{
assign
,
getOrDefault
}
from
'
vs/base/common/objects
'
;
import
{
IRequestService
}
from
'
vs/platform/request/node/request
'
;
...
...
@@ -495,9 +495,8 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
.
then
(
asText
);
}
getAllDependencies
(
extension
:
IGalleryExtension
):
TPromise
<
IGalleryExtension
[]
>
{
return
this
.
loadCompatibleVersion
(
<
IGalleryExtension
>
extension
)
.
then
(
compatible
=>
this
.
getDependenciesReccursively
(
compatible
.
properties
.
dependencies
,
[],
extension
));
loadAllDependencies
(
extensions
:
IExtensionIdentifier
[]):
TPromise
<
IGalleryExtension
[]
>
{
return
this
.
getDependenciesReccursively
(
extensions
.
map
(
e
=>
e
.
id
),
[]);
}
loadCompatibleVersion
(
extension
:
IGalleryExtension
):
TPromise
<
IGalleryExtension
>
{
...
...
@@ -559,13 +558,10 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
});
}
private
getDependenciesReccursively
(
toGet
:
string
[],
result
:
IGalleryExtension
[]
,
root
:
IGalleryExtension
):
TPromise
<
IGalleryExtension
[]
>
{
private
getDependenciesReccursively
(
toGet
:
string
[],
result
:
IGalleryExtension
[]):
TPromise
<
IGalleryExtension
[]
>
{
if
(
!
toGet
||
!
toGet
.
length
)
{
return
TPromise
.
wrap
(
result
);
}
if
(
toGet
.
indexOf
(
`
${
root
.
publisher
}
.
${
root
.
name
}
`
)
!==
-
1
&&
result
.
indexOf
(
root
)
===
-
1
)
{
result
.
push
(
root
);
}
toGet
=
result
.
length
?
toGet
.
filter
(
e
=>
!
ExtensionGalleryService
.
hasExtensionByName
(
result
,
e
))
:
toGet
;
if
(
!
toGet
.
length
)
{
return
TPromise
.
wrap
(
result
);
...
...
@@ -582,7 +578,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
result
=
distinct
(
result
.
concat
(
loadedDependencies
),
d
=>
d
.
identifier
.
uuid
);
const
dependencies
:
string
[]
=
[];
dependenciesSet
.
forEach
(
d
=>
!
ExtensionGalleryService
.
hasExtensionByName
(
result
,
d
)
&&
dependencies
.
push
(
d
));
return
this
.
getDependenciesReccursively
(
dependencies
,
result
,
root
);
return
this
.
getDependenciesReccursively
(
dependencies
,
result
);
});
}
...
...
src/vs/platform/extensionManagement/node/extensionManagementService.ts
浏览文件 @
70900a51
...
...
@@ -113,26 +113,42 @@ export class ExtensionManagementService implements IExtensionManagementService {
install
(
zipPath
:
string
):
TPromise
<
void
>
{
zipPath
=
path
.
resolve
(
zipPath
);
return
validateLocalExtension
(
zipPath
).
then
<
void
>
(
manifest
=>
{
const
identifier
=
{
id
:
getLocalExtensionIdFromManifest
(
manifest
)
};
return
validateLocalExtension
(
zipPath
)
.
then
<
void
>
(
manifest
=>
{
const
identifier
=
{
id
:
getLocalExtensionIdFromManifest
(
manifest
)
};
return
this
.
isObsolete
(
identifier
.
id
).
then
(
isObsolete
=>
{
if
(
isObsolete
)
{
return
TPromise
.
wrapError
(
new
Error
(
nls
.
localize
(
'
restartCodeLocal
'
,
"
Please restart Code before reinstalling {0}.
"
,
manifest
.
displayName
||
manifest
.
name
)));
}
return
this
.
isObsolete
(
identifier
.
id
).
then
(
isObsolete
=>
{
if
(
isObsolete
)
{
return
TPromise
.
wrapError
(
new
Error
(
nls
.
localize
(
'
restartCodeLocal
'
,
"
Please restart Code before reinstalling {0}.
"
,
manifest
.
displayName
||
manifest
.
name
)));
}
this
.
_onInstallExtension
.
fire
({
identifier
,
zipPath
});
this
.
_onInstallExtension
.
fire
({
identifier
,
zipPath
});
return
this
.
getMetadata
(
getGalleryExtensionId
(
manifest
.
publisher
,
manifest
.
name
))
.
then
(
metadata
=>
this
.
installExtension
({
zipPath
,
id
:
identifier
.
id
,
metadata
}),
error
=>
this
.
installExtension
({
zipPath
,
id
:
identifier
.
id
}))
.
then
(
local
=>
this
.
_onDidInstallExtension
.
fire
({
identifier
,
zipPath
,
local
}),
error
=>
{
this
.
_onDidInstallExtension
.
fire
({
identifier
,
zipPath
,
error
});
return
TPromise
.
wrapError
(
error
);
}
);
return
this
.
getMetadata
(
getGalleryExtensionId
(
manifest
.
publisher
,
manifest
.
name
))
.
then
(
metadata
=>
this
.
installFromZipPath
(
identifier
,
zipPath
,
metadata
,
manifest
),
error
=>
this
.
installFromZipPath
(
identifier
,
zipPath
,
null
,
manifest
));
});
});
});
}
private
installFromZipPath
(
identifier
:
IExtensionIdentifier
,
zipPath
:
string
,
metadata
:
IGalleryMetadata
,
manifest
:
IExtensionManifest
):
TPromise
<
void
>
{
return
this
.
installExtension
({
zipPath
,
id
:
identifier
.
id
,
metadata
})
.
then
(
local
=>
{
if
(
this
.
galleryService
.
isEnabled
()
&&
local
.
manifest
.
extensionDependencies
&&
local
.
manifest
.
extensionDependencies
.
length
)
{
return
this
.
getDependenciesToInstall
(
local
.
manifest
.
extensionDependencies
)
.
then
(
dependenciesToInstall
=>
this
.
downloadAndInstallExtensions
(
metadata
?
dependenciesToInstall
.
filter
(
d
=>
d
.
identifier
.
uuid
!==
metadata
.
id
)
:
dependenciesToInstall
))
.
then
(()
=>
local
,
error
=>
{
this
.
uninstallExtension
(
local
.
identifier
);
return
TPromise
.
wrapError
(
error
);
});
}
return
local
;
})
.
then
(
local
=>
this
.
_onDidInstallExtension
.
fire
({
identifier
,
zipPath
,
local
}),
error
=>
{
this
.
_onDidInstallExtension
.
fire
({
identifier
,
zipPath
,
error
});
return
TPromise
.
wrapError
(
error
);
}
);
}
installFromGallery
(
extension
:
IGalleryExtension
):
TPromise
<
void
>
{
...
...
@@ -170,9 +186,8 @@ export class ExtensionManagementService implements IExtensionManagementService {
private
collectExtensionsToInstall
(
extension
:
IGalleryExtension
):
TPromise
<
IGalleryExtension
[]
>
{
return
this
.
galleryService
.
loadCompatibleVersion
(
extension
)
.
then
(
extensionToInstall
=>
this
.
galleryService
.
getAllDependencies
(
extension
)
.
then
(
allDependencies
=>
this
.
filterDependenciesToInstall
(
extension
,
allDependencies
))
.
then
(
dependenciesToInstall
=>
[
extensionToInstall
,
...
dependenciesToInstall
]));
.
then
(
extensionToInstall
=>
this
.
getDependenciesToInstall
(
extension
.
properties
.
dependencies
)
.
then
(
dependenciesToInstall
=>
[
extensionToInstall
,
...
dependenciesToInstall
.
filter
(
d
=>
d
.
identifier
.
uuid
!==
extensionToInstall
.
identifier
.
uuid
)]));
}
private
checkForObsolete
(
extensionsToInstall
:
IGalleryExtension
[]):
TPromise
<
IGalleryExtension
[]
>
{
...
...
@@ -217,17 +232,15 @@ export class ExtensionManagementService implements IExtensionManagementService {
return
error
?
TPromise
.
wrapError
(
Array
.
isArray
(
error
)
?
this
.
joinErrors
(
error
)
:
error
)
:
TPromise
.
as
(
null
);
}
private
filterDependenciesToInstall
(
extension
:
IGalleryExtension
,
dependencies
:
IGalleryExtension
[]):
TPromise
<
IGalleryExtension
[]
>
{
return
this
.
getInstalled
()
.
then
(
local
=>
{
return
dependencies
.
filter
(
d
=>
{
if
(
extension
.
identifier
.
uuid
===
d
.
identifier
.
uuid
)
{
return
false
;
}
const
extensionId
=
getLocalExtensionIdFromGallery
(
d
,
d
.
version
);
return
local
.
every
(({
identifier
})
=>
identifier
.
id
!==
extensionId
);
});
});
private
getDependenciesToInstall
(
dependencies
:
string
[]):
TPromise
<
IGalleryExtension
[]
>
{
return
this
.
galleryService
.
loadAllDependencies
(
dependencies
.
map
(
id
=>
(
<
IExtensionIdentifier
>
{
id
})))
.
then
(
allDependencies
=>
this
.
getInstalled
()
.
then
(
local
=>
{
return
allDependencies
.
filter
(
d
=>
{
const
extensionId
=
getLocalExtensionIdFromGallery
(
d
,
d
.
version
);
return
local
.
every
(({
identifier
})
=>
identifier
.
id
!==
extensionId
);
});
}));
}
private
filterOutUninstalled
(
extensions
:
IGalleryExtension
[]):
TPromise
<
ILocalExtension
[]
>
{
...
...
src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts
浏览文件 @
70900a51
...
...
@@ -413,7 +413,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService {
return
TPromise
.
wrap
<
IExtensionDependencies
>
(
null
);
}
return
this
.
galleryService
.
getAllDependencies
((
<
Extension
>
extension
).
gallery
)
return
this
.
galleryService
.
loadAllDependencies
((
<
Extension
>
extension
).
dependencies
.
map
(
id
=>
<
IExtensionIdentifier
>
{
id
})
)
.
then
(
galleryExtensions
=>
galleryExtensions
.
map
(
galleryExtension
=>
this
.
fromGallery
(
galleryExtension
)))
.
then
(
extensions
=>
[...
this
.
local
,
...
extensions
])
.
then
(
extensions
=>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录