Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
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
Binary file removed BIN -5.33 KB PotentialContribution/ModuleBuilder.psd1
Binary file not shown.
239 changes: 0 additions & 239 deletions 239 PotentialContribution/ModuleBuilder.psm1

This file was deleted.

1 change: 1 addition & 0 deletions 1 Source/ModuleBuilder.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@

# Always define FunctionsToExport as an empty @() which will be replaced on build
FunctionsToExport = @()
AliasesToExport = @()

# ID used to uniquely identify this module
GUID = '4775ad56-8f64-432f-8da7-87ddf7a34653'
Expand Down
36 changes: 36 additions & 0 deletions 36 Source/Private/ConvertToAst.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
function ConvertToAst {
<#
.SYNOPSIS
Parses the given code and returns an object with the AST, Tokens and ParseErrors
#>
param(
# The script content, or script or module file path to parse
[Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)]
[Alias("Path", "PSPath", "Definition", "ScriptBlock", "Module")]
$Code
)
process {
Write-Debug " ENTER: ConvertToAst $Code"
$ParseErrors = $null
$Tokens = $null
if ($Code | Test-Path -ErrorAction SilentlyContinue) {
Write-Debug " Parse Code as Path"
$AST = [System.Management.Automation.Language.Parser]::ParseFile(($Code | Convert-Path), [ref]$Tokens, [ref]$ParseErrors)
} elseif ($Code -is [System.Management.Automation.FunctionInfo]) {
Write-Debug " Parse Code as Function"
$String = "function $($Code.Name) { $($Code.Definition) }"
$AST = [System.Management.Automation.Language.Parser]::ParseInput($String, [ref]$Tokens, [ref]$ParseErrors)
} else {
Write-Debug " Parse Code as String"
$AST = [System.Management.Automation.Language.Parser]::ParseInput([String]$Code, [ref]$Tokens, [ref]$ParseErrors)
}

Write-Debug " EXIT: ConvertToAst"
[PSCustomObject]@{
PSTypeName = "PoshCode.ModuleBuilder.ParseResults"
ParseErrors = $ParseErrors
Tokens = $Tokens
AST = $AST
}
}
}
23 changes: 23 additions & 0 deletions 23 Source/Private/GetCommandAlias.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
function GetCommandAlias {
[CmdletBinding()]
param(
# Path to the PSM1 file to amend
[Parameter(Mandatory, ValueFromPipelineByPropertyName, ValueFromPipeline)]
[System.Management.Automation.Language.Ast]$AST
)
begin {
$Result = [Ordered]@{}
}
process {
foreach($function in $AST.FindAll(
{ $Args[0] -is [System.Management.Automation.Language.FunctionDefinitionAst] },
$false )
) {
$Result[$function.Name] = $function.Body.ParamBlock.Attributes.Where{
$_.TypeName.Name -eq "Alias" }.PositionalArguments.Value
}
}
end {
$Result
}
}
23 changes: 10 additions & 13 deletions 23 Source/Private/MoveUsingStatements.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -19,27 +19,24 @@ function MoveUsingStatements {
Param(
# Path to the PSM1 file to amend
[Parameter(Mandatory, ValueFromPipelineByPropertyName, ValueFromPipeline)]
$RootModule,
[System.Management.Automation.Language.Ast]$AST,

[Parameter(ValueFromPipelineByPropertyName, ValueFromPipeline)]
[AllowNull()]
[System.Management.Automation.Language.ParseError[]]$ParseErrors,

# The encoding defaults to UTF8 (or UTF8NoBom on Core)
[Parameter(DontShow)]
[string]$Encoding = $(if ($IsCoreCLR) { "UTF8NoBom" } else { "UTF8" })
)

$ParseError = $null
$AST = [System.Management.Automation.Language.Parser]::ParseFile(
$RootModule,
[ref]$null,
[ref]$ParseError
)

# Avoid modifying the file if there's no Parsing Error caused by Using Statements or other errors
if (!$ParseError.Where{$_.ErrorId -eq 'UsingMustBeAtStartOfScript'}) {
if (!$ParseErrors.Where{$_.ErrorId -eq 'UsingMustBeAtStartOfScript'}) {
Write-Debug "No Using Statement Error found."
return
}
# Avoid modifying the file if there's other parsing errors than Using Statements misplaced
if ($ParseError.Where{$_.ErrorId -ne 'UsingMustBeAtStartOfScript'}) {
if ($ParseErrors.Where{$_.ErrorId -ne 'UsingMustBeAtStartOfScript'}) {
Write-Warning "Parsing errors found. Skipping Moving Using statements."
return
}
Expand Down Expand Up @@ -70,13 +67,13 @@ function MoveUsingStatements {
$null = [System.Management.Automation.Language.Parser]::ParseInput(
$ScriptText,
[ref]$null,
[ref]$ParseError
[ref]$ParseErrors
)

if ($ParseError) {
if ($ParseErrors) {
Write-Warning "Oops, it seems that we introduced parsing error(s) while moving the Using Statements. Cancelling changes."
}
else {
$null = Set-Content -Value $ScriptText -Path $RootModule -Encoding $Encoding
}
}
}
Loading
Morty Proxy This is a proxified and sanitized view of the page, visit original site.