Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
be3c49be
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 搜索 >>
提交
be3c49be
编写于
4月 02, 2019
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
move config expor helper separate file
上级
6406aa03
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
111 addition
and
102 deletion
+111
-102
src/vs/workbench/electron-browser/main.ts
src/vs/workbench/electron-browser/main.ts
+2
-1
src/vs/workbench/services/configuration/node/configurationExportHelper.ts
.../services/configuration/node/configurationExportHelper.ts
+107
-0
src/vs/workbench/services/configuration/node/configurationService.ts
...bench/services/configuration/node/configurationService.ts
+2
-101
未找到文件。
src/vs/workbench/electron-browser/main.ts
浏览文件 @
be3c49be
...
...
@@ -14,7 +14,7 @@ import { domContentLoaded, addDisposableListener, EventType, scheduleAtNextAnima
import
{
onUnexpectedError
}
from
'
vs/base/common/errors
'
;
import
{
isLinux
,
isMacintosh
,
isWindows
}
from
'
vs/base/common/platform
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
WorkspaceService
,
DefaultConfigurationExportHelper
}
from
'
vs/workbench/services/configuration/node/configurationService
'
;
import
{
WorkspaceService
}
from
'
vs/workbench/services/configuration/node/configurationService
'
;
import
{
SyncDescriptor
}
from
'
vs/platform/instantiation/common/descriptors
'
;
import
{
ServiceCollection
}
from
'
vs/platform/instantiation/common/serviceCollection
'
;
import
{
stat
}
from
'
vs/base/node/pfs
'
;
...
...
@@ -49,6 +49,7 @@ import { DiskFileSystemProvider } from 'vs/workbench/services/files2/electron-br
import
{
IChannel
}
from
'
vs/base/parts/ipc/common/ipc
'
;
import
{
REMOTE_FILE_SYSTEM_CHANNEL_NAME
,
RemoteExtensionsFileSystemProvider
}
from
'
vs/platform/remote/common/remoteAgentFileSystemChannel
'
;
import
{
REMOTE_HOST_SCHEME
}
from
'
vs/platform/remote/common/remoteHosts
'
;
import
{
DefaultConfigurationExportHelper
}
from
'
vs/workbench/services/configuration/node/configurationExportHelper
'
;
class
CodeRendererMain
extends
Disposable
{
...
...
src/vs/workbench/services/configuration/node/configurationExportHelper.ts
0 → 100644
浏览文件 @
be3c49be
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
{
writeFile
}
from
'
vs/base/node/pfs
'
;
import
product
from
'
vs/platform/product/node/product
'
;
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
{
Registry
}
from
'
vs/platform/registry/common/platform
'
;
import
{
IConfigurationNode
,
IConfigurationRegistry
,
Extensions
,
IConfigurationPropertySchema
}
from
'
vs/platform/configuration/common/configurationRegistry
'
;
import
{
IExtensionService
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
{
ICommandService
}
from
'
vs/platform/commands/common/commands
'
;
interface
IExportedConfigurationNode
{
name
:
string
;
description
:
string
;
default
:
any
;
type
?:
string
|
string
[];
enum
?:
any
[];
enumDescriptions
?:
string
[];
}
interface
IConfigurationExport
{
settings
:
IExportedConfigurationNode
[];
buildTime
:
number
;
commit
?:
string
;
buildNumber
?:
number
;
}
export
class
DefaultConfigurationExportHelper
{
constructor
(
@
IEnvironmentService
environmentService
:
IEnvironmentService
,
@
IExtensionService
private
readonly
extensionService
:
IExtensionService
,
@
ICommandService
private
readonly
commandService
:
ICommandService
)
{
if
(
environmentService
.
args
[
'
export-default-configuration
'
])
{
this
.
writeConfigModelAndQuit
(
environmentService
.
args
[
'
export-default-configuration
'
]);
}
}
private
writeConfigModelAndQuit
(
targetPath
:
string
):
Promise
<
void
>
{
return
Promise
.
resolve
(
this
.
extensionService
.
whenInstalledExtensionsRegistered
())
.
then
(()
=>
this
.
writeConfigModel
(
targetPath
))
.
then
(()
=>
this
.
commandService
.
executeCommand
(
'
workbench.action.quit
'
))
.
then
(()
=>
{
});
}
private
writeConfigModel
(
targetPath
:
string
):
Promise
<
void
>
{
const
config
=
this
.
getConfigModel
();
const
resultString
=
JSON
.
stringify
(
config
,
undefined
,
'
'
);
return
writeFile
(
targetPath
,
resultString
);
}
private
getConfigModel
():
IConfigurationExport
{
const
configRegistry
=
Registry
.
as
<
IConfigurationRegistry
>
(
Extensions
.
Configuration
);
const
configurations
=
configRegistry
.
getConfigurations
().
slice
();
const
settings
:
IExportedConfigurationNode
[]
=
[];
const
processProperty
=
(
name
:
string
,
prop
:
IConfigurationPropertySchema
)
=>
{
const
propDetails
:
IExportedConfigurationNode
=
{
name
,
description
:
prop
.
description
||
prop
.
markdownDescription
||
''
,
default
:
prop
.
default
,
type
:
prop
.
type
};
if
(
prop
.
enum
)
{
propDetails
.
enum
=
prop
.
enum
;
}
if
(
prop
.
enumDescriptions
||
prop
.
markdownEnumDescriptions
)
{
propDetails
.
enumDescriptions
=
prop
.
enumDescriptions
||
prop
.
markdownEnumDescriptions
;
}
settings
.
push
(
propDetails
);
};
const
processConfig
=
(
config
:
IConfigurationNode
)
=>
{
if
(
config
.
properties
)
{
for
(
let
name
in
config
.
properties
)
{
processProperty
(
name
,
config
.
properties
[
name
]);
}
}
if
(
config
.
allOf
)
{
config
.
allOf
.
forEach
(
processConfig
);
}
};
configurations
.
forEach
(
processConfig
);
const
excludedProps
=
configRegistry
.
getExcludedConfigurationProperties
();
for
(
let
name
in
excludedProps
)
{
processProperty
(
name
,
excludedProps
[
name
]);
}
const
result
:
IConfigurationExport
=
{
settings
:
settings
.
sort
((
a
,
b
)
=>
a
.
name
.
localeCompare
(
b
.
name
)),
buildTime
:
Date
.
now
(),
commit
:
product
.
commit
,
buildNumber
:
product
.
settingsSearchBuildId
};
return
result
;
}
}
src/vs/workbench/services/configuration/node/configurationService.ts
浏览文件 @
be3c49be
...
...
@@ -10,7 +10,6 @@ import { ResourceMap } from 'vs/base/common/map';
import
{
equals
,
deepClone
}
from
'
vs/base/common/objects
'
;
import
{
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
Queue
,
Barrier
}
from
'
vs/base/common/async
'
;
import
{
writeFile
}
from
'
vs/base/node/pfs
'
;
import
{
IJSONContributionRegistry
,
Extensions
as
JSONExtensions
}
from
'
vs/platform/jsonschemas/common/jsonContributionRegistry
'
;
import
{
IWorkspaceContextService
,
Workspace
,
WorkbenchState
,
IWorkspaceFolder
,
toWorkspaceFolders
,
IWorkspaceFoldersChangeEvent
,
WorkspaceFolder
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
isLinux
}
from
'
vs/base/common/platform
'
;
...
...
@@ -21,11 +20,8 @@ import { IConfigurationChangeEvent, ConfigurationTarget, IConfigurationOverrides
import
{
Configuration
,
WorkspaceConfigurationChangeEvent
,
AllKeysConfigurationChangeEvent
}
from
'
vs/workbench/services/configuration/common/configurationModels
'
;
import
{
FOLDER_CONFIG_FOLDER_NAME
,
defaultSettingsSchemaId
,
userSettingsSchemaId
,
workspaceSettingsSchemaId
,
folderSettingsSchemaId
}
from
'
vs/workbench/services/configuration/common/configuration
'
;
import
{
Registry
}
from
'
vs/platform/registry/common/platform
'
;
import
{
IConfiguration
Node
,
IConfigurationRegistry
,
Extensions
,
IConfigurationPropertySchema
,
allSettings
,
windowSettings
,
resourceSettings
,
applicationSettings
}
from
'
vs/platform/configuration/common/configurationRegistry
'
;
import
{
IConfiguration
Registry
,
Extensions
,
allSettings
,
windowSettings
,
resourceSettings
,
applicationSettings
}
from
'
vs/platform/configuration/common/configurationRegistry
'
;
import
{
IWorkspaceIdentifier
,
isWorkspaceIdentifier
,
IStoredWorkspaceFolder
,
isStoredWorkspaceFolder
,
IWorkspaceFolderCreationData
,
ISingleFolderWorkspaceIdentifier
,
isSingleFolderWorkspaceIdentifier
,
IWorkspaceInitializationPayload
,
isSingleFolderWorkspaceInitializationPayload
,
ISingleFolderWorkspaceInitializationPayload
,
IEmptyWorkspaceInitializationPayload
,
useSlashForPath
,
getStoredWorkspaceFolder
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
IExtensionService
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
{
ICommandService
}
from
'
vs/platform/commands/common/commands
'
;
import
product
from
'
vs/platform/product/node/product
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
ConfigurationEditingService
}
from
'
vs/workbench/services/configuration/common/configurationEditingService
'
;
import
{
WorkspaceConfiguration
,
FolderConfiguration
,
RemoteUserConfiguration
,
LocalUserConfiguration
}
from
'
vs/workbench/services/configuration/node/configuration
'
;
...
...
@@ -707,99 +703,4 @@ export class WorkspaceService extends Disposable implements IConfigurationServic
}
return
{};
}
}
interface
IExportedConfigurationNode
{
name
:
string
;
description
:
string
;
default
:
any
;
type
?:
string
|
string
[];
enum
?:
any
[];
enumDescriptions
?:
string
[];
}
interface
IConfigurationExport
{
settings
:
IExportedConfigurationNode
[];
buildTime
:
number
;
commit
?:
string
;
buildNumber
?:
number
;
}
export
class
DefaultConfigurationExportHelper
{
constructor
(
@
IEnvironmentService
environmentService
:
IEnvironmentService
,
@
IExtensionService
private
readonly
extensionService
:
IExtensionService
,
@
ICommandService
private
readonly
commandService
:
ICommandService
)
{
if
(
environmentService
.
args
[
'
export-default-configuration
'
])
{
this
.
writeConfigModelAndQuit
(
environmentService
.
args
[
'
export-default-configuration
'
]);
}
}
private
writeConfigModelAndQuit
(
targetPath
:
string
):
Promise
<
void
>
{
return
Promise
.
resolve
(
this
.
extensionService
.
whenInstalledExtensionsRegistered
())
.
then
(()
=>
this
.
writeConfigModel
(
targetPath
))
.
then
(()
=>
this
.
commandService
.
executeCommand
(
'
workbench.action.quit
'
))
.
then
(()
=>
{
});
}
private
writeConfigModel
(
targetPath
:
string
):
Promise
<
void
>
{
const
config
=
this
.
getConfigModel
();
const
resultString
=
JSON
.
stringify
(
config
,
undefined
,
'
'
);
return
writeFile
(
targetPath
,
resultString
);
}
private
getConfigModel
():
IConfigurationExport
{
const
configRegistry
=
Registry
.
as
<
IConfigurationRegistry
>
(
Extensions
.
Configuration
);
const
configurations
=
configRegistry
.
getConfigurations
().
slice
();
const
settings
:
IExportedConfigurationNode
[]
=
[];
const
processProperty
=
(
name
:
string
,
prop
:
IConfigurationPropertySchema
)
=>
{
const
propDetails
:
IExportedConfigurationNode
=
{
name
,
description
:
prop
.
description
||
prop
.
markdownDescription
||
''
,
default
:
prop
.
default
,
type
:
prop
.
type
};
if
(
prop
.
enum
)
{
propDetails
.
enum
=
prop
.
enum
;
}
if
(
prop
.
enumDescriptions
||
prop
.
markdownEnumDescriptions
)
{
propDetails
.
enumDescriptions
=
prop
.
enumDescriptions
||
prop
.
markdownEnumDescriptions
;
}
settings
.
push
(
propDetails
);
};
const
processConfig
=
(
config
:
IConfigurationNode
)
=>
{
if
(
config
.
properties
)
{
for
(
let
name
in
config
.
properties
)
{
processProperty
(
name
,
config
.
properties
[
name
]);
}
}
if
(
config
.
allOf
)
{
config
.
allOf
.
forEach
(
processConfig
);
}
};
configurations
.
forEach
(
processConfig
);
const
excludedProps
=
configRegistry
.
getExcludedConfigurationProperties
();
for
(
let
name
in
excludedProps
)
{
processProperty
(
name
,
excludedProps
[
name
]);
}
const
result
:
IConfigurationExport
=
{
settings
:
settings
.
sort
((
a
,
b
)
=>
a
.
name
.
localeCompare
(
b
.
name
)),
buildTime
:
Date
.
now
(),
commit
:
product
.
commit
,
buildNumber
:
product
.
settingsSearchBuildId
};
return
result
;
}
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录