mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-02-23 19:49:43 +01:00
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request This pull request introduces several improvements and updates across the repository, focusing on build tooling, prompt configuration for AI agents, and documentation clarity. The most significant changes include the addition of new VSCode build tasks, updates to prompt files to use a newer AI model, enhancements to the build script for flexibility, and refinements to documentation and style rules. ### Enabled scenario * On any active files in VSCode, do "Ctrl + Shift + B" just build correctly for you. * The Run Task (no matter from Terminal or Ctrl + Shift + P), we can see the build option: <img width="1210" height="253" alt="image" src="https://github.com/user-attachments/assets/09fbef16-55ce-42d5-a9ec-74111be83472" /> **Build tooling and automation:** * Added a new `.vscode/tasks.json` file with configurable build tasks for PowerToys, supporting quick and customizable builds with platform and configuration selection. * Enhanced `tools/build/build.ps1` to support an optional `-Path` parameter for building projects in a specified directory, updated parameter documentation, and improved logic to resolve the working directory. [[1]](diffhunk://#diff-7a444242b2a6d9c642341bd2ef45f51ba5698ad7827e5136e85eb483863967a7R14-R16) [[2]](diffhunk://#diff-7a444242b2a6d9c642341bd2ef45f51ba5698ad7827e5136e85eb483863967a7R27-R30) [[3]](diffhunk://#diff-7a444242b2a6d9c642341bd2ef45f51ba5698ad7827e5136e85eb483863967a7R51) [[4]](diffhunk://#diff-7a444242b2a6d9c642341bd2ef45f51ba5698ad7827e5136e85eb483863967a7L81-R93) **AI agent prompt configuration:** * Updated all prompt files in `.github/prompts/` to use the `GPT-5.1-Codex-Max` model instead of older models, and standardized the agent field format. [[1]](diffhunk://#diff-7a5c9b18594ff83fda2c191fd5a401ca01b74451e8949dc09e14eabee15de165L1-R2) [[2]](diffhunk://#diff-f48674f7557a6c623bb48120c41b4546b20b32f741cc13d82076b0f4b2375d98L1-R2) [[3]](diffhunk://#diff-a6831d9c98a26487c89c39532ec54d26f8987a8bdc88c5becb9368e9d7e589b9L1-R2) [[4]](diffhunk://#diff-60e145ef3296b0cb4bec35363cc8afbfe0b6b7bd0c7785fe16a11d98e38c6f29L1-R2) [[5]](diffhunk://#diff-6a7664740d6984e73a33254333a302a7e258c638a17134921c53967b4965a304L1-R3) [[6]](diffhunk://#diff-7b246ee6421c503c22d7994406b822ede18d7d0c791b7667a55fcd50524fb0b0L1-R2) * Improved clarity and consistency in the description and instructions within the `review-issue.prompt.md` file. **Documentation and style rules:** * Updated `.github/copilot-instructions.md` to clarify that C++ and C# style analyzers and formatters are now enforced from the `src/` directory, not the repo root, and made the C++ formatting rule more precise. ## PR Checklist - [N/A] Closes: #xxx - [N/A] **Tests:** Added/updated and all pass ## Validation Steps Performed - Not run (config/docs/build-script changes only).
105 lines
3.7 KiB
PowerShell
105 lines
3.7 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Light-weight wrapper to build local projects (solutions/projects) in the current working directory using helpers in build-common.ps1.
|
|
|
|
.DESCRIPTION
|
|
This script is intended for quick local builds. It dot-sources `build-common.ps1` and calls `BuildProjectsInDirectory` against the current directory. Use `-RestoreOnly` to only restore packages for local projects. If `-Platform` is omitted the script attempts to auto-detect the host platform.
|
|
|
|
.PARAMETER Platform
|
|
Target platform (e.g., 'x64', 'arm64'). If omitted the script will try to detect the host platform automatically.
|
|
|
|
.PARAMETER Configuration
|
|
Build configuration (e.g., 'Debug', 'Release'). Default: 'Debug'.
|
|
|
|
.PARAMETER Path
|
|
Optional directory path containing projects to build. If not specified, uses the current working directory.
|
|
|
|
.PARAMETER RestoreOnly
|
|
If specified, only perform package restore for local projects and skip the build steps for a solution file (i.e. .sln).
|
|
|
|
.PARAMETER ExtraArgs
|
|
Any remaining, positional arguments passed to the script are forwarded to MSBuild as additional arguments (e.g., '/p:CIBuild=true').
|
|
|
|
.EXAMPLE
|
|
.\tools\build\build.ps1
|
|
Builds any .sln/.csproj/.vcxproj in the current working directory (auto-detects Platform).
|
|
|
|
.EXAMPLE
|
|
.\tools\build\build.ps1 -Platform x64 -Configuration Release -Path "C:\MyProject\src"
|
|
Builds local projects in the specified directory for x64 Release.
|
|
|
|
.EXAMPLE
|
|
.\tools\build\build.ps1 -Platform x64 -Configuration Release
|
|
Builds local projects for x64 Release.
|
|
|
|
.EXAMPLE
|
|
.\tools\build\build.ps1 '/p:CIBuild=true' '/p:SomeOther=Value'
|
|
Pass additional MSBuild arguments; these are forwarded to the underlying msbuild calls.
|
|
|
|
.EXAMPLE
|
|
.\tools\build\build.ps1 -RestoreOnly '/p:CIBuild=true'
|
|
Only restores packages for local projects; ExtraArgs still forwarded to msbuild's restore phase.
|
|
|
|
.NOTES
|
|
- This file expects `build-common.ps1` to be located in the same folder and dot-sources it to load helper functions.
|
|
- ExtraArgs are captured using PowerShell's ValueFromRemainingArguments and joined before being passed to the helpers.
|
|
#>
|
|
|
|
param (
|
|
[string]$Platform = '',
|
|
[string]$Configuration = 'Debug',
|
|
[string]$Path = '',
|
|
[switch]$RestoreOnly,
|
|
[Parameter(ValueFromRemainingArguments=$true)]
|
|
[string[]]$ExtraArgs
|
|
)
|
|
|
|
. "$PSScriptRoot\build-common.ps1"
|
|
|
|
# Initialize Visual Studio dev environment
|
|
if (-not (Ensure-VsDevEnvironment)) { exit 1 }
|
|
|
|
# If user passed MSBuild-style args (e.g. './build.ps1 /p:CIBuild=true'),
|
|
# those will bind to $Platform/$Configuration; detect those and move them to ExtraArgs.
|
|
$positionalExtra = @()
|
|
if ($Platform -and $Platform -match '^[\/-]') {
|
|
$positionalExtra += $Platform
|
|
$Platform = ''
|
|
}
|
|
if ($Configuration -and $Configuration -match '^[\/-]') {
|
|
$positionalExtra += $Configuration
|
|
$Configuration = 'Debug'
|
|
}
|
|
if ($positionalExtra.Count -gt 0) {
|
|
if (-not $ExtraArgs) { $ExtraArgs = @() }
|
|
$ExtraArgs = $positionalExtra + $ExtraArgs
|
|
}
|
|
|
|
# Auto-detect platform when not provided
|
|
if (-not $Platform -or $Platform -eq '') {
|
|
try {
|
|
$Platform = Get-DefaultPlatform
|
|
Write-Host ("[AUTO-PLATFORM] Detected platform: {0}" -f $Platform)
|
|
} catch {
|
|
Write-Warning "Failed to auto-detect platform; defaulting to x64"
|
|
$Platform = 'x64'
|
|
}
|
|
}
|
|
|
|
$cwd = if ($Path) {
|
|
(Resolve-Path $Path).ProviderPath
|
|
} else {
|
|
(Get-Location).ProviderPath
|
|
}
|
|
$extraArgsString = $null
|
|
if ($ExtraArgs -and $ExtraArgs.Count -gt 0) { $extraArgsString = ($ExtraArgs -join ' ') }
|
|
|
|
$built = BuildProjectsInDirectory -DirectoryPath $cwd -ExtraArgs $extraArgsString -Platform $Platform -Configuration $Configuration -RestoreOnly:$RestoreOnly
|
|
if ($built) {
|
|
Write-Host "[BUILD] Local projects built; exiting."
|
|
exit 0
|
|
} else {
|
|
Write-Host "[BUILD] No local projects found in $cwd"
|
|
exit 0
|
|
}
|