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
14 changes: 14 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4

[*.ps1]
end_of_line = crlf

[*.{yml,yaml,json}]
indent_size = 2
9 changes: 9 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
* @vartaxe
/.github/ @vartaxe
/Content/ @vartaxe
/Data/ @vartaxe
/Driver Automation Tool/ @vartaxe
/HotFix/ @vartaxe
/LICENSES/ @vartaxe
/Tests/ @vartaxe
/SECURITY.md @vartaxe
32 changes: 32 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Bug report
description: Report a reproducible issue with the Driver Automation Tool
title: "[Bug]: "
labels:
- bug
body:
- type: textarea
id: summary
attributes:
label: Summary
description: What happened? Do not disclose credentials or internal identifiers. For security issues, use private vulnerability reporting from the Security tab; contact vartaxe@outlook.com privately if unavailable.
validations:
required: true
- type: textarea
id: environment
attributes:
label: Environment
description: Driver Automation Tool version, Windows version, Windows PowerShell version, ConfigMgr or Intune context, and whether the issue occurred in full Windows or WinPE. Sanitize identifiers.
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Reproduction and expected behavior
description: Describe minimal reproduction steps, expected and actual results, and the relevant process or exit code. Include only non-sensitive values and names.
validations:
required: true
- type: textarea
id: logs
attributes:
label: Sanitized logs
description: Paste only sanitized log snippets. Do not upload raw archives, secrets, tokens, or certificates.
39 changes: 39 additions & 0 deletions .github/ISSUE_TEMPLATE/compatibility_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Compatibility report
description: Report a tested platform or an explicit compatibility problem
title: "[Compatibility]: "
body:
- type: markdown
attributes:
value: |
Do not include credentials, internal names, certificates, or raw logs. Use [private vulnerability reporting](https://github.com/vartaxe/DriverAutomationTool/security/advisories/new) for security issues. If unavailable, contact [vartaxe@outlook.com](mailto:vartaxe@outlook.com) to arrange a private exchange.
- type: textarea
id: environment
attributes:
label: Environment
description: Driver Automation Tool version, OS / driver package context, Windows version, PowerShell version, and the relevant deployment phase.
validations:
required: true
- type: dropdown
id: platform
attributes:
label: Platform
options:
- Full Windows
- WinPE / OSD
- Intune / modern management
validations:
required: true
- type: textarea
id: policy
attributes:
label: Prerequisites and policy
description: Describe boot-state compatibility, driver package expectations, and any pre-requisites or blockers. Keep this sanitized and generic.
validations:
required: true
- type: textarea
id: evidence
attributes:
label: Results and sanitized evidence
description: Distinguish static checks, test automation, and live validation. Include the expected outcome, actual behavior, and the relevant exit or status code.
validations:
required: true
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Security vulnerability
url: https://github.com/vartaxe/DriverAutomationTool/security/advisories/new
about: Report vulnerabilities privately here. If unavailable, contact vartaxe@outlook.com to arrange a private exchange.
27 changes: 27 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Feature request
description: Suggest a focused improvement for the Driver Automation Tool
title: "[Feature]: "
body:
- type: markdown
attributes:
value: |
Keep examples generic and do not disclose credentials or internal deployment details. Use [private vulnerability reporting](https://github.com/vartaxe/DriverAutomationTool/security/advisories/new) for security issues. If unavailable, contact [vartaxe@outlook.com](mailto:vartaxe@outlook.com) to arrange a private exchange.
- type: textarea
id: problem
attributes:
label: Problem
description: Describe the driver or deployment problem and why the current behavior is insufficient.
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed improvement
description: Explain the expected behavior and how it preserves secure defaults and repo validation expectations.
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives and validation
description: Describe alternatives considered and how the change could be tested without implying live validation that has not occurred.
6 changes: 6 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule:
interval: monthly
3 changes: 3 additions & 0 deletions .github/github-app.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
automation:
auto_issue_session: true
remote_control: false
12 changes: 12 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## Summary

Describe the change and why it is needed.

## Validation

- [ ] Every `Tests\Test-*.ps1` regression harness passes on Windows PowerShell 5.1
- [ ] Every `Tests\*.Tests.ps1` Pester 6.2.0 suite passes on Windows PowerShell 5.1
- [ ] PowerShell parse checks pass for repo modules and script files
- [ ] Git diff is clean with no whitespace errors
- [ ] Documentation updated if behavior changed
- [ ] No credentials, internal values, or sensitive logs included
13 changes: 6 additions & 7 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
fetch-depth: 2
persist-credentials: false

- name: Check whitespace errors
shell: powershell
Expand Down Expand Up @@ -89,13 +90,11 @@ jobs:
Install-Module Pester -RequiredVersion 6.2.0 -Scope CurrentUser -Force -ErrorAction Stop
Import-Module Pester -RequiredVersion 6.2.0 -ErrorAction Stop
$testRoot = Join-Path $env:GITHUB_WORKSPACE 'Tests'
$result = Invoke-Pester -Path @(
(Join-Path $testRoot 'CustomDismCancellation.Tests.ps1'),
(Join-Path $testRoot 'DismCancellation.Tests.ps1'),
(Join-Path $testRoot 'CustomCaptureGuards.Tests.ps1'),
(Join-Path $testRoot 'LifecycleSafety.Tests.ps1'),
(Join-Path $testRoot 'DriverInstallResults.Tests.ps1')
) -Output Detailed -PassThru
$tests = @(Get-ChildItem -LiteralPath $testRoot -Filter '*.Tests.ps1' -File | Sort-Object Name)
if ($tests.Count -eq 0) {
throw 'No Pester regression suites were found.'
}
$result = Invoke-Pester -Path $tests.FullName -Output Detailed -PassThru
if ($null -eq $result -or $result.Result -ne 'Passed' -or $result.TotalCount -eq 0 -or
$result.FailedCount -gt 0 -or $result.FailedContainersCount -gt 0 -or
$result.FailedBlocksCount -gt 0 -or $result.SkippedCount -gt 0 -or $result.NotRunCount -gt 0) {
Expand Down
5 changes: 5 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"recommendations": [
"ms-vscode.PowerShell"
]
}
65 changes: 65 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Validate PowerShell regression tests",
"dependsOrder": "sequence",
"dependsOn": [
"Run script regression harnesses",
"Run Pester regression suites"
],
"group": {
"kind": "test",
"isDefault": true
},
"problemMatcher": []
},
{
"label": "Run script regression harnesses",
"type": "process",
"command": "${env:windir}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"args": [
"-NoProfile",
"-NonInteractive",
"-ExecutionPolicy",
"Bypass",
"-Command",
"Get-ChildItem -LiteralPath '${workspaceFolder}\\Tests' -Filter 'Test-*.ps1' -File | Sort-Object Name | ForEach-Object { Write-Output \"Running $($_.Name)...\"; & '${env:windir}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe' -NoProfile -NonInteractive -ExecutionPolicy Bypass -File $_.FullName; if ($LASTEXITCODE -ne 0) { throw \"$($_.Name) failed with exit code $LASTEXITCODE.\" } }"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": []
},
{
"label": "Run Pester regression suites",
"type": "process",
"command": "${env:windir}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"args": [
"-NoProfile",
"-NonInteractive",
"-ExecutionPolicy",
"Bypass",
"-Command",
"Import-Module Pester -RequiredVersion '6.2.0' -ErrorAction Stop; $Tests = @(Get-ChildItem -LiteralPath '${workspaceFolder}\\Tests' -Filter '*.Tests.ps1' -File | Sort-Object Name); if ($Tests.Count -eq 0) { throw 'No Pester regression suites were found.' }; $Result = Invoke-Pester -Path $Tests.FullName -Output Detailed -PassThru; if ($null -eq $Result -or $Result.Result -ne 'Passed' -or $Result.TotalCount -eq 0 -or $Result.FailedCount -gt 0 -or $Result.FailedContainersCount -gt 0 -or $Result.FailedBlocksCount -gt 0 -or $Result.SkippedCount -gt 0 -or $Result.NotRunCount -gt 0) { throw 'Pester regression suites did not fully pass.' }"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": []
},
{
"label": "Check git whitespace",
"type": "process",
"command": "git",
"args": [
"diff",
"--check"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": []
}
]
}