mirror of
https://github.com/microsoft/calculator.git
synced 2024-12-21 19:31:13 -08:00
9f01c8168b
Description of the changes: Adjusted some of the values in .clang-format Add clang-format-all.ps1 Fix path to .clang-format in Calculator.sln How changes were validated: Manual.
91 lines
3.0 KiB
PowerShell
91 lines
3.0 KiB
PowerShell
<#
|
|
.DESCRIPTION
|
|
Helper script to format all header and source files in the repository.
|
|
|
|
By default, the script will recursively search under the repo root for
|
|
files to format. Users can give explicit parameters indicating how the
|
|
search should include and exclude filetypes.
|
|
|
|
If users don't want the search functionality, they can instead provide
|
|
an explicit list of files to format.
|
|
|
|
.PARAMETER RepoRoot
|
|
Full path to the root of the repository which is the target of the search.
|
|
Will default to the root of the current working directory.
|
|
|
|
.PARAMETER Include
|
|
Array of filetype extensions to target for formatting.
|
|
By default, targets standard extensions for header and source files.
|
|
Follows the same rules as the -Include parameter for Get-ChildItem.
|
|
|
|
.PARAMETER Exclude
|
|
Array of filetype extensions to exclude from formatting.
|
|
By default, excludes generated XAML files.
|
|
Follows the same rules as the -Exclude paramter for Get-ChildItem.
|
|
|
|
.PARAMETER Files
|
|
Array of files to format. The script will exit if one of the provided
|
|
filepaths does not exist.
|
|
|
|
.EXAMPLE
|
|
.\clang-format-all.ps1
|
|
|
|
Formats all header and source files under the repository root.
|
|
|
|
.EXAMPLE
|
|
.\clang-format-all.ps1 -RepoRoot 'S:\repos\calculator' -Include '*.h', '*.cpp' -Exclude '*.g.*'
|
|
|
|
Formats all *.h and *.cpp files under 'S:\repos\calculator', excluding files with an extension
|
|
like *.g.*
|
|
|
|
.EXAMPLE
|
|
.\clang-format-all.ps1 -File 'S:\repos\calculator\src\CalcViewModel\UnitConverterViewModel.h', 'S:\repos\calculator\src\CalcViewModel\MemoryItemViewModel.cpp'
|
|
|
|
Formats the specified files.
|
|
#>
|
|
[CmdletBinding( DefaultParameterSetName = 'Search' )]
|
|
param(
|
|
[Parameter( ParameterSetName = 'Search' )]
|
|
[ValidateScript({ Test-Path -PathType Container -Path $_ })]
|
|
[string] $RepoRoot = "$( git rev-parse --show-toplevel )",
|
|
|
|
[Parameter( ParameterSetName = 'Search' )]
|
|
[string[]] $Include = ( '*.h', '*.hh', '*.hpp', '*.c', '*.cc', '*.cpp' ),
|
|
|
|
[Parameter( ParameterSetName = 'Search' )]
|
|
[string[]] $Exclude = '*.g.*',
|
|
|
|
[Parameter(
|
|
ParameterSetName = 'Explicit',
|
|
Mandatory)]
|
|
[ValidateScript({
|
|
$_ | Where-Object { -not (Test-Path -PathType Leaf -Path $_) } |
|
|
ForEach-Object { throw "Could not find file: [$_]" }
|
|
|
|
return $true
|
|
})]
|
|
[string[]] $Files
|
|
)
|
|
|
|
if ($PSCmdlet.ParameterSetName -eq 'Explicit')
|
|
{
|
|
# Use the file paths we were given.
|
|
$targetFiles = @($Files)
|
|
}
|
|
else
|
|
{
|
|
# Gather the files to be formatted.
|
|
$targetFiles = @(
|
|
Get-ChildItem -Recurse -Path $RepoRoot -Include $Include -Exclude $Exclude |
|
|
Select-Object -ExpandProperty FullName
|
|
)
|
|
}
|
|
|
|
# Format the files.
|
|
$formatParams = @(
|
|
'-i' # In-place
|
|
'-style=file' # Search for a .clang-format file in the parent directory of the source file.
|
|
'-verbose'
|
|
)
|
|
|
|
clang-format $formatParams $targetFiles |