I give you all, probably the most unused function on the planet. The “Make one-liner”!
It’s probably not even close to “Complete” but it is easy to add exceptions on where to format.
Function Main{
$ScriptString = Get-Content [enter powershell script path here]
Make-Oneliner $ScriptString
}
Function Make-Oneliner{
Param([Array]$array)
[string]$OneLiner = @()
Foreach($Line1 in $array){
$Line1 = $Line1.Split("#")[0]
$Line1 = $Line1.Trim()
Foreach($Line in $Line1){
#Parse and add ;
If(
($line.EndsWith("`{")) -or
($line.EndsWith("`;")) -or
($line.EndsWith("`(")) -or
($line.EndsWith("`|")) -or
($line.EndsWith("`]"))
){
$OneLiner += $Line
}
Elseif($line.EndsWith("`'")){
if(($Line.Split("`'").Count % 1) -eq 0){
$Line = $Line + "`;"
$OneLiner += $Line
}
}
Elseif($line.EndsWith("`"")){
if(($Line.Split("`"").Count % 1) -eq 0){
$Line = $Line + "`;"
$OneLiner += $Line
}
}
Elseif($Line.StartsWith("#")){
# do nothing
}
Else{
$Line = $Line + "`;"
$OneLiner += $Line
}
}
}
# Cleanup inappropriate ";".
$OneLiner = $OneLiner.Replace(';)',')').Replace(',;',',').Replace(';;',';').Replace(';;',';')
# Cleanup inappropriate ";" on words using insensitive replace methods.
$OneLiner = $OneLiner -ireplace '};else','}else'
$OneLiner = $OneLiner -ireplace '};catch','}catch'
$OneLiner = $OneLiner -ireplace '};finally','}finally'
Return $OneLiner
}
Main
