Create a merged psm1 file when published (#16) !deploy
* Added auto discovery fo files to monitor. * Fixed scriptanalyzer rule * Adjusted the parameter attributes * testing feature specifications * Added module building * Exceptions and spacing
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
|
||||
|
||||
function Format-Chronometer
|
||||
{
|
||||
<#
|
||||
@@ -11,21 +9,21 @@ function Format-Chronometer
|
||||
$resultes = Get-Chronometer -Path $script.fullname -ScriptBlock {Invoke-Pester C:\workspace\PSGraph}
|
||||
$results | Format-Chronometer -WarnAt 20 -ErrorAt 200
|
||||
#>
|
||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSAvoidUsingWriteHost","")]
|
||||
[cmdletbinding(DefaultParameterSetName='Script')]
|
||||
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSAvoidUsingWriteHost", "")]
|
||||
[cmdletbinding(DefaultParameterSetName = 'Script')]
|
||||
param(
|
||||
# This is a MonitoredScript object from Get-Chronometer
|
||||
[Parameter(
|
||||
ValueFromPipeline=$true,
|
||||
ParameterSetName='Script'
|
||||
ValueFromPipeline = $true,
|
||||
ParameterSetName = 'Script'
|
||||
)]
|
||||
[MonitoredScript[]]
|
||||
$InputObject,
|
||||
|
||||
# This is a ScriptLine object from a MonitoredScript object
|
||||
# This is a ScriptLine object from a MonitoredScript object
|
||||
[Parameter(
|
||||
ValueFromPipeline=$true,
|
||||
ParameterSetName='Line'
|
||||
ValueFromPipeline = $true,
|
||||
ParameterSetName = 'Line'
|
||||
)]
|
||||
[ScriptLine[]]
|
||||
$Line,
|
||||
@@ -45,21 +43,28 @@ function Format-Chronometer
|
||||
|
||||
process
|
||||
{
|
||||
foreach($script in $InputObject)
|
||||
{
|
||||
if($script.ExecutionTime -ne [TimeSpan]::Zero -or $ShowAll)
|
||||
{
|
||||
Write-Host ''
|
||||
Write-Host "Script: $($script.Path)" -ForegroundColor Green
|
||||
Write-Host "Execution Time: $($script.ExecutionTime)" -ForegroundColor Green
|
||||
|
||||
$script.line | Format-Chronometer -WarningAt $WarningAt -ErrorAt $ErrorAt
|
||||
}
|
||||
}
|
||||
|
||||
foreach($command in $Line)
|
||||
try
|
||||
{
|
||||
Write-ScriptLine $command -WarningAt $WarningAt -ErrorAt $ErrorAt
|
||||
foreach ( $script in $InputObject )
|
||||
{
|
||||
if ( $script.ExecutionTime -ne [TimeSpan]::Zero -or $ShowAll )
|
||||
{
|
||||
Write-Host ''
|
||||
Write-Host "Script: $($script.Path)" -ForegroundColor Green
|
||||
Write-Host "Execution Time: $($script.ExecutionTime)" -ForegroundColor Green
|
||||
|
||||
$script.line | Format-Chronometer -WarningAt $WarningAt -ErrorAt $ErrorAt
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( $command in $Line )
|
||||
{
|
||||
Write-ScriptLine $command -WarningAt $WarningAt -ErrorAt $ErrorAt
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
$PSCmdlet.ThrowTerminatingError($PSItem)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,47 +23,56 @@ function Get-Chronometer
|
||||
$LineNumber = $null,
|
||||
|
||||
# The script to start the scrupt or execute other commands
|
||||
[Parameter(Position=0)]
|
||||
[alias('Script','CommandScript')]
|
||||
[Parameter(Position = 0)]
|
||||
[alias('Script', 'CommandScript')]
|
||||
[scriptblock]
|
||||
$ScriptBlock
|
||||
|
||||
$ScriptBlock
|
||||
)
|
||||
|
||||
if( $null -eq $Path )
|
||||
process
|
||||
{
|
||||
$Path = Get-ChildItem -Recurse -Include *.psm1,*.ps1 -File
|
||||
}
|
||||
|
||||
if($Path.FullName)
|
||||
{
|
||||
$Path = $Path.FullName
|
||||
}
|
||||
|
||||
$Chronometer = [Chronometer]::New()
|
||||
|
||||
Write-Verbose "Setting breapoints"
|
||||
$Chronometer.AddBreakpoint($Path,$LineNumber)
|
||||
|
||||
if($null -ne $Chronometer.breakPoint -and $null -ne $ScriptBlock)
|
||||
{
|
||||
Write-Verbose "Executing Script"
|
||||
[ScriptProfiler]::Start()
|
||||
[void] $ScriptBlock.Invoke($Path)
|
||||
|
||||
Write-Verbose "Clearing Breapoints"
|
||||
$Chronometer.ClearBreakpoint()
|
||||
|
||||
Write-Verbose "Processing data"
|
||||
foreach($node in [ScriptProfiler]::Queue.GetEnumerator())
|
||||
try
|
||||
{
|
||||
$Chronometer.AddExecution($node)
|
||||
}
|
||||
if ( $null -eq $Path )
|
||||
{
|
||||
$Path = Get-ChildItem -Recurse -Include *.psm1, *.ps1 -File
|
||||
}
|
||||
|
||||
Write-Output $Chronometer.GetResults()
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Warning "Parsing files did not result in any breakpoints"
|
||||
if ( $Path.FullName )
|
||||
{
|
||||
$Path = $Path.FullName
|
||||
}
|
||||
|
||||
$Chronometer = [Chronometer]::New()
|
||||
|
||||
Write-Verbose "Setting breapoints"
|
||||
$Chronometer.AddBreakpoint($Path, $LineNumber)
|
||||
|
||||
if ( $null -ne $Chronometer.breakPoint -and $null -ne $ScriptBlock )
|
||||
{
|
||||
Write-Verbose "Executing Script"
|
||||
[ScriptProfiler]::Start()
|
||||
[void] $ScriptBlock.Invoke($Path)
|
||||
|
||||
Write-Verbose "Clearing Breapoints"
|
||||
$Chronometer.ClearBreakpoint()
|
||||
|
||||
Write-Verbose "Processing data"
|
||||
foreach ( $node in [ScriptProfiler]::Queue.GetEnumerator() )
|
||||
{
|
||||
$Chronometer.AddExecution($node)
|
||||
}
|
||||
|
||||
Write-Output $Chronometer.GetResults()
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Warning "Parsing files did not result in any breakpoints"
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
$PSCmdlet.ThrowTerminatingError($PSItem)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user