Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
5420d4af
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,发现更多精彩内容 >>
提交
5420d4af
编写于
2月 05, 2018
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
invalidate extensions manifest cache only after the fact
上级
e9650bd5
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
56 addition
and
28 deletion
+56
-28
src/vs/platform/extensionManagement/node/extensionManagementService.ts
...rm/extensionManagement/node/extensionManagementService.ts
+14
-28
src/vs/platform/extensionManagement/node/extensionsManifestCache.ts
...tform/extensionManagement/node/extensionsManifestCache.ts
+42
-0
未找到文件。
src/vs/platform/extensionManagement/node/extensionManagementService.ts
浏览文件 @
5420d4af
...
...
@@ -10,7 +10,7 @@ import * as path from 'path';
import
*
as
pfs
from
'
vs/base/node/pfs
'
;
import
*
as
errors
from
'
vs/base/common/errors
'
;
import
{
assign
}
from
'
vs/base/common/objects
'
;
import
{
IDisposable
,
dispose
,
to
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
toDisposable
,
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
flatten
,
distinct
,
coalesce
}
from
'
vs/base/common/arrays
'
;
import
{
extract
,
buffer
}
from
'
vs/base/node/zip
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
...
...
@@ -32,8 +32,8 @@ import URI from 'vs/base/common/uri';
import
{
IChoiceService
,
Severity
}
from
'
vs/platform/message/common/message
'
;
import
pkg
from
'
vs/platform/node/package
'
;
import
{
isMacintosh
}
from
'
vs/base/common/platform
'
;
import
{
MANIFEST_CACHE_FOLDER
,
USER_MANIFEST_CACHE_FILE
}
from
'
vs/platform/extensions/common/extensions
'
;
import
{
ILogService
}
from
'
vs/platform/log/common/log
'
;
import
{
ExtensionsManifestCache
}
from
'
vs/platform/extensionManagement/node/extensionsManifestCache
'
;
const
SystemExtensionsRoot
=
path
.
normalize
(
path
.
join
(
URI
.
parse
(
require
.
toUrl
(
''
)).
fsPath
,
'
..
'
,
'
extensions
'
));
const
ERROR_SCANNING_SYS_EXTENSIONS
=
'
scanningSystem
'
;
...
...
@@ -98,7 +98,7 @@ interface InstallableExtension {
metadata
?:
IGalleryMetadata
;
}
export
class
ExtensionManagementService
implements
IExtensionManagementService
{
export
class
ExtensionManagementService
extends
Disposable
implements
IExtensionManagementService
{
_serviceBrand
:
any
;
...
...
@@ -107,7 +107,8 @@ export class ExtensionManagementService implements IExtensionManagementService {
private
uninstalledFileLimiter
:
Limiter
<
void
>
;
private
reportedExtensions
:
TPromise
<
IReportedExtension
[]
>
|
undefined
;
private
lastReportTimestamp
=
0
;
private
disposables
:
IDisposable
[]
=
[];
private
readonly
installingExtensions
:
Map
<
string
,
TPromise
<
ILocalExtension
>>
=
new
Map
<
string
,
TPromise
<
ILocalExtension
>>
();
private
readonly
manifestCache
:
ExtensionsManifestCache
;
private
readonly
_onInstallExtension
=
new
Emitter
<
InstallExtensionEvent
>
();
readonly
onInstallExtension
:
Event
<
InstallExtensionEvent
>
=
this
.
_onInstallExtension
.
event
;
...
...
@@ -118,33 +119,24 @@ export class ExtensionManagementService implements IExtensionManagementService {
private
readonly
_onUninstallExtension
=
new
Emitter
<
IExtensionIdentifier
>
();
readonly
onUninstallExtension
:
Event
<
IExtensionIdentifier
>
=
this
.
_onUninstallExtension
.
event
;
private
readonly
installingExtensions
:
Map
<
string
,
TPromise
<
ILocalExtension
>>
=
new
Map
<
string
,
TPromise
<
ILocalExtension
>>
();
private
_onDidUninstallExtension
=
new
Emitter
<
DidUninstallExtensionEvent
>
();
onDidUninstallExtension
:
Event
<
DidUninstallExtensionEvent
>
=
this
.
_onDidUninstallExtension
.
event
;
constructor
(
@
IEnvironmentService
private
environmentService
:
IEnvironmentService
,
@
IEnvironmentService
environmentService
:
IEnvironmentService
,
@
IChoiceService
private
choiceService
:
IChoiceService
,
@
IExtensionGalleryService
private
galleryService
:
IExtensionGalleryService
,
@
ILogService
private
logService
:
ILogService
)
{
super
();
this
.
extensionsPath
=
environmentService
.
extensionsPath
;
this
.
uninstalledPath
=
path
.
join
(
this
.
extensionsPath
,
'
.obsolete
'
);
this
.
uninstalledFileLimiter
=
new
Limiter
(
1
);
this
.
disposables
.
push
(
toDisposable
(()
=>
this
.
installingExtensions
.
clear
()));
}
private
deleteExtensionsManifestCache
():
void
{
const
cacheFolder
=
path
.
join
(
this
.
environmentService
.
userDataPath
,
MANIFEST_CACHE_FOLDER
);
const
cacheFile
=
path
.
join
(
cacheFolder
,
USER_MANIFEST_CACHE_FILE
);
pfs
.
del
(
cacheFile
).
done
(()
=>
{
},
()
=>
{
});
this
.
_register
(
toDisposable
(()
=>
this
.
installingExtensions
.
clear
()));
this
.
manifestCache
=
this
.
_register
(
new
ExtensionsManifestCache
(
environmentService
,
this
));
}
install
(
zipPath
:
string
):
TPromise
<
void
>
{
this
.
deleteExtensionsManifestCache
();
zipPath
=
path
.
resolve
(
zipPath
);
return
validateLocalExtension
(
zipPath
)
...
...
@@ -231,8 +223,6 @@ export class ExtensionManagementService implements IExtensionManagementService {
}
installFromGallery
(
extension
:
IGalleryExtension
):
TPromise
<
void
>
{
this
.
deleteExtensionsManifestCache
();
this
.
onInstallExtensions
([
extension
]);
return
this
.
collectExtensionsToInstall
(
extension
)
.
then
(
...
...
@@ -447,8 +437,6 @@ export class ExtensionManagementService implements IExtensionManagementService {
}
uninstall
(
extension
:
ILocalExtension
,
force
=
false
):
TPromise
<
void
>
{
this
.
deleteExtensionsManifestCache
();
return
this
.
getInstalled
(
LocalExtensionType
.
User
)
.
then
(
installed
=>
{
const
promises
=
installed
...
...
@@ -459,10 +447,12 @@ export class ExtensionManagementService implements IExtensionManagementService {
}
updateMetadata
(
local
:
ILocalExtension
,
metadata
:
IGalleryMetadata
):
TPromise
<
ILocalExtension
>
{
this
.
deleteExtensionsManifestCache
();
local
.
metadata
=
metadata
;
return
this
.
saveMetadataForLocalExtension
(
local
);
return
this
.
saveMetadataForLocalExtension
(
local
)
.
then
(
localExtension
=>
{
this
.
manifestCache
.
invalidate
();
return
localExtension
;
});
}
private
saveMetadataForLocalExtension
(
local
:
ILocalExtension
):
TPromise
<
ILocalExtension
>
{
...
...
@@ -807,10 +797,6 @@ export class ExtensionManagementService implements IExtensionManagementService {
return
[];
});
}
dispose
()
{
this
.
disposables
=
dispose
(
this
.
disposables
);
}
}
export
function
getLocalExtensionIdFromGallery
(
extension
:
IGalleryExtension
,
version
:
string
):
string
{
...
...
src/vs/platform/extensionManagement/node/extensionsManifestCache.ts
0 → 100644
浏览文件 @
5420d4af
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'
use strict
'
;
import
{
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
join
}
from
'
path
'
;
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
{
IExtensionManagementService
,
DidInstallExtensionEvent
,
DidUninstallExtensionEvent
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
MANIFEST_CACHE_FOLDER
,
USER_MANIFEST_CACHE_FILE
}
from
'
vs/platform/extensions/common/extensions
'
;
import
*
as
pfs
from
'
vs/base/node/pfs
'
;
export
class
ExtensionsManifestCache
extends
Disposable
{
private
extensionsManifestCache
=
join
(
this
.
environmentService
.
userDataPath
,
MANIFEST_CACHE_FOLDER
,
USER_MANIFEST_CACHE_FILE
);
constructor
(
private
readonly
environmentService
:
IEnvironmentService
,
extensionsManagementServuce
:
IExtensionManagementService
)
{
super
();
this
.
_register
(
extensionsManagementServuce
.
onDidInstallExtension
(
e
=>
this
.
onDidInstallExtension
(
e
)));
this
.
_register
(
extensionsManagementServuce
.
onDidUninstallExtension
(
e
=>
this
.
onDidUnInstallExtension
(
e
)));
}
private
onDidInstallExtension
(
e
:
DidInstallExtensionEvent
):
void
{
if
(
!
e
.
error
)
{
this
.
invalidate
();
}
}
private
onDidUnInstallExtension
(
e
:
DidUninstallExtensionEvent
):
void
{
if
(
!
e
.
error
)
{
this
.
invalidate
();
}
}
invalidate
():
void
{
pfs
.
del
(
this
.
extensionsManifestCache
).
done
(()
=>
{
},
()
=>
{
});
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录