From 7673c4e90f9aa474bde85f1286de5223b9001548 Mon Sep 17 00:00:00 2001 From: Andrew Schwartzmeyer Date: Fri, 4 Mar 2016 12:11:01 -0800 Subject: [PATCH] Add Microsoft.PowerShell.Platform module - Exports the IsCore, IsLinux, IsOSX, and IsWindows variables - Imported by the default PSL profile - Can be used automatically in Pester tests and Open PowerShell sessions - Should maybe become a default module once it is polished - PowerShellGitHubDev module does not explicitly use it because on FullCLR PowerShell (normal Windows development) it will not be imported automatically --- PowerShellGitHubDev.psm1 | 31 ++++++++++-------- .../Microsoft.PowerShell.Platform.psd1 | Bin 0 -> 6700 bytes .../Microsoft.PowerShell.Platform.psm1 | 18 ++++++++++ .../PSL_profile.ps1 | 2 ++ 4 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 src/Microsoft.PowerShell.Linux.Host/Modules/Microsoft.PowerShell.Platform/Microsoft.PowerShell.Platform.psd1 create mode 100644 src/Microsoft.PowerShell.Linux.Host/Modules/Microsoft.PowerShell.Platform/Microsoft.PowerShell.Platform.psm1 diff --git a/PowerShellGitHubDev.psm1 b/PowerShellGitHubDev.psm1 index 33b6a6540b..0f28bb92b6 100644 --- a/PowerShellGitHubDev.psm1 +++ b/PowerShellGitHubDev.psm1 @@ -1,17 +1,20 @@ # Use the .NET Core APIs to determine the current platform; if a runtime # exception is thrown, we are on FullCLR, not .NET Core. # -# TODO: use PowerShell to check OS when available +# TODO: import Microsoft.PowerShell.Platform instead try { $Runtime = [System.Runtime.InteropServices.RuntimeInformation] $OSPlatform = [System.Runtime.InteropServices.OSPlatform] - $Linux = $Runtime::IsOSPlatform($OSPlatform::Linux) - $OSX = $Runtime::IsOSPlatform($OSPlatform::OSX) - $Windows = $Runtime::IsOSPlatform($OSPlatform::Windows) + + $IsCore = $true + $IsLinux = $Runtime::IsOSPlatform($OSPlatform::Linux) + $IsOSX = $Runtime::IsOSPlatform($OSPlatform::OSX) + $IsWindows = $Runtime::IsOSPlatform($OSPlatform::Windows) } catch [System.Management.Automation.RuntimeException] { - $Linux = $false - $OSX = $false - $Windows = $true + $IsCore = $false + $IsLinux = $false + $IsOSX = $false + $IsWindows = $true } function Start-PSBuild @@ -32,15 +35,15 @@ function Start-PSBuild dotnet restore $PSScriptRoot } - if ($Linux -Or $OSX) { - $InstallCommand = if ($Linux) { "apt-get" } elseif ($OSX) { "brew" } + if ($IsLinux -Or $IsOSX) { + $InstallCommand = if ($IsLinux) { "apt-get" } elseif ($IsOSX) { "brew" } foreach ($Dependency in "cmake", "g++") { if (-Not (Get-Command $Dependency -ErrorAction SilentlyContinue)) { throw "Build dependency '$Dependency' not found in PATH! Run '$InstallCommand install $Dependency'" } } - $Ext = if ($Linux) { "so" } elseif ($OSX) { "dylib" } + $Ext = if ($IsLinux) { "so" } elseif ($IsOSX) { "dylib" } $Native = "$PSScriptRoot/src/libpsl-native" $Lib = "$Native/src/libpsl-native.$Ext" Write-Host "Building $Lib" @@ -61,8 +64,8 @@ function Start-PSBuild Write-Host "Building PowerShell" $Configuration = - if ($Linux -Or $OSX) { "Linux" } - elseif ($Windows) { "Debug" } + if ($IsLinux -Or $IsOSX) { "Linux" } + elseif ($IsWindows) { "Debug" } dotnet publish -o $Output -c $Configuration -f "netstandardapp1.5" $Top } @@ -77,7 +80,7 @@ function Start-PSPackage [int]$Iteration = 1 ) - if ($Windows) { throw "Building Windows packages is not yet supported!" } + if ($IsWindows) { throw "Building Windows packages is not yet supported!" } if (-Not (Get-Command "fpm" -ErrorAction SilentlyContinue)) { throw "Build dependency 'fpm' not found in PATH! See: https://github.com/jordansissel/fpm" @@ -91,7 +94,7 @@ function Start-PSPackage chmod -R go=u "$PSScriptRoot/bin" # Decide package output type - $Output = if ($Linux) { "deb" } elseif ($OSX) { "osxpkg" } + $Output = if ($IsLinux) { "deb" } elseif ($IsOSX) { "osxpkg" } # Use Git tag if not given a version if (-Not($Version)) { diff --git a/src/Microsoft.PowerShell.Linux.Host/Modules/Microsoft.PowerShell.Platform/Microsoft.PowerShell.Platform.psd1 b/src/Microsoft.PowerShell.Linux.Host/Modules/Microsoft.PowerShell.Platform/Microsoft.PowerShell.Platform.psd1 new file mode 100644 index 0000000000000000000000000000000000000000..29fc928a0522e0dae721cfc1553eda8d914ae826 GIT binary patch literal 6700 zcmchcT~Av_5Qg`fUvVTZAXOm{Xqr~46bpw0i6)2w&8_iQ-5N}76G*H4^|tS`<7Ib! z&H>kj3W3k@&d$8^J-ht<*Q#4_tFCZAx{>R+Yd3UVyNm7r5=X=WbWO+wSFT$BKLH{?xPW zh5uMOU5Pt(NVPQ!oNM*c%l}-W=xNO?*pfZ4NL$}Too@6t75>8i9f+cA>rEj!*3OY= zai=T#O=&fePTSu0rtg`z-9)&sP@&&zQJnj43w_s{!y4@Y&J^D~Cqug}&u=C2 z4qQ_luZ6?BJe3UIiMHSMNwi?sfqYI(O!d_B-(a_3v4~>Dy>+L~xSGVCeB70HcO-X9 zw%>5yNS_zddPAPy@hcndm3~@!-tbgg?pwe1%CGP0?YjhXL%5J`{=d&AD~i^X)(|Zk z!DNJaWlyp$jLmvJKHGOTX-NusjAyRIcO=dhuc2<``JF~I5N@sRx& z)21qyH{E;p#+}IT`-%~(Q8%*Q*!{L-{4}+DDz07qE%SUFO{i?dcU!V9^kbcqtR(uc z_1X99V_!F@q*i;^Rbvm;+o^HO#G37XNQWcwX6~TsF@Z3(F)cASQMI~ynhF^R3b!s> zfxqj%*4syQ#h3o6AN>SI5m%HiP?cCW)$WG`XpM0xsj@7 zQ$_Go-`Bu%aiBX;qo~(d>C$_~`WBU(+K0Vtf65!KeZNvYg{*4rSiIAEmrh4$ftIgj z@n?5^zTth;6^e6V8)*Oi+EU9~zOqwIA0Kfwo-*!yN)A&m*w@uxnKHM1+(f?-fz}h4 z_3#^igNNGQH%!iBb!YfIg_oFE@l%R^qUtkJ2TgOP%2Oxm_Vi_Xvd#Fpwzu-(aHca8 ztwm?=RN!!S zWi_7y(p4r_yvV5xKiYna#bfQ8KXX0LPB`UAv3R1}1T^zHlyhg_cZE1jg4i_ex?7>M zT1K1^lT2o0N!7`x%n5{VGA>qGze;A_J@M=)R_Tz-%g(thBKJ(bqr$d)tqYZoT=}

