Cleanup of basics to work in Win + fixes to bugs
This commit is contained in:
parent
b558edacd9
commit
b303fa0f88
|
@ -14,10 +14,10 @@
|
||||||
[string[]]$AlsoEditTheseScripts
|
[string[]]$AlsoEditTheseScripts
|
||||||
)
|
)
|
||||||
|
|
||||||
$local:FilePaths = @() + $( Get-Profiles | Where-Object { $_.Exists -or $Force } | Select-Object -ExpandProperty Path )
|
[string[]]$local:FilePaths = @() + $( Get-Profiles | Where-Object { $_.Exists -or $Force } | Select-Object -ExpandProperty Path )
|
||||||
foreach( $local:p in $AlsoEditTheseScripts ) {
|
foreach( $local:p in $AlsoEditTheseScripts ) {
|
||||||
$local:sp = Join-Path $MyPSScriptRoot "$p`.ps1"
|
$local:sp = Join-Path $MyPSScriptRoot "$p`.ps1"
|
||||||
$FilePaths += $sp
|
$FilePaths += $sp
|
||||||
}
|
}
|
||||||
|
|
||||||
Edit-TextFile -sudo:$sudo $FilePaths
|
Edit-TextFile -sudo:$sudo -Path $FilePaths
|
||||||
|
|
|
@ -1,31 +1,44 @@
|
||||||
[CmdletBinding(SupportsShouldProcess)]param(
|
[CmdletBinding(SupportsShouldProcess)]param(
|
||||||
[switch]$sudo,
|
[switch]$sudo,
|
||||||
[Parameter(Position = 0, ValueFromRemainingArguments = $true)]
|
[Parameter(Position = 0, ValueFromPipeline, ValueFromRemainingArguments = $true)]
|
||||||
[string[]]$Path
|
[string[]]$Path
|
||||||
)
|
)
|
||||||
|
|
||||||
$local:editors = $env:EDITOR,'nvim','code'
|
begin {
|
||||||
$local:editor = $null
|
$PathForEditor = @()
|
||||||
foreach( $local:testEditor in $editors ) {
|
}
|
||||||
if( $(try{Get-Command -Type Application $testEditor -ErrorAction SilentlyContinue}catch{}) ) {
|
process {
|
||||||
$editor = $testEditor
|
foreach( $local:P in $Path ) {
|
||||||
break;
|
$PathForEditor += $P | Get-Path -Expand
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( $editor -match 'vim?$' ) {
|
end {
|
||||||
$editor += ' -p'
|
$local:editors = $env:EDITOR,'nvim','code'
|
||||||
}
|
$local:editor = $null
|
||||||
|
foreach( $local:testEditor in $editors ) {
|
||||||
|
if( $(try{Get-Command -Type Application $testEditor -ErrorAction SilentlyContinue}catch{}) ) {
|
||||||
|
$editor = $testEditor
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if( $editor -match 'code(\.exe)?$' ) {
|
if( $editor -match 'vim?$' ) {
|
||||||
if( -not (Get-Process -Name 'code' -ErrorAction SilentlyContinue) ) {
|
$editor += ' -p'
|
||||||
Invoke-ExpressionEx -sudo:$sudo $editor
|
}
|
||||||
|
|
||||||
|
if( $editor -match 'code(\.exe)?$' ) {
|
||||||
|
if( -not (Get-Process -Name 'code' -ErrorAction SilentlyContinue) ) {
|
||||||
|
Invoke-ExpressionEx -sudo:$sudo $editor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Verbose $($Path | Out-String)
|
||||||
|
|
||||||
|
$local:arguments = $PathForEditor | Foreach-Object { "'$_'" }
|
||||||
|
if( $Path ) { $arguments = "$arguments" }
|
||||||
|
|
||||||
|
if( $PSCmdlet.ShouldProcess( "Edit ($editor): $arguments" ) ) {
|
||||||
|
Invoke-ExpressionEx -sudo:$sudo $editor "$arguments"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$local:arguments = $Path | Get-Path -Expand | Join-String -Separator "' '"
|
|
||||||
if( $Path ) { $arguments = "'$arguments'" }
|
|
||||||
|
|
||||||
if( $PSCmdlet.ShouldProcess( "Edit ($editor): $arguments" ) ) {
|
|
||||||
Invoke-ExpressionEx -sudo:$sudo $editor "$arguments"
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,8 +1,31 @@
|
||||||
[CmdletBinding(SupportsShouldProcess)]param()
|
[CmdletBinding(SupportsShouldProcess)]param()
|
||||||
|
|
||||||
try { Get-Alias Get-MyAliases -ErrorAction Stop | ForEach-Object { Remove-Item "Alias:$($_.Name)" } } catch {}
|
function RemoveAlias {
|
||||||
|
param([string]$Name)
|
||||||
|
$local:a = $Name | Where-Object { $_ } | Get-Alias -ErrorAction SilentlyContinue
|
||||||
|
if ( -not $a ) { return }
|
||||||
|
if ( Get-Command Remove-Alias -ErrorAction SilentlyContinue ) {
|
||||||
|
$a | Remove-Alias -Scope $MyAliasScope -ErrorAction SilentlyContinue
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Remove-Item "Alias:$a"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function SafeSetAlias {
|
||||||
|
param([string]$Name, [string]$Value, [string]$Description)
|
||||||
|
|
||||||
|
. RemoveAlias $Name
|
||||||
|
try {
|
||||||
|
Set-Alias $Name $Value -Scope $MyAliasScope -Description:$Description -ErrorAction Stop
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Set-Alias $Name $Value -Scope $MyAliasScope -Description:$Description -Option AllScope
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try { Get-Alias Get-MyAliases -ErrorAction Stop | ForEach-Object { . RemoveAlias $($_.Name) } } catch {}
|
||||||
function Get-MyAliases {
|
function Get-MyAliases {
|
||||||
[CmdletBinding(SupportsShouldProcess)]param([switch]$ScriptsOnly)
|
[CmdletBinding()]param([switch]$ScriptsOnly)
|
||||||
|
|
||||||
$local:allAliases = @()
|
$local:allAliases = @()
|
||||||
|
|
||||||
|
@ -13,16 +36,17 @@ function Get-MyAliases {
|
||||||
try {
|
try {
|
||||||
$local:newAliases += Get-Alias -Scope $_scope |
|
$local:newAliases += Get-Alias -Scope $_scope |
|
||||||
Where-Object {
|
Where-Object {
|
||||||
($_.Definition -match "^$MyPSScriptRoot") -or (-not $ScriptsOnly -and ($_.Description -match '#MyAlias'))
|
($_.Definition -like "$MyPSScriptRoot*") -or (-not $ScriptsOnly -and ($_.Description -match '#MyAlias'))
|
||||||
}
|
}
|
||||||
if( $newAliases ) {
|
if ( $newAliases ) {
|
||||||
$allAliases += $newAliases
|
$allAliases += $newAliases
|
||||||
$MyAliasScope = $_scope;
|
$MyAliasScope = $_scope;
|
||||||
Write-Verbose "`$MyAliasScope is now set to $MyAliasScope"
|
Write-Verbose "`$MyAliasScope is now set to $MyAliasScope"
|
||||||
}
|
}
|
||||||
} catch {
|
}
|
||||||
|
catch {
|
||||||
Write-Verbose "catch: $($_.Exception.Message)"
|
Write-Verbose "catch: $($_.Exception.Message)"
|
||||||
$_done = $_.Exception.Message -match 'The scope .* exceeds'
|
$_done = $_.Exception.Message -match 'The scope .* exceeds'
|
||||||
}
|
}
|
||||||
$_scope += 1
|
$_scope += 1
|
||||||
} until ( $_done )
|
} until ( $_done )
|
||||||
|
@ -30,8 +54,9 @@ function Get-MyAliases {
|
||||||
$allAliases
|
$allAliases
|
||||||
}
|
}
|
||||||
|
|
||||||
function getScriptName{param([string]$FullPath)
|
function getScriptName {
|
||||||
$FullPath -replace '\.ps1$','' -replace "^$([regex]::Escape($MyPSScriptRoot)).",''
|
param([string]$FullPath)
|
||||||
|
$FullPath -replace '\.ps1$', '' -replace "^$([regex]::Escape($MyPSScriptRoot)).", ''
|
||||||
}
|
}
|
||||||
|
|
||||||
$local:IsVerbose = [bool]($PSBoundParameters['Verbose'])
|
$local:IsVerbose = [bool]($PSBoundParameters['Verbose'])
|
||||||
|
@ -39,7 +64,8 @@ $local:IsVerbose = [bool]($PSBoundParameters['Verbose'])
|
||||||
# Loads mandatory Package code
|
# Loads mandatory Package code
|
||||||
try {
|
try {
|
||||||
$null = [Packagesz]
|
$null = [Packagesz]
|
||||||
} catch {
|
}
|
||||||
|
catch {
|
||||||
$local:PackagePath = $(Join-Path $MyPSScriptRoot 'base')
|
$local:PackagePath = $(Join-Path $MyPSScriptRoot 'base')
|
||||||
Join-Path $(Join-Path $PackagePath profile.d) 'classes.ps1' |
|
Join-Path $(Join-Path $PackagePath profile.d) 'classes.ps1' |
|
||||||
Where-Object { Test-Path $_ } | ForEach-Object { . $_ }
|
Where-Object { Test-Path $_ } | ForEach-Object { . $_ }
|
||||||
|
@ -62,21 +88,17 @@ $local:oldAliases = Get-MyAliases
|
||||||
$oldAliases = Get-Alias -Scope $MyAliasScope |
|
$oldAliases = Get-Alias -Scope $MyAliasScope |
|
||||||
Where-Object Name -in $($oldAliases.Name + $myAliases.Keys)
|
Where-Object Name -in $($oldAliases.Name + $myAliases.Keys)
|
||||||
|
|
||||||
if( $oldAliases -and $IsVerbose ) {
|
if ( $oldAliases -and $IsVerbose ) {
|
||||||
Write-Verbose "Removing: $($oldAliases.Name -join ', ')"
|
Write-Verbose "Removing: $($oldAliases.Name -join ', ')"
|
||||||
}
|
}
|
||||||
if( Get-Command Remove-Alias -ErrorAction SilentlyContinue ) {
|
$oldAliases | ForEach-Object { . RemoveAlias $($_.Name) }
|
||||||
$oldAliases | Remove-Alias -Scope $MyAliasScope
|
|
||||||
} else {
|
|
||||||
$oldAliases | ForEach-Object { Remove-Item "Alias:$($_.Name)" }
|
|
||||||
}
|
|
||||||
|
|
||||||
if( $(. Get-ScopeDepth) -gt 0 ) {
|
if ( $(. Get-ScopeDepth) -gt 0 ) {
|
||||||
Write-Host -ForegroundColor Red "Try sourcing Reload-MyScripts instead of just running it"
|
Write-Host -ForegroundColor Red "Try sourcing Reload-MyScripts instead of just running it"
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach( $local:PackagePath in $myPackages ) {
|
foreach ( $local:PackagePath in $myPackages ) {
|
||||||
$local:PackageName = $PackagePath.Name
|
#$local:PackageName = $PackagePath.Name
|
||||||
|
|
||||||
Join-Path $PackagePath 'profile.d' | Where-Object { Test-Path $_ } |
|
Join-Path $PackagePath 'profile.d' | Where-Object { Test-Path $_ } |
|
||||||
Get-ChildItem -Filter '*.ps1' |
|
Get-ChildItem -Filter '*.ps1' |
|
||||||
|
@ -88,24 +110,25 @@ foreach( $local:PackagePath in $myPackages ) {
|
||||||
|
|
||||||
$local:CommandsToAlias = (
|
$local:CommandsToAlias = (
|
||||||
@( $PackagePath ) + $(
|
@( $PackagePath ) + $(
|
||||||
[SystemName]::_GetValidValues("",$true,$true) |
|
[SystemName]::_GetValidValues("", $true, $true) |
|
||||||
ForEach-Object {
|
ForEach-Object {
|
||||||
Join-Path $PackagePath "sys.$_"
|
Join-Path $PackagePath "sys.$_"
|
||||||
}
|
}
|
||||||
)) |
|
)) |
|
||||||
Where-Object { Test-Path $_ } |
|
Where-Object { Test-Path $_ } |
|
||||||
ForEach-Object {
|
ForEach-Object {
|
||||||
Get-ChildItem (Join-Path $_ '*.ps1') | Where-Object Name -notmatch '\.inc\.ps1$'
|
Get-ChildItem (Join-Path $_ '*.ps1') | Where-Object Name -notmatch '\.inc\.ps1$'
|
||||||
}
|
}
|
||||||
|
|
||||||
$CommandsToAlias | ForEach-Object {
|
foreach ( $local:newAlias in $CommandsToAlias ) {
|
||||||
Write-Verbose "Creating alias for $(getScriptName $_.FullName) Script..."
|
Write-Verbose "Creating alias for $(getScriptName $newAlias.FullName) Script..."
|
||||||
Set-Alias $($_.BaseName) $_.FullName -Scope $MyAliasScope
|
. SafeSetAlias $($newAlias.BaseName) $($newAlias.FullName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach( $local:alias in $myAliases.Keys ) {
|
foreach ( $local:alias in $myAliases.Keys ) {
|
||||||
Write-Verbose "Adding $($alias) alias..."
|
Write-Verbose "Adding $($alias) alias..."
|
||||||
Set-Alias -Name $alias -Value $myAliases[$alias] -Description '#MyAlias' -Scope $MyAliasScope
|
. SafeSetAlias $alias $myAliases[$alias] '#MyAlias'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Remove-Item Function:\RemoveAlias, Function:\SafeSetAlias -ErrorAction SilentlyContinue
|
Loading…
Reference in New Issue