From 875402ad53d84c7bb5072097adeafebc5a727ca5 Mon Sep 17 00:00:00 2001 From: Sergei Vorobev Date: Thu, 21 Jul 2016 18:47:46 -0700 Subject: [PATCH] Create separate Top-level directory per platform - Replace src\powershell top level project by two new root-level projects: - src\powershell-unix - src\powershell-windows - Break src\Modules into more granular structure: - Shared - Windows+Unix-Core - Windows-Core - Windows-Core+Full - Windows-Full - To be created: Unix-Core. We will do it as a separate PR - Fix #1122 : Platform-specific set of Modules (and assemblies) - Fix Start-TypeGen to work with new top level folders layout --- build.psm1 | 25 ++++-- .../project.json | 28 ++++--- src/Modules/README.md | 15 ++-- .../Microsoft.PowerShell.Management.psd1 | 0 .../Microsoft.PowerShell.Security.psd1 | 0 .../Microsoft.PowerShell.Utility.psd1 | 0 .../CimCmdlets/CimCmdlets.psd1 | 0 .../LocalAccounts.format.ps1xml | 0 .../Microsoft.PowerShell.LocalAccounts.psd1 | 0 .../Microsoft.WSMan.Management.psd1 | 0 .../WSMan.format.ps1xml | 0 .../PSDiagnostics/PSDiagnostics.psd1 | 0 .../PSDiagnostics/PSDiagnostics.psm1 | 0 .../Microsoft.PowerShell.Diagnostics.psd1 | 0 .../Diagnostics.format.ps1xml | 0 .../Event.format.ps1xml | 0 .../GetEvent.types.ps1xml | 0 .../Microsoft.PowerShell.Diagnostics.psd1 | 0 .../Microsoft.PowerShell.Management.psd1 | 0 .../Microsoft.PowerShell.Security.psd1 | 0 .../Microsoft.PowerShell.Utility.psd1 | 0 .../PSScheduledJob.Format.ps1xml | 0 .../PSScheduledJob/PSScheduledJob.psd1 | 0 .../PSScheduledJob.types.ps1xml | 0 .../PSWorkflow/PSWorkflow.psd1 | 0 .../PSWorkflow/PSWorkflow.psm1 | 0 .../PSWorkflow/PSWorkflow.types.ps1xml | 0 .../PSWorkflowUtility/PSWorkflowUtility.psd1 | 0 .../PSWorkflowUtility/PSWorkflowUtility.psm1 | 0 src/Modules/map.json | 54 +++++++------ src/TypeCatalogParser/Main.cs | 9 ++- .../project.json | 18 +++-- src/powershell-windows/project.json | 81 +++++++++++++++++++ src/powershell/README.md | 5 +- test/csharp/project.json | 3 +- 35 files changed, 172 insertions(+), 66 deletions(-) rename src/Modules/{Core => Windows+Unix-Core}/Microsoft.PowerShell.Management/Microsoft.PowerShell.Management.psd1 (100%) rename src/Modules/{Core => Windows+Unix-Core}/Microsoft.PowerShell.Security/Microsoft.PowerShell.Security.psd1 (100%) rename src/Modules/{Core => Windows+Unix-Core}/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1 (100%) rename src/Modules/{Shared => Windows-Core+Full}/CimCmdlets/CimCmdlets.psd1 (100%) rename src/Modules/{Shared => Windows-Core+Full}/Microsoft.PowerShell.LocalAccounts/LocalAccounts.format.ps1xml (100%) rename src/Modules/{Shared => Windows-Core+Full}/Microsoft.PowerShell.LocalAccounts/Microsoft.PowerShell.LocalAccounts.psd1 (100%) rename src/Modules/{Shared => Windows-Core+Full}/Microsoft.WSMan.Management/Microsoft.WSMan.Management.psd1 (100%) rename src/Modules/{Shared => Windows-Core+Full}/Microsoft.WSMan.Management/WSMan.format.ps1xml (100%) rename src/Modules/{Shared => Windows-Core+Full}/PSDiagnostics/PSDiagnostics.psd1 (100%) rename src/Modules/{Shared => Windows-Core+Full}/PSDiagnostics/PSDiagnostics.psm1 (100%) rename src/Modules/{Core => Windows-Core}/Microsoft.PowerShell.Diagnostics/Microsoft.PowerShell.Diagnostics.psd1 (100%) rename src/Modules/{Full => Windows-Full}/Microsoft.PowerShell.Diagnostics/Diagnostics.format.ps1xml (100%) rename src/Modules/{Full => Windows-Full}/Microsoft.PowerShell.Diagnostics/Event.format.ps1xml (100%) rename src/Modules/{Full => Windows-Full}/Microsoft.PowerShell.Diagnostics/GetEvent.types.ps1xml (100%) rename src/Modules/{Full => Windows-Full}/Microsoft.PowerShell.Diagnostics/Microsoft.PowerShell.Diagnostics.psd1 (100%) rename src/Modules/{Full => Windows-Full}/Microsoft.PowerShell.Management/Microsoft.PowerShell.Management.psd1 (100%) rename src/Modules/{Full => Windows-Full}/Microsoft.PowerShell.Security/Microsoft.PowerShell.Security.psd1 (100%) rename src/Modules/{Full => Windows-Full}/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1 (100%) rename src/Modules/{Full => Windows-Full}/PSScheduledJob/PSScheduledJob.Format.ps1xml (100%) rename src/Modules/{Full => Windows-Full}/PSScheduledJob/PSScheduledJob.psd1 (100%) rename src/Modules/{Full => Windows-Full}/PSScheduledJob/PSScheduledJob.types.ps1xml (100%) rename src/Modules/{Full => Windows-Full}/PSWorkflow/PSWorkflow.psd1 (100%) rename src/Modules/{Full => Windows-Full}/PSWorkflow/PSWorkflow.psm1 (100%) rename src/Modules/{Full => Windows-Full}/PSWorkflow/PSWorkflow.types.ps1xml (100%) rename src/Modules/{Full => Windows-Full}/PSWorkflowUtility/PSWorkflowUtility.psd1 (100%) rename src/Modules/{Full => Windows-Full}/PSWorkflowUtility/PSWorkflowUtility.psm1 (100%) rename src/{powershell => powershell-unix}/project.json (76%) create mode 100644 src/powershell-windows/project.json diff --git a/build.psm1 b/build.psm1 index dc356337c5..922cc92239 100644 --- a/build.psm1 +++ b/build.psm1 @@ -346,13 +346,6 @@ function New-PSOptions { # Add .NET CLI tools to PATH Find-Dotnet - if ($FullCLR) { - $Top = "$PSScriptRoot/src/Microsoft.PowerShell.ConsoleHost" - } else { - $Top = "$PSScriptRoot/src/powershell" - } - Write-Verbose "Top project directory is $Top" - if (-not $Configuration) { $Configuration = if ($IsLinux -or $IsOSX) { "Linux" @@ -362,6 +355,21 @@ function New-PSOptions { Write-Verbose "Using configuration '$Configuration'" } + if ($FullCLR) { + $Top = "$PSScriptRoot/src/Microsoft.PowerShell.ConsoleHost" + } else { + if ($Configuration -eq 'Linux') + { + $Top = "$PSScriptRoot/src/powershell-unix" + } + else + { + $Top = "$PSScriptRoot/src/powershell-windows" + } + } + Write-Verbose "Top project directory is $Top" + + if (-not $Framework) { $Framework = if ($FullCLR) { "net451" @@ -1072,7 +1080,8 @@ function Start-TypeGen Push-Location "$PSScriptRoot/src/TypeCatalogParser" try { - dotnet run + $topPath = if ($IsWindows) {'../powershell-windows'} else {'../powershell-unix'} + dotnet run $topPath } finally { diff --git a/src/Microsoft.PowerShell.ConsoleHost/project.json b/src/Microsoft.PowerShell.ConsoleHost/project.json index 14c5c49b68..a4514e0ae2 100644 --- a/src/Microsoft.PowerShell.ConsoleHost/project.json +++ b/src/Microsoft.PowerShell.ConsoleHost/project.json @@ -15,7 +15,8 @@ "mappings": { "Modules/" : { "include": [ - "../Modules/Full", + "../Modules/Windows-Full", + "../Modules/Windows-Core+Full", "../Modules/Shared" ], "exclude": [ @@ -34,7 +35,8 @@ "mappings": { "Modules/" : { "include": [ - "../Modules/Full", + "../Modules/Windows-Full", + "../Modules/Windows-Core+Full", "../Modules/Shared" ], "exclude": [ @@ -56,15 +58,8 @@ } }, - "dependencies": { - "Microsoft.PowerShell.PSReadLine": "1.0.0-*", - "Microsoft.PowerShell.Commands.Diagnostics": "1.0.0-*", - "Microsoft.PowerShell.Commands.Management": "1.0.0-*", - "Microsoft.PowerShell.Commands.Utility": "1.0.0-*", - "Microsoft.PowerShell.LocalAccounts": "1.0.0-*", - "Microsoft.PowerShell.PackageManagement": "1.0.0-*", - "Microsoft.Management.Infrastructure.CimCmdlets": "1.0.0-*" + "System.Management.Automation": "1.0.0-*" }, "frameworks": { @@ -94,15 +89,22 @@ }, "net451": { "dependencies": { - "Microsoft.PowerShell.ScheduledJob": "1.0.0-*", - "Microsoft.PowerShell.Workflow.ServiceCore": "1.0.0-*", - "Microsoft.PowerShell.GraphicalHost": "1.0.0-*", + "Microsoft.Management.Infrastructure.CimCmdlets": "1.0.0-*", "Microsoft.PowerShell.Activities": "1.0.0-*", + "Microsoft.PowerShell.Commands.Diagnostics": "1.0.0-*", + "Microsoft.PowerShell.Commands.Management": "1.0.0-*", + "Microsoft.PowerShell.Commands.Utility": "1.0.0-*", "Microsoft.PowerShell.Core.Activities": "1.0.0-*", "Microsoft.PowerShell.Diagnostics.Activities": "1.0.0-*", + "Microsoft.PowerShell.GraphicalHost": "1.0.0-*", + "Microsoft.PowerShell.LocalAccounts": "1.0.0-*", "Microsoft.PowerShell.Management.Activities": "1.0.0-*", + "Microsoft.PowerShell.PackageManagement": "1.0.0-*", + "Microsoft.PowerShell.PSReadLine": "1.0.0-*", + "Microsoft.PowerShell.ScheduledJob": "1.0.0-*", "Microsoft.PowerShell.Security.Activities": "1.0.0-*", "Microsoft.PowerShell.Utility.Activities": "1.0.0-*", + "Microsoft.PowerShell.Workflow.ServiceCore": "1.0.0-*", "Microsoft.WSMan.Management.Activities": "1.0.0-*" } } diff --git a/src/Modules/README.md b/src/Modules/README.md index 500a406e27..07f8433816 100644 --- a/src/Modules/README.md +++ b/src/Modules/README.md @@ -11,15 +11,16 @@ Content files includes: These files are copied as-is by `dotnet` -- **Shared** is shared between all flavours -- **Full** for FullCLR (Windows) -- **Core** for CoreCLR (all platforms) +- Shared (shared between all variations) +- Windows+Unix-Core +- Windows-Core +- Windows-Core+Full +- Windows-Full Notes ----------- -* We have files with the same names in "Full" and "Core" folders. +We have files with the same names in different folders. That means that the contents of these two files are different. -I.e. if it's .psd1 file, it could be because `CmdletsToExport` are different for different platforms. - -* Also, we should never have files with the same names under "Full" and "Shared" (or "Core" and "Shared"). +I.e. if it's .psd1 file, it could be because `CmdletsToExport` +are different for different runtimes (platforms) or frameworks. diff --git a/src/Modules/Core/Microsoft.PowerShell.Management/Microsoft.PowerShell.Management.psd1 b/src/Modules/Windows+Unix-Core/Microsoft.PowerShell.Management/Microsoft.PowerShell.Management.psd1 similarity index 100% rename from src/Modules/Core/Microsoft.PowerShell.Management/Microsoft.PowerShell.Management.psd1 rename to src/Modules/Windows+Unix-Core/Microsoft.PowerShell.Management/Microsoft.PowerShell.Management.psd1 diff --git a/src/Modules/Core/Microsoft.PowerShell.Security/Microsoft.PowerShell.Security.psd1 b/src/Modules/Windows+Unix-Core/Microsoft.PowerShell.Security/Microsoft.PowerShell.Security.psd1 similarity index 100% rename from src/Modules/Core/Microsoft.PowerShell.Security/Microsoft.PowerShell.Security.psd1 rename to src/Modules/Windows+Unix-Core/Microsoft.PowerShell.Security/Microsoft.PowerShell.Security.psd1 diff --git a/src/Modules/Core/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1 b/src/Modules/Windows+Unix-Core/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1 similarity index 100% rename from src/Modules/Core/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1 rename to src/Modules/Windows+Unix-Core/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1 diff --git a/src/Modules/Shared/CimCmdlets/CimCmdlets.psd1 b/src/Modules/Windows-Core+Full/CimCmdlets/CimCmdlets.psd1 similarity index 100% rename from src/Modules/Shared/CimCmdlets/CimCmdlets.psd1 rename to src/Modules/Windows-Core+Full/CimCmdlets/CimCmdlets.psd1 diff --git a/src/Modules/Shared/Microsoft.PowerShell.LocalAccounts/LocalAccounts.format.ps1xml b/src/Modules/Windows-Core+Full/Microsoft.PowerShell.LocalAccounts/LocalAccounts.format.ps1xml similarity index 100% rename from src/Modules/Shared/Microsoft.PowerShell.LocalAccounts/LocalAccounts.format.ps1xml rename to src/Modules/Windows-Core+Full/Microsoft.PowerShell.LocalAccounts/LocalAccounts.format.ps1xml diff --git a/src/Modules/Shared/Microsoft.PowerShell.LocalAccounts/Microsoft.PowerShell.LocalAccounts.psd1 b/src/Modules/Windows-Core+Full/Microsoft.PowerShell.LocalAccounts/Microsoft.PowerShell.LocalAccounts.psd1 similarity index 100% rename from src/Modules/Shared/Microsoft.PowerShell.LocalAccounts/Microsoft.PowerShell.LocalAccounts.psd1 rename to src/Modules/Windows-Core+Full/Microsoft.PowerShell.LocalAccounts/Microsoft.PowerShell.LocalAccounts.psd1 diff --git a/src/Modules/Shared/Microsoft.WSMan.Management/Microsoft.WSMan.Management.psd1 b/src/Modules/Windows-Core+Full/Microsoft.WSMan.Management/Microsoft.WSMan.Management.psd1 similarity index 100% rename from src/Modules/Shared/Microsoft.WSMan.Management/Microsoft.WSMan.Management.psd1 rename to src/Modules/Windows-Core+Full/Microsoft.WSMan.Management/Microsoft.WSMan.Management.psd1 diff --git a/src/Modules/Shared/Microsoft.WSMan.Management/WSMan.format.ps1xml b/src/Modules/Windows-Core+Full/Microsoft.WSMan.Management/WSMan.format.ps1xml similarity index 100% rename from src/Modules/Shared/Microsoft.WSMan.Management/WSMan.format.ps1xml rename to src/Modules/Windows-Core+Full/Microsoft.WSMan.Management/WSMan.format.ps1xml diff --git a/src/Modules/Shared/PSDiagnostics/PSDiagnostics.psd1 b/src/Modules/Windows-Core+Full/PSDiagnostics/PSDiagnostics.psd1 similarity index 100% rename from src/Modules/Shared/PSDiagnostics/PSDiagnostics.psd1 rename to src/Modules/Windows-Core+Full/PSDiagnostics/PSDiagnostics.psd1 diff --git a/src/Modules/Shared/PSDiagnostics/PSDiagnostics.psm1 b/src/Modules/Windows-Core+Full/PSDiagnostics/PSDiagnostics.psm1 similarity index 100% rename from src/Modules/Shared/PSDiagnostics/PSDiagnostics.psm1 rename to src/Modules/Windows-Core+Full/PSDiagnostics/PSDiagnostics.psm1 diff --git a/src/Modules/Core/Microsoft.PowerShell.Diagnostics/Microsoft.PowerShell.Diagnostics.psd1 b/src/Modules/Windows-Core/Microsoft.PowerShell.Diagnostics/Microsoft.PowerShell.Diagnostics.psd1 similarity index 100% rename from src/Modules/Core/Microsoft.PowerShell.Diagnostics/Microsoft.PowerShell.Diagnostics.psd1 rename to src/Modules/Windows-Core/Microsoft.PowerShell.Diagnostics/Microsoft.PowerShell.Diagnostics.psd1 diff --git a/src/Modules/Full/Microsoft.PowerShell.Diagnostics/Diagnostics.format.ps1xml b/src/Modules/Windows-Full/Microsoft.PowerShell.Diagnostics/Diagnostics.format.ps1xml similarity index 100% rename from src/Modules/Full/Microsoft.PowerShell.Diagnostics/Diagnostics.format.ps1xml rename to src/Modules/Windows-Full/Microsoft.PowerShell.Diagnostics/Diagnostics.format.ps1xml diff --git a/src/Modules/Full/Microsoft.PowerShell.Diagnostics/Event.format.ps1xml b/src/Modules/Windows-Full/Microsoft.PowerShell.Diagnostics/Event.format.ps1xml similarity index 100% rename from src/Modules/Full/Microsoft.PowerShell.Diagnostics/Event.format.ps1xml rename to src/Modules/Windows-Full/Microsoft.PowerShell.Diagnostics/Event.format.ps1xml diff --git a/src/Modules/Full/Microsoft.PowerShell.Diagnostics/GetEvent.types.ps1xml b/src/Modules/Windows-Full/Microsoft.PowerShell.Diagnostics/GetEvent.types.ps1xml similarity index 100% rename from src/Modules/Full/Microsoft.PowerShell.Diagnostics/GetEvent.types.ps1xml rename to src/Modules/Windows-Full/Microsoft.PowerShell.Diagnostics/GetEvent.types.ps1xml diff --git a/src/Modules/Full/Microsoft.PowerShell.Diagnostics/Microsoft.PowerShell.Diagnostics.psd1 b/src/Modules/Windows-Full/Microsoft.PowerShell.Diagnostics/Microsoft.PowerShell.Diagnostics.psd1 similarity index 100% rename from src/Modules/Full/Microsoft.PowerShell.Diagnostics/Microsoft.PowerShell.Diagnostics.psd1 rename to src/Modules/Windows-Full/Microsoft.PowerShell.Diagnostics/Microsoft.PowerShell.Diagnostics.psd1 diff --git a/src/Modules/Full/Microsoft.PowerShell.Management/Microsoft.PowerShell.Management.psd1 b/src/Modules/Windows-Full/Microsoft.PowerShell.Management/Microsoft.PowerShell.Management.psd1 similarity index 100% rename from src/Modules/Full/Microsoft.PowerShell.Management/Microsoft.PowerShell.Management.psd1 rename to src/Modules/Windows-Full/Microsoft.PowerShell.Management/Microsoft.PowerShell.Management.psd1 diff --git a/src/Modules/Full/Microsoft.PowerShell.Security/Microsoft.PowerShell.Security.psd1 b/src/Modules/Windows-Full/Microsoft.PowerShell.Security/Microsoft.PowerShell.Security.psd1 similarity index 100% rename from src/Modules/Full/Microsoft.PowerShell.Security/Microsoft.PowerShell.Security.psd1 rename to src/Modules/Windows-Full/Microsoft.PowerShell.Security/Microsoft.PowerShell.Security.psd1 diff --git a/src/Modules/Full/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1 b/src/Modules/Windows-Full/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1 similarity index 100% rename from src/Modules/Full/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1 rename to src/Modules/Windows-Full/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1 diff --git a/src/Modules/Full/PSScheduledJob/PSScheduledJob.Format.ps1xml b/src/Modules/Windows-Full/PSScheduledJob/PSScheduledJob.Format.ps1xml similarity index 100% rename from src/Modules/Full/PSScheduledJob/PSScheduledJob.Format.ps1xml rename to src/Modules/Windows-Full/PSScheduledJob/PSScheduledJob.Format.ps1xml diff --git a/src/Modules/Full/PSScheduledJob/PSScheduledJob.psd1 b/src/Modules/Windows-Full/PSScheduledJob/PSScheduledJob.psd1 similarity index 100% rename from src/Modules/Full/PSScheduledJob/PSScheduledJob.psd1 rename to src/Modules/Windows-Full/PSScheduledJob/PSScheduledJob.psd1 diff --git a/src/Modules/Full/PSScheduledJob/PSScheduledJob.types.ps1xml b/src/Modules/Windows-Full/PSScheduledJob/PSScheduledJob.types.ps1xml similarity index 100% rename from src/Modules/Full/PSScheduledJob/PSScheduledJob.types.ps1xml rename to src/Modules/Windows-Full/PSScheduledJob/PSScheduledJob.types.ps1xml diff --git a/src/Modules/Full/PSWorkflow/PSWorkflow.psd1 b/src/Modules/Windows-Full/PSWorkflow/PSWorkflow.psd1 similarity index 100% rename from src/Modules/Full/PSWorkflow/PSWorkflow.psd1 rename to src/Modules/Windows-Full/PSWorkflow/PSWorkflow.psd1 diff --git a/src/Modules/Full/PSWorkflow/PSWorkflow.psm1 b/src/Modules/Windows-Full/PSWorkflow/PSWorkflow.psm1 similarity index 100% rename from src/Modules/Full/PSWorkflow/PSWorkflow.psm1 rename to src/Modules/Windows-Full/PSWorkflow/PSWorkflow.psm1 diff --git a/src/Modules/Full/PSWorkflow/PSWorkflow.types.ps1xml b/src/Modules/Windows-Full/PSWorkflow/PSWorkflow.types.ps1xml similarity index 100% rename from src/Modules/Full/PSWorkflow/PSWorkflow.types.ps1xml rename to src/Modules/Windows-Full/PSWorkflow/PSWorkflow.types.ps1xml diff --git a/src/Modules/Full/PSWorkflowUtility/PSWorkflowUtility.psd1 b/src/Modules/Windows-Full/PSWorkflowUtility/PSWorkflowUtility.psd1 similarity index 100% rename from src/Modules/Full/PSWorkflowUtility/PSWorkflowUtility.psd1 rename to src/Modules/Windows-Full/PSWorkflowUtility/PSWorkflowUtility.psd1 diff --git a/src/Modules/Full/PSWorkflowUtility/PSWorkflowUtility.psm1 b/src/Modules/Windows-Full/PSWorkflowUtility/PSWorkflowUtility.psm1 similarity index 100% rename from src/Modules/Full/PSWorkflowUtility/PSWorkflowUtility.psm1 rename to src/Modules/Windows-Full/PSWorkflowUtility/PSWorkflowUtility.psm1 diff --git a/src/Modules/map.json b/src/Modules/map.json index a97c77af19..151c7539da 100644 --- a/src/Modules/map.json +++ b/src/Modules/map.json @@ -1,9 +1,5 @@ { - "monad/miscfiles/modules/PSDiagnostics/PSDiagnostics.psd1": "Shared/PSDiagnostics/PSDiagnostics.psd1", - "monad/miscfiles/modules/PSDiagnostics/PSDiagnostics.psm1": "Shared/PSDiagnostics/PSDiagnostics.psm1", "monad/miscfiles/modules/Microsoft.PowerShell.Archive/Microsoft.PowerShell.Archive.psm1": "Shared/Microsoft.PowerShell.Archive/Microsoft.PowerShell.Archive.psm1", - "monad/miscfiles/modules/Microsoft.WSMan.Management/Microsoft.WSMan.Management.psd1": "Shared/Microsoft.WSMan.Management/Microsoft.WSMan.Management.psd1", - "monad/miscfiles/display/WSMan.format.ps1xml": "Shared/Microsoft.WSMan.Management/WSMan.format.ps1xml", "monad/miscfiles/modules/Microsoft.PowerShell.Archive/Microsoft.PowerShell.Archive.psd1": "Shared/Microsoft.PowerShell.Archive/Microsoft.PowerShell.Archive.psd1", "monad/miscfiles/modules/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psm1": "Shared/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psm1", "monad/miscfiles/modules/Microsoft.PowerShell.Archive/ArchiveResources.psd1": "Shared/Microsoft.PowerShell.Archive/ArchiveResources.psd1", @@ -12,8 +8,6 @@ "monad/miscfiles/modules/PSGet/PSGet.Format.ps1xml": "Shared/PowerShellGet/PSGet.Format.ps1xml", "monad/miscfiles/modules/PSGet/PSGet.Resource.psd1": "Shared/PowerShellGet/PSGet.Resource.psd1", "monad/miscfiles/modules/Microsoft.PowerShell.Host/Microsoft.PowerShell.Host.psd1": "Shared/Microsoft.PowerShell.Host/Microsoft.PowerShell.Host.psd1", - "monad/src/LocalAccounts/Microsoft.PowerShell.LocalAccounts.psd1": "Shared/Microsoft.PowerShell.LocalAccounts/Microsoft.PowerShell.LocalAccounts.psd1", - "monad/src/LocalAccounts/LocalAccounts.format.ps1xml": "Shared/Microsoft.PowerShell.LocalAccounts/LocalAccounts.format.ps1xml", "monad/src/oneget/PowerShell.Module/PackageManagement.psd1": "Shared/PackageManagement/PackageManagement.psd1", "monad/src/oneget/PowerShell.Module/PackageManagement.format.ps1xml": "Shared/PackageManagement/PackageManagement.format.ps1xml", "monad/src/oneget/providers/inbox/powershell.metaprovider/PackageProviderFunctions.psm1": "Shared/PackageManagement/PackageProviderFunctions.psm1", @@ -23,25 +17,33 @@ "wmi/psws/PSODataUtils/Microsoft.PowerShell.ODataUtils/Microsoft.PowerShell.ODataUtilsHelper.ps1": "Shared/Microsoft.PowerShell.ODataUtils/Microsoft.PowerShell.ODataUtilsHelper.ps1", "wmi/psws/PSODataUtils/Microsoft.PowerShell.ODataUtils/Microsoft.PowerShell.ODataV4Adapter.ps1": "Shared/Microsoft.PowerShell.ODataUtils/Microsoft.PowerShell.ODataV4Adapter.ps1", "wmi/psws/PSODataUtils/Microsoft.PowerShell.ODataUtils/Microsoft.PowerShell.ODataUtilsStrings.psd1": "Shared/Microsoft.PowerShell.ODataUtils/en-US/Microsoft.PowerShell.ODataUtilsStrings.psd1", - "wmi/WMIv2/Client/CIMCmdlets/CimCmdlets.psd1": "Shared/CimCmdlets/CimCmdlets.psd1", - - "monad/miscfiles/modules/Microsoft.PowerShell.Security/Microsoft.PowerShell.Security.psd1": "Full/Microsoft.PowerShell.Security/Microsoft.PowerShell.Security.psd1", - "monad/miscfiles/modules/Microsoft.PowerShell.Management/Microsoft.PowerShell.Management.psd1": "Full/Microsoft.PowerShell.Management/Microsoft.PowerShell.Management.psd1", - "monad/miscfiles/modules/Microsoft.PowerShell.Diagnostics/Microsoft.PowerShell.Diagnostics.psd1": "Full/Microsoft.PowerShell.Diagnostics/Microsoft.PowerShell.Diagnostics.psd1", - "monad/miscfiles/types/getevent.types.ps1xml": "Full/Microsoft.PowerShell.Diagnostics/GetEvent.types.ps1xml", - "monad/miscfiles/display/Event.format.ps1xml": "Full/Microsoft.PowerShell.Diagnostics/Event.format.ps1xml", - "monad/miscfiles/display/Diagnostics.format.ps1xml": "Full/Microsoft.PowerShell.Diagnostics/Diagnostics.format.ps1xml", - "monad/miscfiles/modules/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1": "Full/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1", - "monad/src/ScheduledJob/PSScheduledJob.Format.ps1xml": "Full/PSScheduledJob/PSScheduledJob.Format.ps1xml", - "monad/src/ScheduledJob/PSScheduledJob.psd1": "Full/PSScheduledJob/PSScheduledJob.psd1", - "monad/src/ScheduledJob/PSScheduledJob.types.ps1xml": "Full/PSScheduledJob/PSScheduledJob.types.ps1xml", - "monad/src/m3p/product/PSWorkflow.psd1": "Full/PSWorkflow/PSWorkflow.psd1", - "monad/src/m3p/product/PSWorkflow.psm1": "Full/PSWorkflow/PSWorkflow.psm1", - "monad/src/m3p/product/PSWorkflow.types.ps1xml": "Full/PSWorkflow/PSWorkflow.types.ps1xml", - "monad/src/m3p/product/PSWorkflowUtility.psd1": "Full/PSWorkflowUtility/PSWorkflowUtility.psd1", - "monad/src/m3p/product/PSWorkflowUtility.psm1": "Full/PSWorkflowUtility/PSWorkflowUtility.psm1", - "monad/miscfiles/modules/Microsoft.PowerShell.Security/CoreClr/Microsoft.PowerShell.Security.psd1": "Core/Microsoft.PowerShell.Security/Microsoft.PowerShell.Security.psd1", - "monad/miscfiles/modules/Microsoft.PowerShell.Diagnostics/CoreClr/Microsoft.PowerShell.Diagnostics.psd1": "Core/Microsoft.PowerShell.Diagnostics/Microsoft.PowerShell.Diagnostics.psd1", - "monad/miscfiles/modules/Microsoft.PowerShell.Utility/CoreClr/Microsoft.PowerShell.Utility.psd1": "Core/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1" + "wmi/WMIv2/Client/CIMCmdlets/CimCmdlets.psd1": "Windows-Core+Full/CimCmdlets/CimCmdlets.psd1", + "monad/miscfiles/modules/Microsoft.WSMan.Management/Microsoft.WSMan.Management.psd1": "Windows-Core+Full/Microsoft.WSMan.Management/Microsoft.WSMan.Management.psd1", + "monad/miscfiles/display/WSMan.format.ps1xml": "Windows-Core+Full/Microsoft.WSMan.Management/WSMan.format.ps1xml", + "monad/src/LocalAccounts/Microsoft.PowerShell.LocalAccounts.psd1": "Windows-Core+Full/Microsoft.PowerShell.LocalAccounts/Microsoft.PowerShell.LocalAccounts.psd1", + "monad/src/LocalAccounts/LocalAccounts.format.ps1xml": "Windows-Core+Full/Microsoft.PowerShell.LocalAccounts/LocalAccounts.format.ps1xml", + "monad/miscfiles/modules/PSDiagnostics/PSDiagnostics.psd1": "Windows-Core+Full/PSDiagnostics/PSDiagnostics.psd1", + "monad/miscfiles/modules/PSDiagnostics/PSDiagnostics.psm1": "Windows-Core+Full/PSDiagnostics/PSDiagnostics.psm1", + + "monad/miscfiles/modules/Microsoft.PowerShell.Security/Microsoft.PowerShell.Security.psd1": "Windows-Full/Microsoft.PowerShell.Security/Microsoft.PowerShell.Security.psd1", + "monad/miscfiles/modules/Microsoft.PowerShell.Management/Microsoft.PowerShell.Management.psd1": "Windows-Full/Microsoft.PowerShell.Management/Microsoft.PowerShell.Management.psd1", + "monad/miscfiles/modules/Microsoft.PowerShell.Diagnostics/Microsoft.PowerShell.Diagnostics.psd1": "Windows-Full/Microsoft.PowerShell.Diagnostics/Microsoft.PowerShell.Diagnostics.psd1", + "monad/miscfiles/types/getevent.types.ps1xml": "Windows-Full/Microsoft.PowerShell.Diagnostics/GetEvent.types.ps1xml", + "monad/miscfiles/display/Event.format.ps1xml": "Windows-Full/Microsoft.PowerShell.Diagnostics/Event.format.ps1xml", + "monad/miscfiles/display/Diagnostics.format.ps1xml": "Windows-Full/Microsoft.PowerShell.Diagnostics/Diagnostics.format.ps1xml", + "monad/miscfiles/modules/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1": "Windows-Full/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1", + "monad/src/ScheduledJob/PSScheduledJob.Format.ps1xml": "Windows-Full/PSScheduledJob/PSScheduledJob.Format.ps1xml", + "monad/src/ScheduledJob/PSScheduledJob.psd1": "Windows-Full/PSScheduledJob/PSScheduledJob.psd1", + "monad/src/ScheduledJob/PSScheduledJob.types.ps1xml": "Windows-Full/PSScheduledJob/PSScheduledJob.types.ps1xml", + "monad/src/m3p/product/PSWorkflow.psd1": "Windows-Full/PSWorkflow/PSWorkflow.psd1", + "monad/src/m3p/product/PSWorkflow.psm1": "Windows-Full/PSWorkflow/PSWorkflow.psm1", + "monad/src/m3p/product/PSWorkflow.types.ps1xml": "Windows-Full/PSWorkflow/PSWorkflow.types.ps1xml", + "monad/src/m3p/product/PSWorkflowUtility.psd1": "Windows-Full/PSWorkflowUtility/PSWorkflowUtility.psd1", + "monad/src/m3p/product/PSWorkflowUtility.psm1": "Windows-Full/PSWorkflowUtility/PSWorkflowUtility.psm1", + + "monad/miscfiles/modules/Microsoft.PowerShell.Diagnostics/CoreClr/Microsoft.PowerShell.Diagnostics.psd1": "Windows-Core/Microsoft.PowerShell.Diagnostics/Microsoft.PowerShell.Diagnostics.psd1", + + "monad/miscfiles/modules/Microsoft.PowerShell.Security/CoreClr/Microsoft.PowerShell.Security.psd1": "Windows+Unix-Core/Microsoft.PowerShell.Security/Microsoft.PowerShell.Security.psd1", + "monad/miscfiles/modules/Microsoft.PowerShell.Utility/CoreClr/Microsoft.PowerShell.Utility.psd1": "Windows+Unix-Core/Microsoft.PowerShell.Utility/Microsoft.PowerShell.Utility.psd1" } diff --git a/src/TypeCatalogParser/Main.cs b/src/TypeCatalogParser/Main.cs index 778fbb1b95..8d9569f23c 100644 --- a/src/TypeCatalogParser/Main.cs +++ b/src/TypeCatalogParser/Main.cs @@ -13,6 +13,13 @@ namespace TypeCatalogParser { public static void Main(string[] args) { + if (args.Length != 1) + { + throw new ArgumentException( + "Usage: ./TypeCatalogParser \n" + + "Valid options are '../powershell-unix' and '../powershell-windows'"); + } + // These are packages that are not part of .NET Core and must be excluded string[] excludedPackages = { "Microsoft.Management.Infrastructure", @@ -25,7 +32,7 @@ namespace TypeCatalogParser var outputPath = "../TypeCatalogGen/powershell.inc"; // Get a context for our top level project - var context = ProjectContext.Create("../powershell", NuGetFramework.Parse("netcoreapp1.0")); + var context = ProjectContext.Create(args[0], NuGetFramework.Parse("netcoreapp1.0")); System.IO.File.WriteAllLines(outputPath, // Get the target for the current runtime diff --git a/src/powershell/project.json b/src/powershell-unix/project.json similarity index 76% rename from src/powershell/project.json rename to src/powershell-unix/project.json index 53c8e32630..f6d2f5f162 100644 --- a/src/powershell/project.json +++ b/src/powershell-unix/project.json @@ -12,7 +12,7 @@ "mappings": { "Modules/" : { "include": [ - "../Modules/Core", + "../Modules/Windows+Unix-Core", "../Modules/Shared" ], "exclude": [ @@ -25,14 +25,17 @@ "*.dylib", "../../powershell.version" ] - } + }, + "compile": [ + "../powershell/Program.cs" + ] }, "publishOptions": { "mappings": { "Modules/" : { "include": [ - "../Modules/Core", + "../Modules/Windows+Unix-Core", "../Modules/Shared" ], "exclude": [ @@ -48,7 +51,11 @@ }, "dependencies": { - "Microsoft.PowerShell.ConsoleHost": "1.0.0-*" + "Microsoft.PowerShell.ConsoleHost": "1.0.0-*", + "Microsoft.PowerShell.PSReadLine": "1.0.0-*", + "Microsoft.PowerShell.Commands.Management": "1.0.0-*", + "Microsoft.PowerShell.Commands.Utility": "1.0.0-*", + "Microsoft.PowerShell.PackageManagement": "1.0.0-*" }, "frameworks": { @@ -67,9 +74,6 @@ "ubuntu.14.04-x64": { }, "debian.8-x64": { }, "centos.7-x64": { }, - "win7-x64": { }, - "win81-x64": { }, - "win10-x64": { }, "osx.10.11-x64": { } } } diff --git a/src/powershell-windows/project.json b/src/powershell-windows/project.json new file mode 100644 index 0000000000..956b659e02 --- /dev/null +++ b/src/powershell-windows/project.json @@ -0,0 +1,81 @@ +{ + "name": "powershell", + "version": "1.0.0-*", + "description": ".NET CLI PowerShell app", + + "buildOptions": { + "xmlDoc": true, + "warningsAsErrors": true, + "allowUnsafe": true, + "emitEntryPoint": true, + "copyToOutput": { + "mappings": { + "Modules/" : { + "include": [ + "../Modules/Windows-Core", + "../Modules/Windows+Unix-Core", + "../Modules/Windows-Core+Full", + "../Modules/Shared" + ], + "exclude": [ + "../Modules/Shared/Pester/.git*" + ] + } + }, + "include": [ + "../../powershell.version" + ] + }, + "compile": [ + "../powershell/Program.cs" + ] + }, + + "publishOptions": { + "mappings": { + "Modules/" : { + "include": [ + "../Modules/Windows-Core", + "../Modules/Windows+Unix-Core", + "../Modules/Windows-Core+Full", + "../Modules/Shared" + ], + "exclude": [ + "../Modules/Shared/Pester/.git*" + ] + } + }, + "include": [ + "../../powershell.version" + ], + }, + + "dependencies": { + "Microsoft.PowerShell.ConsoleHost": "1.0.0-*", + "Microsoft.PowerShell.PSReadLine": "1.0.0-*", + "Microsoft.PowerShell.Commands.Diagnostics": "1.0.0-*", + "Microsoft.PowerShell.Commands.Management": "1.0.0-*", + "Microsoft.PowerShell.Commands.Utility": "1.0.0-*", + "Microsoft.PowerShell.LocalAccounts": "1.0.0-*", + "Microsoft.PowerShell.PackageManagement": "1.0.0-*", + "Microsoft.Management.Infrastructure.CimCmdlets": "1.0.0-*" + }, + + "frameworks": { + "netcoreapp1.0": { + "imports": [ "dnxcore50", "portable-net45+win8" ], + "buildOptions": { + "define": [ "CORECLR" ] + }, + "dependencies": { + "Microsoft.NETCore.App": "1.0.0" + } + } + }, + + "runtimes": { + "win7-x64": { }, + "win81-x64": { }, + "win10-x64": { }, + } +} diff --git a/src/powershell/README.md b/src/powershell/README.md index 7745dd8c14..72db9c6a1e 100644 --- a/src/powershell/README.md +++ b/src/powershell/README.md @@ -1,8 +1,9 @@ PowerShell ========== -The `powershell[.exe]` executable for Open PowerShell is built by this project, -as it is the top dependency of the graph, and has `emitEntryPoint: true`, +The `powershell[.exe]` executable for PowerShell is built by +**powershell-unix** and **powershell-windows** projects, +as they are the top dependencies of the graph, and has `emitEntryPoint: true`, meaning a native executable is produced automatically by CLI (no need to own a separate native host). diff --git a/test/csharp/project.json b/test/csharp/project.json index 6ecf8a0b72..41dcb24dcc 100644 --- a/test/csharp/project.json +++ b/test/csharp/project.json @@ -2,7 +2,6 @@ "name": "powershell-tests", "version": "1.0.0-*", "description": "PowerShell On Linux xUnit Tests", - "authors": [ "andschwa" ], "buildOptions": { "keyFile": "../../src/signing/visualstudiopublic.snk", @@ -11,7 +10,7 @@ }, "dependencies": { - "powershell": "1.0.0-*" + "System.Management.Automation": "1.0.0-*" }, "frameworks": {