Streamlined pwsz loading from Linux shells

Get-Path updated to support @ notation.
MyConfig class updated to resolve Paths before testing.
MyScript class will look recursivley - this might need to change again.
config.files.json updated to support shell-loading-snippets
shell-loading-snippets added, with single line of code to inject into
startup shell scripts (.zshrc, .bashrc, .shrc)
This commit is contained in:
Gal Szkolnik 2020-12-01 23:31:42 -05:00
parent e34d9d4e4d
commit c6cc116564
7 changed files with 73 additions and 3 deletions

View File

@ -1,6 +1,9 @@
[CmdletBinding()]param([string]$Path)
try {
if( $Path[0] -eq '@' ) {
$Path = Join-Path $MyPSScriptRoot $Path.Substring(1)
}
get-item $Path -Force -ErrorAction Stop |
Select-Object -ExpandProperty FullName
} catch {

View File

@ -39,9 +39,10 @@ class MyConfig { #: System.Management.Automation.IValidateSetValuesGenerator {
$local:exists = $false;
$local:first = $null
foreach( $local:configPath in $flatConfigList ) {
$configPath = Get-Path $configPath
if( -not $first ) { $first = $configPath }
if( $Force -or (Test-Path $configPath) ) {
$result += Get-Path $configPath
$result += $configPath
$exists = $true
}
}

View File

@ -2,7 +2,7 @@ class MyScript { #: System.Management.Automation.IValidateSetValuesGenerator {
static [string[]] _GetValidValues([string]$wordToComplete,[bool]$CurrentOnly,[bool]$Strict) {
$local:possibleValues = $(
Get-MyPackages -ReturnFullPath -IncludeRoot -Force:$(-not $CurrentOnly) |
Get-ChildItem -Filter '*.ps1' |
Get-ChildItem -Recurse -Filter '*.ps1' |
Select-Object -ExpandProperty FullName | ForEach-Object {
$_ -replace '\.ps1$','' -replace "$($MyPSScriptRoot -replace '\\',"\\")[/\\]",''
}

View File

@ -16,6 +16,7 @@
"vi": "~/.virc",
"sz-local-rc": "~/.sz.local.sh",
"zshrc": "~/.zshrc",
"shrc": "~/.shrc",
"ansible": [
"/etc/ansible/ansible.cfg",
"/opt/ansible/ansible.cfg",
@ -26,9 +27,15 @@
"~/.vimrc",
"~/.vim/vimrc"
],
"sz-shrc": [
"#shrc",
"@shell-loading-snippets/bash",
"@shell-loading-snippets/sh"
],
"sz-zshrc": [
"~/.sz.zshrc.sh",
"#zshrc"
"#zshrc",
"@shell-loading-snippets/zsh"
],
"tmux": [
"~/.tmux.conf",

20
shell-loading-snippets/bash Executable file
View File

@ -0,0 +1,20 @@
## Place the following line at the top of your .zshrc to make powershell your default shell.
# local P=".local/share/powershell/Scripts/shell-loading-snippets/$(basename $SHELL)"; find ~/$P -exec echo 'Starting PowerShell SZcripts...' \; && . ~/$P
if [[ -x ~/.dotnet/tools/pwsh && "1" != "$(which pwsh > /dev/null && echo 1)" ]]; then
PWSH='~/.dotnet/tools/pwsh'
alias pwsh="$PWSH "
export DOTNET_CLI_TELEMETRY_OPTOUT=1
fi
echo "$(date) SZ_SKIP_DEFAULT_SHELL='$SZ_SKIP_DEFAULT_SHELL'; pwsh: $(which pwsh); Setup-Profile: $(ls ~/.local/share/powershell/Scripts/base/Setup-Profile.ps1) " >> /tmp/default_shell
if [[ "$SZ_SKIP_DEFAULT_SHELL" != "1" && "1" == "$(which pwsh > /dev/null && echo 1)" && -f ~/.local/share/powershell/Scripts/base/Setup-Profile.ps1 ]]; then
echo "pwsh" >> /tmp/default_shell
pwsh
exit
fi
echo "continue" >> /tmp/default_shell
export SZ_SKIP_DEFAULT_SHELL=1

20
shell-loading-snippets/sh Executable file
View File

@ -0,0 +1,20 @@
## Place the following line at the top of your .zshrc to make powershell your default shell.
# local P=".local/share/powershell/Scripts/shell-loading-snippets/$(basename $SHELL)"; find ~/$P -exec echo 'Starting PowerShell SZcripts...' \; && . ~/$P
if [[ -x ~/.dotnet/tools/pwsh && "1" != "$(which pwsh > /dev/null && echo 1)" ]]; then
PWSH='~/.dotnet/tools/pwsh'
alias pwsh="$PWSH "
export DOTNET_CLI_TELEMETRY_OPTOUT=1
fi
echo "$(date) SZ_SKIP_DEFAULT_SHELL='$SZ_SKIP_DEFAULT_SHELL'; pwsh: $(which pwsh); Setup-Profile: $(ls ~/.local/share/powershell/Scripts/base/Setup-Profile.ps1) " >> /tmp/default_shell
if [[ "$SZ_SKIP_DEFAULT_SHELL" != "1" && "1" == "$(which pwsh > /dev/null && echo 1)" && -f ~/.local/share/powershell/Scripts/base/Setup-Profile.ps1 ]]; then
echo "pwsh" >> /tmp/default_shell
pwsh
exit
fi
echo "continue" >> /tmp/default_shell
export SZ_SKIP_DEFAULT_SHELL=1

19
shell-loading-snippets/zsh Executable file
View File

@ -0,0 +1,19 @@
## Place the following line at the top of your .zshrc to make powershell your default shell.
# local P=".local/share/powershell/Scripts/shell-loading-snippets/$(basename $SHELL)"; find ~/$P -exec echo 'Starting PowerShell SZcripts...' \; && . ~/$P
if [[ -x ~/.dotnet/tools/pwsh && "1" != "$(which pwsh > /dev/null && echo 1)" ]]; then
PWSH='~/.dotnet/tools/pwsh'
alias pwsh="$PWSH "
export DOTNET_CLI_TELEMETRY_OPTOUT=1
fi
echo "$(date) SZ_SKIP_DEFAULT_SHELL='$SZ_SKIP_DEFAULT_SHELL'; pwsh: $(which pwsh); Setup-Profile: $(ls ~/.local/share/powershell/Scripts/base/Setup-Profile.ps1) " >> /tmp/default_shell
if [[ "$SZ_SKIP_DEFAULT_SHELL" != "1" && "1" == "$(which pwsh > /dev/null && echo 1)" && -f ~/.local/share/powershell/Scripts/base/Setup-Profile.ps1 ]]; then
echo "pwsh" >> /tmp/default_shell
pwsh
exit
fi
echo "continue" >> /tmp/default_shell
export SZ_SKIP_DEFAULT_SHELL=1