@ -148,7 +148,7 @@ get_linux_platform_name() {
return 0
return 0
elif [ -e /etc/redhat-release ] ; then
elif [ -e /etc/redhat-release ] ; then
local redhatRelease = $( </etc/redhat-release)
local redhatRelease = $( </etc/redhat-release)
if [ [ $redhatRelease = = "CentOS release 6." * || $redhatRelease = = "Red Hat Enterprise Linux Server release 6."* ] ] ; then
if [ [ $redhatRelease = = "CentOS release 6." * || $redhatRelease = = "Red Hat Enterprise Linux "*" release 6."* ] ] ; then
echo "rhel.6"
echo "rhel.6"
return 0
return 0
fi
fi
@ -435,11 +435,52 @@ get_latest_version_info() {
return $?
return $?
}
}
# args:
# json_file - $1
parse_jsonfile_for_version( ) {
eval $invocation
local json_file = " $1 "
if [ ! -f " $json_file " ] ; then
say_err " Unable to find \` $json_file \` "
return 1
fi
sdk_section = $( cat $json_file | awk '/"sdk"/,/}/' )
if [ -z " $sdk_section " ] ; then
say_err " Unable to parse the SDK node in \` $json_file \` "
return 1
fi
sdk_list = $( echo $sdk_section | awk -F"[{}]" '{print $2}' )
sdk_list = ${ sdk_list //[ \" ]/ }
sdk_list = ${ sdk_list //,/ $'\n' }
sdk_list = " $( echo -e " ${ sdk_list } " | tr -d '[[:space:]]' ) "
local version_info = ""
while read -r line; do
IFS = :
while read -r key value; do
if [ [ " $key " = = "version" ] ] ; then
version_info = $value
fi
done <<< " $line "
done <<< " $sdk_list "
if [ -z " $version_info " ] ; then
say_err " Unable to find the SDK:version node in \` $json_file \` "
return 1
fi
echo " $version_info "
return 0
}
# args:
# args:
# azure_feed - $1
# azure_feed - $1
# channel - $2
# channel - $2
# normalized_architecture - $3
# normalized_architecture - $3
# version - $4
# version - $4
# json_file - $5
get_specific_version_from_version( ) {
get_specific_version_from_version( ) {
eval $invocation
eval $invocation
@ -447,27 +488,35 @@ get_specific_version_from_version() {
local channel = " $2 "
local channel = " $2 "
local normalized_architecture = " $3 "
local normalized_architecture = " $3 "
local version = " $( to_lowercase " $4 " ) "
local version = " $( to_lowercase " $4 " ) "
local json_file = " $5 "
case " $version " in
latest)
if [ -z " $json_file " ] ; then
local version_info
case " $version " in
version_info = " $( get_latest_version_info " $azure_feed " " $channel " " $normalized_architecture " false ) " || return 1
latest)
say_verbose " get_specific_version_from_version: version_info= $version_info "
local version_info
echo " $version_info " | get_version_from_version_info
version_info = " $( get_latest_version_info " $azure_feed " " $channel " " $normalized_architecture " false ) " || return 1
return 0
say_verbose " get_specific_version_from_version: version_info= $version_info "
; ;
echo " $version_info " | get_version_from_version_info
coherent)
return 0
local version_info
; ;
version_info = " $( get_latest_version_info " $azure_feed " " $channel " " $normalized_architecture " true ) " || return 1
coherent)
say_verbose " get_specific_version_from_version: version_info= $version_info "
local version_info
echo " $version_info " | get_version_from_version_info
version_info = " $( get_latest_version_info " $azure_feed " " $channel " " $normalized_architecture " true ) " || return 1
return 0
say_verbose " get_specific_version_from_version: version_info= $version_info "
; ;
echo " $version_info " | get_version_from_version_info
*)
return 0
echo " $version "
; ;
return 0
*)
; ;
echo " $version "
esac
return 0
; ;
esac
else
local version_info
version_info = " $( parse_jsonfile_for_version " $json_file " ) " || return 1
echo " $version_info "
return 0
fi
}
}
# args:
# args:
@ -558,24 +607,6 @@ resolve_installation_path() {
return 0
return 0
}
}
# args:
# install_root - $1
get_installed_version_info( ) {
eval $invocation
local install_root = " $1 "
local version_file = " $( combine_paths " $install_root " " $local_version_file_relative_path " ) "
say_verbose " Local version file: $version_file "
if [ ! -z " $version_file " ] | [ -r " $version_file " ] ; then
local version_info = " $( cat " $version_file " ) "
echo " $version_info "
return 0
fi
say_verbose "Local version file not found."
return 0
}
# args:
# args:
# relative_or_absolute_path - $1
# relative_or_absolute_path - $1
get_absolute_path( ) {
get_absolute_path( ) {
@ -612,6 +643,9 @@ copy_files_or_dirs_from_list() {
local target = " $out_path / $path "
local target = " $out_path / $path "
if [ " $override " = true ] || ( ! ( [ -d " $target " ] || [ -e " $target " ] ) ) ; then
if [ " $override " = true ] || ( ! ( [ -d " $target " ] || [ -e " $target " ] ) ) ; then
mkdir -p " $out_path / $( dirname " $path " ) "
mkdir -p " $out_path / $( dirname " $path " ) "
if [ -d " $target " ] ; then
rm -rf " $target "
fi
cp -R $override_switch " $root_path / $path " " $target "
cp -R $override_switch " $root_path / $path " " $target "
fi
fi
done
done
@ -721,7 +755,7 @@ calculate_vars() {
normalized_architecture = " $( get_normalized_architecture_from_architecture " $architecture " ) "
normalized_architecture = " $( get_normalized_architecture_from_architecture " $architecture " ) "
say_verbose " normalized_architecture= $normalized_architecture "
say_verbose " normalized_architecture= $normalized_architecture "
specific_version = " $( get_specific_version_from_version " $azure_feed " " $channel " " $normalized_architecture " " $version " ) "
specific_version = " $( get_specific_version_from_version " $azure_feed " " $channel " " $normalized_architecture " " $version " " $json_file " ) "
say_verbose " specific_version= $specific_version "
say_verbose " specific_version= $specific_version "
if [ -z " $specific_version " ] ; then
if [ -z " $specific_version " ] ; then
say_err "Could not resolve version information."
say_err "Could not resolve version information."
@ -823,6 +857,7 @@ temporary_file_template="${TMPDIR:-/tmp}/dotnet.XXXXXXXXX"
channel = "LTS"
channel = "LTS"
version = "Latest"
version = "Latest"
json_file = ""
install_dir = "<auto>"
install_dir = "<auto>"
architecture = "<auto>"
architecture = "<auto>"
dry_run = false
dry_run = false
@ -868,6 +903,9 @@ do
runtime = " $1 "
runtime = " $1 "
if [ [ " $runtime " != "dotnet" ] ] && [ [ " $runtime " != "aspnetcore" ] ] ; then
if [ [ " $runtime " != "dotnet" ] ] && [ [ " $runtime " != "aspnetcore" ] ] ; then
say_err " Unsupported value for --runtime: ' $1 '. Valid values are 'dotnet' and 'aspnetcore'. "
say_err " Unsupported value for --runtime: ' $1 '. Valid values are 'dotnet' and 'aspnetcore'. "
if [ [ " $runtime " = = "windowsdesktop" ] ] ; then
say_err "WindowsDesktop archives are manufactured for Windows platforms only."
fi
exit 1
exit 1
fi
fi
; ;
; ;
@ -906,6 +944,10 @@ do
runtime_id = " $1 "
runtime_id = " $1 "
non_dynamic_parameters += " $name " \" " $1 " \" ""
non_dynamic_parameters += " $name " \" " $1 " \" ""
; ;
; ;
--jsonfile| -[ Jj] [ Ss] on[ Ff] ile)
shift
json_file = " $1 "
; ;
--skip-non-versioned-files| -[ Ss] kip[ Nn] on[ Vv] ersioned[ Ff] iles)
--skip-non-versioned-files| -[ Ss] kip[ Nn] on[ Vv] ersioned[ Ff] iles)
override_non_versioned_files = false
override_non_versioned_files = false
non_dynamic_parameters += " $name "
non_dynamic_parameters += " $name "
@ -947,22 +989,25 @@ do
echo " Possible values:"
echo " Possible values:"
echo " - dotnet - the Microsoft.NETCore.App shared runtime"
echo " - dotnet - the Microsoft.NETCore.App shared runtime"
echo " - aspnetcore - the Microsoft.AspNetCore.App shared runtime"
echo " - aspnetcore - the Microsoft.AspNetCore.App shared runtime"
echo " --skip-non-versioned-files Skips non-versioned files if they already exist, such as the dotnet executable."
echo " -SkipNonVersionedFiles"
echo " --dry-run,-DryRun Do not perform installation. Display download link."
echo " --dry-run,-DryRun Do not perform installation. Display download link."
echo " --no-path, -NoPath Do not set PATH for the current process."
echo " --no-path, -NoPath Do not set PATH for the current process."
echo " --verbose,-Verbose Display diagnostics information."
echo " --verbose,-Verbose Display diagnostics information."
echo " --azure-feed,-AzureFeed Azure feed location. Defaults to $azure_feed , This parameter typically is not changed by the user. "
echo " --azure-feed,-AzureFeed Azure feed location. Defaults to $azure_feed , This parameter typically is not changed by the user. "
echo " --uncached-feed,-UncachedFeed Uncached feed location. This parameter typically is not changed by the user."
echo " --uncached-feed,-UncachedFeed Uncached feed location. This parameter typically is not changed by the user."
echo " --no-cdn,-NoCdn Disable downloading from the Azure CDN, and use the uncached feed directly."
echo " --feed-credential,-FeedCredential Azure feed shared access token. This parameter typically is not specified."
echo " --feed-credential,-FeedCredential Azure feed shared access token. This parameter typically is not specified."
echo " --skip-non-versioned-files Skips non-versioned files if they already exist, such as the dotnet executable."
echo " -SkipNonVersionedFiles"
echo " --no-cdn,-NoCdn Disable downloading from the Azure CDN, and use the uncached feed directly."
echo " --jsonfile <JSONFILE> Determines the SDK version from a user specified global.json file."
echo " Note: global.json must have a value for 'SDK:Version'"
echo " --runtime-id Installs the .NET Tools for the given platform (use linux-x64 for portable linux)."
echo " --runtime-id Installs the .NET Tools for the given platform (use linux-x64 for portable linux)."
echo " -RuntimeId"
echo " -RuntimeId"
echo " -?,--?,-h,--help,-Help Shows this help message"
echo " -?,--?,-h,--help,-Help Shows this help message"
echo ""
echo ""
echo "Obsolete parameters:"
echo "Obsolete parameters:"
echo " --shared-runtime The recommended alternative is '--runtime dotnet'."
echo " --shared-runtime The recommended alternative is '--runtime dotnet'."
echo " -SharedRuntime Installs just the shared runtime bits, not the entire SDK."
echo " This parameter is obsolete and may be removed in a future version of this script."
echo " Installs just the shared runtime bits, not the entire SDK."
echo ""
echo ""
echo "Install Location:"
echo "Install Location:"
echo " Location is chosen in following order:"
echo " Location is chosen in following order:"