Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
bccc0dcd
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,发现更多精彩内容 >>
提交
bccc0dcd
编写于
6月 17, 2016
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drop extension.path
上级
f80b677a
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
23 addition
and
27 deletion
+23
-27
src/vs/platform/extensionManagement/common/extensionManagement.ts
...latform/extensionManagement/common/extensionManagement.ts
+3
-6
src/vs/platform/extensionManagement/node/extensionManagementService.ts
...rm/extensionManagement/node/extensionManagementService.ts
+14
-20
src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts
...ch/parts/extensions/electron-browser/extensionsViewlet.ts
+6
-1
未找到文件。
src/vs/platform/extensionManagement/common/extensionManagement.ts
浏览文件 @
bccc0dcd
...
...
@@ -30,21 +30,18 @@ export interface IGalleryVersion {
downloadHeaders
:
{
[
key
:
string
]:
string
;
};
}
export
interface
IGallery
Metadata
{
export
interface
IGallery
Extension
{
id
:
string
;
manifest
:
IExtensionManifest
;
publisherId
:
string
;
publisherDisplayName
:
string
;
installCount
:
number
;
versions
:
IGalleryVersion
[];
}
export
interface
IGalleryExtension
extends
IGalleryMetadata
{
manifest
:
IExtensionManifest
;
}
export
interface
IExtension
{
id
:
string
;
manifest
:
IExtensionManifest
;
path
:
string
;
}
export
const
IExtensionManagementService
=
createDecorator
<
IExtensionManagementService
>
(
'
extensionManagementService
'
);
...
...
src/vs/platform/extensionManagement/node/extensionManagementService.ts
浏览文件 @
bccc0dcd
...
...
@@ -177,20 +177,18 @@ export class ExtensionManagementService implements IExtensionManagementService {
private
installFromZip
(
zipPath
:
string
):
TPromise
<
void
>
{
return
validate
(
zipPath
).
then
(
manifest
=>
{
const
id
=
getExtensionId
(
manifest
);
const
extensionPath
=
path
.
join
(
this
.
extensionsPath
,
getExtensionId
(
manifest
)
);
const
extensionPath
=
path
.
join
(
this
.
extensionsPath
,
id
);
this
.
_onInstallExtension
.
fire
(
id
);
return
extract
(
zipPath
,
extensionPath
,
{
sourcePath
:
'
extension
'
,
overwrite
:
true
})
.
then
<
IExtension
>
(()
=>
({
manifest
,
path
:
extensionPath
}))
.
then
(
extension
=>
this
.
_onDidInstallExtension
.
fire
({
id
}))
.
then
(()
=>
this
.
_onDidInstallExtension
.
fire
({
id
}))
.
then
<
void
>
(
null
,
error
=>
{
this
.
_onDidInstallExtension
.
fire
({
id
,
error
});
return
TPromise
.
wrapError
(
error
);
});
});
}
uninstall
(
extension
:
IExtension
):
TPromise
<
void
>
{
const
{
manifest
}
=
extension
;
const
id
=
getExtensionId
(
manifest
);
const
extensionPath
=
extension
.
path
||
path
.
join
(
this
.
extensionsPath
,
id
);
const
id
=
extension
.
id
;
const
extensionPath
=
path
.
join
(
this
.
extensionsPath
,
id
);
return
pfs
.
exists
(
extensionPath
)
.
then
(
exists
=>
exists
?
null
:
Promise
.
wrapError
(
new
Error
(
nls
.
localize
(
'
notExists
'
,
"
Could not find extension
"
))))
...
...
@@ -220,14 +218,14 @@ export class ExtensionManagementService implements IExtensionManagementService {
return
this
.
getObsoleteExtensions
()
.
then
(
obsolete
=>
{
return
pfs
.
readdir
(
this
.
extensionsPath
)
.
then
(
extensions
=>
extensions
.
filter
(
e
=>
!
obsolete
[
e
]))
.
then
<
IExtension
[]
>
(
extension
s
=>
Promise
.
join
(
extensions
.
map
(
e
=>
{
const
extensionPath
=
path
.
join
(
this
.
extensionsPath
,
e
);
.
then
(
extensions
=>
extensions
.
filter
(
id
=>
!
obsolete
[
id
]))
.
then
<
IExtension
[]
>
(
extension
Ids
=>
Promise
.
join
(
extensionIds
.
map
(
id
=>
{
const
extensionPath
=
path
.
join
(
this
.
extensionsPath
,
id
);
return
limiter
.
queue
(
()
=>
pfs
.
readFile
(
path
.
join
(
extensionPath
,
'
package.json
'
),
'
utf8
'
)
.
then
(
raw
=>
parseManifest
(
raw
))
.
then
<
IExtension
>
(
manifest
=>
({
manifest
,
path
:
extensionPath
}))
.
then
<
IExtension
>
(
manifest
=>
({
id
,
manifest
}))
.
then
(
null
,
()
=>
null
)
);
})))
...
...
@@ -236,8 +234,8 @@ export class ExtensionManagementService implements IExtensionManagementService {
}
removeDeprecatedExtensions
():
TPromise
<
void
>
{
const
outdated
=
this
.
getOutdatedExtensions
()
.
then
(
extensions
=>
extensions
.
map
(
({
manifest
})
=>
getExtensionId
(
manifest
)));
const
outdated
=
this
.
getOutdatedExtension
Id
s
()
.
then
(
extensions
=>
extensions
.
map
(
e
=>
getExtensionId
(
e
.
manifest
)));
const
obsolete
=
this
.
getObsoleteExtensions
()
.
then
(
obsolete
=>
Object
.
keys
(
obsolete
));
...
...
@@ -252,14 +250,10 @@ export class ExtensionManagementService implements IExtensionManagementService {
});
}
private
getOutdatedExtensions
():
TPromise
<
IExtension
[]
>
{
return
this
.
getAllInstalled
().
then
(
plugins
=>
{
const
byId
=
values
(
groupBy
(
plugins
,
p
=>
`
${
p
.
manifest
.
publisher
}
.
${
p
.
manifest
.
name
}
`
));
const
extensions
=
flatten
(
byId
.
map
(
p
=>
p
.
sort
((
a
,
b
)
=>
semver
.
rcompare
(
a
.
manifest
.
version
,
b
.
manifest
.
version
)).
slice
(
1
)));
return
extensions
.
filter
(
e
=>
!!
e
.
path
);
});
private
getOutdatedExtensionIds
():
TPromise
<
IExtension
[]
>
{
return
this
.
getAllInstalled
()
.
then
(
extensions
=>
values
(
groupBy
(
extensions
,
p
=>
`
${
p
.
manifest
.
publisher
}
.
${
p
.
manifest
.
name
}
`
)))
.
then
(
versions
=>
flatten
(
versions
.
map
(
p
=>
p
.
sort
((
a
,
b
)
=>
semver
.
rcompare
(
a
.
manifest
.
version
,
b
.
manifest
.
version
)).
slice
(
1
))));
}
private
isObsolete
(
id
:
string
):
TPromise
<
boolean
>
{
...
...
src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts
浏览文件 @
bccc0dcd
...
...
@@ -18,7 +18,7 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import
{
PagedList
}
from
'
vs/base/browser/ui/list/listPaging
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
Delegate
,
Renderer
}
from
'
./extensionsList
'
;
import
{
IExtensionGalleryService
,
IGalleryExtension
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
IExtension
ManagementService
,
IExtension
GalleryService
,
IGalleryExtension
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
ExtensionsInput
}
from
'
../common/extensionsInput
'
;
import
{
IProgressService
}
from
'
vs/platform/progress/common/progress
'
;
import
{
IWorkbenchEditorService
}
from
'
vs/workbench/services/editor/common/editorService
'
;
...
...
@@ -44,6 +44,7 @@ export class ExtensionsViewlet extends Viewlet {
constructor
(
@
ITelemetryService
telemetryService
:
ITelemetryService
,
@
IExtensionGalleryService
private
galleryService
:
IExtensionGalleryService
,
@
IExtensionManagementService
private
extensionService
:
IExtensionManagementService
,
@
IProgressService
private
progressService
:
IProgressService
,
@
IInstantiationService
private
instantiationService
:
IInstantiationService
,
@
IWorkbenchEditorService
private
editorService
:
IWorkbenchEditorService
...
...
@@ -109,6 +110,10 @@ export class ExtensionsViewlet extends Viewlet {
}
private
doSearch
(
text
:
string
=
''
):
TPromise
<
any
>
{
this
.
extensionService
.
getInstalled
().
then
(
r
=>
{
console
.
log
(
r
);
});
return
this
.
galleryService
.
query
({
text
})
.
then
(
result
=>
new
PagedModel
(
result
))
.
then
(
model
=>
this
.
list
.
model
=
model
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录