<5vo6&zz&G?wukdp?QaIRS1hB=oy9a7&l zg=0@zP)q6UbaCtS%f`^ExHZMA?Ymdbvl>y}!LXP0W6L^vEL}FuIxNIlwymkoW+S>+ z^<7BJWXr8IpQ5aCR>id(M_R3y#jr0O$(JajET0ZC&|G1sVNPE>wWQ}%elq=;$HIH) ze5sutyE<_uK1pgv%b!^B5Pr7#mD#5y62*R9Stf&!`vjkWAIMoM{qn8S3<|#zHnkE~g%QxL>lfc|a3B??=V7VsXgb z@wu?sX(ir*M0`xXBloN5=%aPkvZ*dmEsv0M9TO{_d$Xm+EPe3(@QEWuqjS!(wRyw&5Neuj8EP<;&(<3={C7P=`U{^10E VVz8_uvk^BKrb|knTjz^*{{w&6UE}}& literal 0 HcmV?d00001 diff --git a/src/Microsoft.PowerShell.Linux.Host/Modules/Microsoft.PowerShell.Platform/Microsoft.PowerShell.Platform.psm1 b/src/Microsoft.PowerShell.Linux.Host/Modules/Microsoft.PowerShell.Platform/Microsoft.PowerShell.Platform.psm1 new file mode 100644 index 0000000000..ae96168749 --- /dev/null +++ b/src/Microsoft.PowerShell.Linux.Host/Modules/Microsoft.PowerShell.Platform/Microsoft.PowerShell.Platform.psm1 @@ -0,0 +1,18 @@ +# Use the .NET Core APIs to determine the current platform; if a runtime +# exception is thrown, we are on FullCLR, not .NET Core. +try { + $Runtime = [System.Runtime.InteropServices.RuntimeInformation] + $OSPlatform = [System.Runtime.InteropServices.OSPlatform] + + $IsCore = $true + $IsLinux = $Runtime::IsOSPlatform($OSPlatform::Linux) + $IsOSX = $Runtime::IsOSPlatform($OSPlatform::OSX) + $IsWindows = $Runtime::IsOSPlatform($OSPlatform::Windows) +} catch [System.Management.Automation.RuntimeException] { + $IsCore = $false + $IsLinux = $false + $IsOSX = $false + $IsWindows = $true +} + +Export-ModuleMember -Variable IsCore, IsLinux, IsOSX, IsWindows diff --git a/src/Microsoft.PowerShell.Linux.Host/PSL_profile.ps1 b/src/Microsoft.PowerShell.Linux.Host/PSL_profile.ps1 index de4c4f2da7..959f832bac 100644 --- a/src/Microsoft.PowerShell.Linux.Host/PSL_profile.ps1 +++ b/src/Microsoft.PowerShell.Linux.Host/PSL_profile.ps1 @@ -1,3 +1,5 @@ function prompt { "PS " + $(get-location) + "> " } + +Import-Module Microsoft.PowerShell.Platform