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:
Kevin Marquette
2017-05-03 00:08:41 -07:00
committed by GitHub
parent 5cacaa2ebd
commit 3fdc8a02d9
9 changed files with 161 additions and 103 deletions

View File

@@ -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)
}
}
}

View File

@@ -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)
}
}
}