Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 16 additions & 20 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Upload module
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: module
path: ./src/
Expand All @@ -35,26 +35,20 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- name: Checkout Repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Install PSWSMan
if: runner.os != 'Windows'
run: Install-Module PSWSMan -Force -AllowClobber; Install-WSMan
run: Install-PSResource PSWSMan -TrustRepository; Install-WSMan

- name: Install PSDesiredStateConfiguration
run: Install-Module PSDesiredStateConfiguration -Force -AllowClobber
run: Install-PSResource PSDesiredStateConfiguration -TrustRepository

- name: Install AnyPackage
run: Install-Module AnyPackage -Force -AllowClobber

- name: Install PowerShellGet
run: Install-Module PowerShellGet -AllowPrerelease -Force -AllowClobber

- name: Install AnyPackage.PowerShellGet
run: Install-Module AnyPackage.PowerShellGet -Force -AllowClobber
- name: Install AnyPackage.PSResourceGet
run: Install-PSResource AnyPackage.PSResourceGet -TrustRepository

- name: Download module
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: module
path: AnyPackageDsc
Expand All @@ -81,10 +75,10 @@ jobs:
runs-on: windows-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Download module
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: module
path: module
Expand Down Expand Up @@ -117,7 +111,7 @@ jobs:
Set-AuthenticodeSignature @config

- name: Upload module
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: module-signed
path: ./module/
Expand All @@ -129,15 +123,17 @@ jobs:
steps:

- name: Download module
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: module-signed
path: '~/.local/share/powershell/Modules/AnyPackageDsc'

- name: Install AnyPackage
run: Install-Module AnyPackage -Force -AllowClobber
run: Install-PSResource AnyPackage -TrustRepository

- name: Publish Module
env:
NUGET_KEY: ${{ secrets.NUGET_KEY }}
run: Publish-Module -Name AnyPackageDsc -NuGetApiKey $env:NUGET_KEY
run: |
$module = Get-Module AnyPackageDsc -ListAvailable
Publish-PSResource $module.ModuleBase -ApiKey $env:NUGET_KEY
27 changes: 18 additions & 9 deletions .github/workflows/lint-powershell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,23 +24,32 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Move module
run: |
if ($IsWindows) {
$path = "$HOME\Documents\PowerShell\Modules"
} else {
$path = "$HOME/.local/share/powershell/Modules"
}

Copy-Item src AnyPackageDsc
Copy-Item AnyPackageDsc $path
Get-Module AnyPackageDsc -ListAvailable

- name: Install AnyPackage
run: Install-Module AnyPackage -Force -AllowClobber
run: Install-PSResource AnyPackage -TrustRepository

- name: Install ConvertToSARIF
run: Install-Module ConvertToSARIF -Force

- name: Install PowerShellGet
run: Install-Module PowerShellGet -Force -AllowClobber -AllowPrerelease
run: Install-PSResource ConvertToSARIF -TrustRepository

- name: Run PSScriptAnalyzer
run: |
Import-Module AnyPackage, ConvertToSARIF, PowerShellGet -PassThru
Invoke-ScriptAnalyzer -Path . -Recurse | ConvertTo-SARIF -FilePath results.sarif
Import-Module AnyPackage, ConvertToSARIF -PassThru
Invoke-ScriptAnalyzer -Path ./src -Recurse | ConvertTo-SARIF -FilePath results.sarif

- name: Upload SARIF results file
uses: github/codeql-action/upload-sarif@v2
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ AnyPackage DSC resources module.
## Install AnyPackageDsc

```powershell
Install-Module AnyPackageDsc
Install-PSResource AnyPackageDsc
```

## Documentation
Expand Down
43 changes: 43 additions & 0 deletions src/AnyPackageDsc.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,31 @@ class Package {
[DscProperty(NotConfigurable)]
[APReason[]] $Reasons

static [Package[]] Export() {
Get-PackageProvider -ListAvailable |
Select-Object -ExpandProperty ModuleName -Unique |
Import-Module

$packages = @()
foreach ($installedPackage in (Get-Package -ErrorAction Stop)) {
$package = [Package]::new()
$package.Name = $installedPackage.Name
$package.Provider = $installedPackage.Provider.FullName

if ($installedPackage.Version) {
$package.Version = $installedPackage.Version
$package.Prerelease = $installedPackage.Version.IsPrerelease
} else {
$package.Version = '*'
}

$package.Source = $installedPackage.Source
$packages += $package
}

return $packages
}

[Package] Get() {
$currentState = [Package]@{
Name = $this.Name
Expand Down Expand Up @@ -187,6 +212,24 @@ class Source {
[DscProperty(NotConfigurable)]
[APReason[]] $Reasons

static [Source[]] Export() {
Get-PackageProvider -ListAvailable |
Select-Object -ExpandProperty ModuleName -Unique |
Import-Module

$sources = @()
foreach ($installedSource in (Get-PackageSource -ErrorAction Stop)) {
$source = [Source]::new()
$source.Name = $installedSource.Name
$source.Provider = $installedSource.Provider.FullName
$source.Location = $installedSource.Location
$source.Trusted = $installedSource.Trusted
$sources += $source
}

return $sources
}

[Source] Get() {
$currentState = [Source]@{
Name = $this.Name
Expand Down
18 changes: 18 additions & 0 deletions test/Package.Tests.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#requires -modules AnyPackageDsc, AnyPackage.PSResourceGet

using module AnyPackageDsc

[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')]
param()

Describe 'Package' {
Context 'Export' {
BeforeAll {
$results = [Package]::Export()
}

It 'should return packages' {
$results | Should -Not -BeNullOrEmpty
}
}
}
18 changes: 18 additions & 0 deletions test/Source.Tests.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#requires -modules AnyPackageDsc, AnyPackage.PSResourceGet

using module AnyPackageDsc

[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')]
param()

Describe 'Source' {
Context 'Export' {
BeforeAll {
$results = [Source]::Export()
}

It 'should return sources' {
$results | Should -Not -BeNullOrEmpty
}
}
}