Skip to content
GitLab
菜单
为什么选择 GitLab
定价
联系销售
探索
为什么选择 GitLab
定价
联系销售
探索
登录
获取免费试用
主导航
搜索或转到…
项目
A
aspnetcore
管理
动态
成员
标记
计划
议题
议题看板
里程碑
Wiki
代码
合并请求
仓库
分支
提交
标签
仓库图
比较修订版本
代码片段
构建
流水线
作业
流水线计划
产物
部署
发布
Package registry
Container registry
模型注册表
运维
环境
Terraform 模块
监控
事件
服务台
分析
价值流分析
贡献者分析
CI/CD 分析
仓库分析
模型实验
帮助
帮助
支持
GitLab 文档
比较 GitLab 各版本
社区论坛
为极狐GitLab 提交贡献
提交反馈
隐私声明
快捷键
?
新增功能
4
代码片段
群组
项目
显示更多面包屑
dotnet
aspnetcore
提交
4561d402
提交
4561d402
编辑于
7 years ago
作者:
Ryan Brandenburg
浏览文件
操作
下载
补丁
差异文件
Update bootstrappers
上级
086f6e4e
No related branches found
No related tags found
无相关合并请求
变更
5
隐藏空白变更内容
行内
左右并排
显示
5 个更改的文件
build.cmd
+1
-1
1 个添加, 1 个删除
build.cmd
build.sh
+3
-194
3 个添加, 194 个删除
build.sh
run.cmd
+2
-0
2 个添加, 0 个删除
run.cmd
run.ps1
+35
-21
35 个添加, 21 个删除
run.ps1
run.sh
+223
-0
223 个添加, 0 个删除
run.sh
有
264 个添加
和
216 个删除
build.cmd
+
1
−
1
浏览文件 @
4561d402
@ECHO
OFF
@ECHO
OFF
PowerShell
-NoProfile -NoLogo -ExecutionPolicy
unrestricted
-Command
"[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';& '
%~dp0
build
.ps1'
%
*; exit $LASTEXITCODE"
PowerShell
-NoProfile -NoLogo -ExecutionPolicy
unrestricted
-Command
"[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';& '
%~dp0
run.ps1' default-
build
%
*; exit $LASTEXITCODE"
此差异已折叠。
点击以展开。
build.sh
+
3
−
194
浏览文件 @
4561d402
#!/usr/bin/env bash
#!/usr/bin/env bash
set
-euo
pipefail
set
-euo
pipefail
#
# variables
#
RESET
=
"
\0
33[0m"
RED
=
"
\0
33[0;31m"
MAGENTA
=
"
\0
33[0;95m"
DIR
=
"
$(
cd
"
$(
dirname
"
${
BASH_SOURCE
[0]
}
"
)
"
&&
pwd
)
"
DIR
=
"
$(
cd
"
$(
dirname
"
${
BASH_SOURCE
[0]
}
"
)
"
&&
pwd
)
"
[
-z
"
${
DOTNET_HOME
:-}
"
]
&&
DOTNET_HOME
=
"
$HOME
/.dotnet"
config_file
=
"
$DIR
/version.xml"
verbose
=
false
update
=
false
repo_path
=
"
$DIR
"
channel
=
''
tools_source
=
''
#
# Functions
#
__usage
()
{
echo
"Usage:
$(
basename
"
${
BASH_SOURCE
[0]
}
"
)
[options] [[--] <MSBUILD_ARG>...]"
echo
""
echo
"Arguments:"
echo
" <MSBUILD_ARG>... Arguments passed to MSBuild. Variable number of arguments allowed."
echo
""
echo
"Options:"
echo
" --verbose Show verbose output."
echo
" -c|--channel <CHANNEL> The channel of KoreBuild to download. Overrides the value from the config file.."
echo
" --config-file <FILE> TThe path to the configuration file that stores values. Defaults to version.xml."
echo
" -d|--dotnet-home <DIR> The directory where .NET Core tools will be stored. Defaults to '
\$
DOTNET_HOME' or '
\$
HOME/.dotnet."
echo
" --path <PATH> The directory to build. Defaults to the directory containing the script."
echo
" -s|--tools-source <URL> The base url where build tools can be downloaded. Overrides the value from the config file."
echo
" -u|--update Update to the latest KoreBuild even if the lock file is present."
echo
""
echo
"Description:"
echo
" This function will create a file
\$
DIR/korebuild-lock.txt. This lock file can be committed to source, but does not have to be."
echo
" When the lockfile is not present, KoreBuild will create one using latest available version from
\$
channel."
if
[[
"
${
1
:-}
"
!=
'--no-exit'
]]
;
then
exit
2
fi
}
get_korebuild
()
{
local
version
local
lock_file
=
"
$repo_path
/korebuild-lock.txt"
if
[
!
-f
"
$lock_file
"
]
||
[
"
$update
"
=
true
]
;
then
__get_remote_file
"
$tools_source
/korebuild/channels/
$channel
/latest.txt"
"
$lock_file
"
fi
version
=
"
$(
grep
'version:*'
-m
1
"
$lock_file
"
)
"
if
[[
"
$version
"
==
''
]]
;
then
__error
"Failed to parse version from
$lock_file
. Expected a line that begins with 'version:'"
return
1
fi
version
=
"
$(
echo
"
${
version
#version
:
}
"
|
sed
-e
's/^[[:space:]]*//'
-e
's/[[:space:]]*$//'
)
"
local
korebuild_path
=
"
$DOTNET_HOME
/buildtools/korebuild/
$version
"
{
if
[
!
-d
"
$korebuild_path
"
]
;
then
mkdir
-p
"
$korebuild_path
"
local
remote_path
=
"
$tools_source
/korebuild/artifacts/
$version
/korebuild.
$version
.zip"
tmpfile
=
"
$(
mktemp
)
"
echo
-e
"
${
MAGENTA
}
Downloading KoreBuild
${
version
}${
RESET
}
"
if
__get_remote_file
"
$remote_path
"
"
$tmpfile
"
;
then
unzip
-q
-d
"
$korebuild_path
"
"
$tmpfile
"
fi
rm
"
$tmpfile
"
||
true
fi
source
"
$korebuild_path
/KoreBuild.sh"
}
||
{
if
[
-d
"
$korebuild_path
"
]
;
then
echo
"Cleaning up after failed installation"
rm
-rf
"
$korebuild_path
"
||
true
fi
return
1
}
}
__error
()
{
echo
-e
"
${
RED
}
$*
${
RESET
}
"
1>&2
}
__machine_has
()
{
hash
"
$1
"
>
/dev/null 2>&1
return
$?
}
__get_remote_file
()
{
local
remote_path
=
$1
local
local_path
=
$2
if
[[
"
$remote_path
"
!=
'http'
*
]]
;
then
cp
"
$remote_path
"
"
$local_path
"
return
0
fi
local
failed
=
false
if
__machine_has wget
;
then
wget
--tries
10
--quiet
-O
"
$local_path
"
"
$remote_path
"
||
failed
=
true
else
failed
=
true
fi
if
[
"
$failed
"
=
true
]
&&
__machine_has curl
;
then
failed
=
false
curl
--retry
10
-sSL
-f
--create-dirs
-o
"
$local_path
"
"
$remote_path
"
||
failed
=
true
fi
if
[
"
$failed
"
=
true
]
;
then
__error
"Download failed:
$remote_path
"
1>&2
return
1
fi
}
__read_dom
()
{
local
IFS
=
\>
;
read
-r
-d
\<
ENTITY CONTENT
;
}
#
# main
#
while
[[
$#
-gt
0
]]
;
do
case
$1
in
-
\?
|
-h
|
--help
)
__usage
--no-exit
exit
0
;;
-c
|
--channel
|
-Channel
)
shift
channel
=
"
${
1
:-}
"
[
-z
"
$channel
"
]
&&
__usage
;;
--config-file
|
-ConfigFile
)
shift
config_file
=
"
${
1
:-}
"
[
-z
"
$config_file
"
]
&&
__usage
;;
-d
|
--dotnet-home
|
-DotNetHome
)
shift
DOTNET_HOME
=
"
${
1
:-}
"
[
-z
"
$DOTNET_HOME
"
]
&&
__usage
;;
--path
|
-Path
)
shift
repo_path
=
"
${
1
:-}
"
[
-z
"
$repo_path
"
]
&&
__usage
;;
-s
|
--tools-source
|
-ToolsSource
)
shift
tools_source
=
"
${
1
:-}
"
[
-z
"
$tools_source
"
]
&&
__usage
;;
-u
|
--update
|
-Update
)
update
=
true
;;
--verbose
|
-Verbose
)
verbose
=
true
;;
--
)
shift
break
;;
*
)
break
;;
esac
shift
done
if
!
__machine_has unzip
;
then
__error
'Missing required command: unzip'
exit
1
fi
if
!
__machine_has curl
&&
!
__machine_has wget
;
then
__error
'Missing required command. Either wget or curl is required.'
exit
1
fi
if
[
-f
"
$config_file
"
]
;
then
comment
=
false
while
__read_dom
;
do
if
[
"
$comment
"
=
true
]
;
then
[[
$CONTENT
==
*
'-->'
*
]]
&&
comment
=
false
;
continue
;
fi
if
[[
$ENTITY
==
'!--'
*
]]
;
then
comment
=
true
;
continue
;
fi
if
[
-z
"
$channel
"
]
&&
[[
$ENTITY
==
"KoreBuildChannel"
]]
;
then
channel
=
$CONTENT
;
fi
if
[
-z
"
$tools_source
"
]
&&
[[
$ENTITY
==
"KoreBuildToolsSource"
]]
;
then
tools_source
=
$CONTENT
;
fi
done
<
"
$config_file
"
fi
[
-z
"
$channel
"
]
&&
channel
=
'dev'
[
-z
"
$tools_source
"
]
&&
tools_source
=
'https://aspnetcore.blob.core.windows.net/buildtools'
get_korebuild
# Call "sync" between "chmod" and execution to prevent "text file busy" error in Docker (aufs)
install_tools
"
$tools_source
"
"
$DOTNET_HOME
"
chmod
+x
"
$DIR
/run.sh"
;
sync
invoke_repository_build
"
$repo_path
"
"
$@
"
"
$DIR
/run.sh"
default-build
"
$@
"
此差异已折叠。
点击以展开。
run.cmd
0 → 100644
+
2
−
0
浏览文件 @
4561d402
@ECHO
OFF
PowerShell
-NoProfile -NoLogo -ExecutionPolicy
unrestricted
-Command
"[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';& '
%~dp0
run.ps1'
%
*; exit $LASTEXITCODE"
此差异已折叠。
点击以展开。
build
.ps1
→
run
.ps1
+
35
−
21
浏览文件 @
4561d402
...
@@ -3,10 +3,13 @@
...
@@ -3,10 +3,13 @@
<#
<#
.SYNOPSIS
.SYNOPSIS
Build this repository
Executes KoreBuild commands.
.DESCRIPTION
.DESCRIPTION
Downloads korebuild if required. Then builds the repository.
Downloads korebuild if required. Then executes the KoreBuild command. To see available commands, execute with `-Command help`.
.PARAMETER
Command
The KoreBuild command to run.
.PARAMETER
Path
.PARAMETER
Path
The folder to build. Defaults to the folder containing this script.
The folder to build. Defaults to the folder containing this script.
...
@@ -24,31 +27,32 @@ The base url where build tools can be downloaded. Overrides the value from the c
...
@@ -24,31 +27,32 @@ The base url where build tools can be downloaded. Overrides the value from the c
Updates KoreBuild to the latest version even if a lock file is present.
Updates KoreBuild to the latest version even if a lock file is present.
.PARAMETER
ConfigFile
.PARAMETER
ConfigFile
The path to the configuration file that stores values. Defaults to
version.xml
.
The path to the configuration file that stores values. Defaults to
korebuild.json
.
.PARAMETER
MSBuildArg
s
.PARAMETER
Argument
s
Arguments to be passed to
MSBuil
d
Arguments to be passed to
the comman
d
.NOTES
.NOTES
This function will create a file $PSScriptRoot/korebuild-lock.txt. This lock file can be committed to source, but does not have to be.
This function will create a file $PSScriptRoot/korebuild-lock.txt. This lock file can be committed to source, but does not have to be.
When the lockfile is not present, KoreBuild will create one using latest available version from $Channel.
When the lockfile is not present, KoreBuild will create one using latest available version from $Channel.
The $ConfigFile is expected to be an XML file. It is optional, and the configuration values in it are optional as well.
The $ConfigFile is expected to be an JSON file. It is optional, and the configuration values in it are optional as well. Any options set
in the file are overridden by command line parameters.
.EXAMPLE
.EXAMPLE
Example config file:
Example config file:
```xml
```json
<!-- version.xml -->
{
<Project>
"$schema": "https://raw.githubusercontent.com/aspnet/BuildTools/dev/tools/korebuild.schema.json",
<PropertyGroup>
"channel": "dev",
<KoreBuildChannel>dev</KoreBuildChannel>
"toolsSource": "https://aspnetcore.blob.core.windows.net/buildtools"
<KoreBuildToolsSource>https://aspnetcore.blob.core.windows.net/buildtools</KoreBuildToolsSource>
}
</PropertyGroup>
</Project>
```
```
#>
#>
[
CmdletBinding
(
PositionalBinding
=
$false
)]
[
CmdletBinding
(
PositionalBinding
=
$false
)]
param
(
param
(
[
Parameter
(
Mandatory
=
$true
,
Position
=
0
)]
[
string
]
$Command
,
[
string
]
$Path
=
$PSScriptRoot
,
[
string
]
$Path
=
$PSScriptRoot
,
[
Alias
(
'c'
)]
[
Alias
(
'c'
)]
[
string
]
$Channel
,
[
string
]
$Channel
,
...
@@ -58,9 +62,9 @@ param(
...
@@ -58,9 +62,9 @@ param(
[
string
]
$ToolsSource
,
[
string
]
$ToolsSource
,
[
Alias
(
'u'
)]
[
Alias
(
'u'
)]
[
switch
]
$Update
,
[
switch
]
$Update
,
[
string
]
$ConfigFile
=
(
Join-Path
$PSScriptRoot
'version.xml'
)
,
[
string
]
$ConfigFile
,
[
Parameter
(
ValueFromRemainingArguments
=
$true
)]
[
Parameter
(
ValueFromRemainingArguments
=
$true
)]
[
string
[]]
$
MSBuildArg
s
[
string
[]]
$
Argument
s
)
)
Set-StrictMode
-Version
2
Set-StrictMode
-Version
2
...
@@ -147,10 +151,20 @@ function Get-RemoteFile([string]$RemotePath, [string]$LocalPath) {
...
@@ -147,10 +151,20 @@ function Get-RemoteFile([string]$RemotePath, [string]$LocalPath) {
# Load configuration or set defaults
# Load configuration or set defaults
$Path
=
Resolve-Path
$Path
if
(
!
$ConfigFile
)
{
$ConfigFile
=
Join-Path
$Path
'korebuild.json'
}
if
(
Test-Path
$ConfigFile
)
{
if
(
Test-Path
$ConfigFile
)
{
[
xml
]
$config
=
Get-Content
$ConfigFile
try
{
if
(
!
(
$Channel
))
{
[
string
]
$Channel
=
Select-Xml
-Xml
$config
-XPath
'/Project/PropertyGroup/KoreBuildChannel'
}
$config
=
Get-Content
-Raw
-Encoding
UTF8
-Path
$ConfigFile
|
ConvertFrom-Json
if
(
!
(
$ToolsSource
))
{
[
string
]
$ToolsSource
=
Select-Xml
-Xml
$config
-XPath
'/Project/PropertyGroup/KoreBuildToolsSource'
}
if
(
$config
)
{
if
(
!
(
$Channel
)
-and
(
Get-Member
-Name
'channel'
-InputObject
$config
))
{
[
string
]
$Channel
=
$config
.
channel
}
if
(
!
(
$ToolsSource
)
-and
(
Get-Member
-Name
'toolsSource'
-InputObject
$config
))
{
[
string
]
$ToolsSource
=
$config
.
toolsSource
}
}
}
catch
{
Write-Warning
"
$ConfigFile
could not be read. Its settings will be ignored."
Write-Warning
$Error
[
0
]
}
}
}
if
(
!
$DotNetHome
)
{
if
(
!
$DotNetHome
)
{
...
@@ -169,8 +183,8 @@ $korebuildPath = Get-KoreBuild
...
@@ -169,8 +183,8 @@ $korebuildPath = Get-KoreBuild
Import-Module
-Force
-Scope
Local
(
Join-Path
$korebuildPath
'KoreBuild.psd1'
)
Import-Module
-Force
-Scope
Local
(
Join-Path
$korebuildPath
'KoreBuild.psd1'
)
try
{
try
{
Install-Tools
$ToolsSource
$DotNetHom
e
Set-KoreBuildSettings
-ToolsSource
$ToolsSource
-DotNetHome
$DotNetHome
-RepoPath
$Path
-ConfigFile
$ConfigFil
e
Invoke-
Reposit
or
y
Build
$Path
@
MSBuildArg
s
Invoke-
K
or
e
Build
Command
$Command
@
Argument
s
}
}
finally
{
finally
{
Remove-Module
'KoreBuild'
-ErrorAction
Ignore
Remove-Module
'KoreBuild'
-ErrorAction
Ignore
...
...
此差异已折叠。
点击以展开。
run.sh
0 → 100755
+
223
−
0
浏览文件 @
4561d402
#!/usr/bin/env bash
set
-euo
pipefail
#
# variables
#
RESET
=
"
\0
33[0m"
RED
=
"
\0
33[0;31m"
YELLOW
=
"
\0
33[0;33m"
MAGENTA
=
"
\0
33[0;95m"
DIR
=
"
$(
cd
"
$(
dirname
"
${
BASH_SOURCE
[0]
}
"
)
"
&&
pwd
)
"
[
-z
"
${
DOTNET_HOME
:-}
"
]
&&
DOTNET_HOME
=
"
$HOME
/.dotnet"
verbose
=
false
update
=
false
repo_path
=
"
$DIR
"
channel
=
''
tools_source
=
''
#
# Functions
#
__usage
()
{
echo
"Usage:
$(
basename
"
${
BASH_SOURCE
[0]
}
"
)
command [options] [[--] <Arguments>...]"
echo
""
echo
"Arguments:"
echo
" command The command to be run."
echo
" <Arguments>... Arguments passed to the command. Variable number of arguments allowed."
echo
""
echo
"Options:"
echo
" --verbose Show verbose output."
echo
" -c|--channel <CHANNEL> The channel of KoreBuild to download. Overrides the value from the config file.."
echo
" --config-file <FILE> The path to the configuration file that stores values. Defaults to korebuild.json."
echo
" -d|--dotnet-home <DIR> The directory where .NET Core tools will be stored. Defaults to '
\$
DOTNET_HOME' or '
\$
HOME/.dotnet."
echo
" --path <PATH> The directory to build. Defaults to the directory containing the script."
echo
" -s|--tools-source|-ToolsSource <URL> The base url where build tools can be downloaded. Overrides the value from the config file."
echo
" -u|--update Update to the latest KoreBuild even if the lock file is present."
echo
""
echo
"Description:"
echo
" This function will create a file
\$
DIR/korebuild-lock.txt. This lock file can be committed to source, but does not have to be."
echo
" When the lockfile is not present, KoreBuild will create one using latest available version from
\$
channel."
if
[[
"
${
1
:-}
"
!=
'--no-exit'
]]
;
then
exit
2
fi
}
get_korebuild
()
{
local
version
local
lock_file
=
"
$repo_path
/korebuild-lock.txt"
if
[
!
-f
"
$lock_file
"
]
||
[
"
$update
"
=
true
]
;
then
__get_remote_file
"
$tools_source
/korebuild/channels/
$channel
/latest.txt"
"
$lock_file
"
fi
version
=
"
$(
grep
'version:*'
-m
1
"
$lock_file
"
)
"
if
[[
"
$version
"
==
''
]]
;
then
__error
"Failed to parse version from
$lock_file
. Expected a line that begins with 'version:'"
return
1
fi
version
=
"
$(
echo
"
${
version
#version
:
}
"
|
sed
-e
's/^[[:space:]]*//'
-e
's/[[:space:]]*$//'
)
"
local
korebuild_path
=
"
$DOTNET_HOME
/buildtools/korebuild/
$version
"
{
if
[
!
-d
"
$korebuild_path
"
]
;
then
mkdir
-p
"
$korebuild_path
"
local
remote_path
=
"
$tools_source
/korebuild/artifacts/
$version
/korebuild.
$version
.zip"
tmpfile
=
"
$(
mktemp
)
"
echo
-e
"
${
MAGENTA
}
Downloading KoreBuild
${
version
}${
RESET
}
"
if
__get_remote_file
"
$remote_path
"
"
$tmpfile
"
;
then
unzip
-q
-d
"
$korebuild_path
"
"
$tmpfile
"
fi
rm
"
$tmpfile
"
||
true
fi
source
"
$korebuild_path
/KoreBuild.sh"
}
||
{
if
[
-d
"
$korebuild_path
"
]
;
then
echo
"Cleaning up after failed installation"
rm
-rf
"
$korebuild_path
"
||
true
fi
return
1
}
}
__error
()
{
echo
-e
"
${
RED
}
error:
$*
${
RESET
}
"
1>&2
}
__warn
()
{
echo
-e
"
${
YELLOW
}
warning:
$*
${
RESET
}
"
}
__machine_has
()
{
hash
"
$1
"
>
/dev/null 2>&1
return
$?
}
__get_remote_file
()
{
local
remote_path
=
$1
local
local_path
=
$2
if
[[
"
$remote_path
"
!=
'http'
*
]]
;
then
cp
"
$remote_path
"
"
$local_path
"
return
0
fi
local
failed
=
false
if
__machine_has wget
;
then
wget
--tries
10
--quiet
-O
"
$local_path
"
"
$remote_path
"
||
failed
=
true
else
failed
=
true
fi
if
[
"
$failed
"
=
true
]
&&
__machine_has curl
;
then
failed
=
false
curl
--retry
10
-sSL
-f
--create-dirs
-o
"
$local_path
"
"
$remote_path
"
||
failed
=
true
fi
if
[
"
$failed
"
=
true
]
;
then
__error
"Download failed:
$remote_path
"
1>&2
return
1
fi
}
#
# main
#
command
=
"
${
1
:-}
"
shift
while
[[
$#
-gt
0
]]
;
do
case
$1
in
-
\?
|
-h
|
--help
)
__usage
--no-exit
exit
0
;;
-c
|
--channel
|
-Channel
)
shift
channel
=
"
${
1
:-}
"
[
-z
"
$channel
"
]
&&
__usage
;;
--config-file
|
-ConfigFile
)
shift
config_file
=
"
${
1
:-}
"
[
-z
"
$config_file
"
]
&&
__usage
if
[
!
-f
"
$config_file
"
]
;
then
__error
"Invalid value for --config-file.
$config_file
does not exist."
exit
1
fi
;;
-d
|
--dotnet-home
|
-DotNetHome
)
shift
DOTNET_HOME
=
"
${
1
:-}
"
[
-z
"
$DOTNET_HOME
"
]
&&
__usage
;;
--path
|
-Path
)
shift
repo_path
=
"
${
1
:-}
"
[
-z
"
$repo_path
"
]
&&
__usage
;;
-s
|
--tools-source
|
-ToolsSource
)
shift
tools_source
=
"
${
1
:-}
"
[
-z
"
$tools_source
"
]
&&
__usage
;;
-u
|
--update
|
-Update
)
update
=
true
;;
--verbose
|
-Verbose
)
verbose
=
true
;;
--
)
shift
break
;;
*
)
break
;;
esac
shift
done
if
!
__machine_has unzip
;
then
__error
'Missing required command: unzip'
exit
1
fi
if
!
__machine_has curl
&&
!
__machine_has wget
;
then
__error
'Missing required command. Either wget or curl is required.'
exit
1
fi
[
-z
"
${
config_file
:-}
"
]
&&
config_file
=
"
$repo_path
/korebuild.json"
if
[
-f
"
$config_file
"
]
;
then
if
__machine_has jq
;
then
if
jq
'.'
"
$config_file
"
>
/dev/null
;
then
config_channel
=
"
$(
jq
-r
'select(.channel!=null) | .channel'
"
$config_file
"
)
"
config_tools_source
=
"
$(
jq
-r
'select(.toolsSource!=null) | .toolsSource'
"
$config_file
"
)
"
else
__warn
"
$config_file
is invalid JSON. Its settings will be ignored."
fi
elif
__machine_has python
;
then
if
python
-c
"import json,codecs;obj=json.load(codecs.open('
$config_file
', 'r', 'utf-8-sig'))"
>
/dev/null
;
then
config_channel
=
"
$(
python
-c
"import json,codecs;obj=json.load(codecs.open('
$config_file
', 'r', 'utf-8-sig'));print(obj['channel'] if 'channel' in obj else '')"
)
"
config_tools_source
=
"
$(
python
-c
"import json,codecs;obj=json.load(codecs.open('
$config_file
', 'r', 'utf-8-sig'));print(obj['toolsSource'] if 'toolsSource' in obj else '')"
)
"
else
__warn
"
$config_file
is invalid JSON. Its settings will be ignored."
fi
else
__warn
'Missing required command: jq or pyton. Could not parse the JSON file. Its settings will be ignored.'
fi
[
!
-z
"
${
config_channel
:-}
"
]
&&
channel
=
"
$config_channel
"
[
!
-z
"
${
config_tools_source
:-}
"
]
&&
tools_source
=
"
$config_tools_source
"
fi
[
-z
"
$channel
"
]
&&
channel
=
'dev'
[
-z
"
$tools_source
"
]
&&
tools_source
=
'https://aspnetcore.blob.core.windows.net/buildtools'
get_korebuild
set_korebuildsettings
"
$tools_source
"
"
$DOTNET_HOME
"
"
$repo_path
"
"
$config_file
"
invoke_korebuild_command
"
$command
"
"
$@
"
此差异已折叠。
点击以展开。
预览
0%
加载中
请重试
或
添加新附件
.
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
保存评论
取消
想要评论请
注册
或
登录