diff --git a/base/Get-Path.ps1 b/base/Get-Path.ps1 index 7dccf1f..49c9a92 100644 --- a/base/Get-Path.ps1 +++ b/base/Get-Path.ps1 @@ -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 { diff --git a/base/profile.d/MyConfig.class.ps1 b/base/profile.d/MyConfig.class.ps1 index 8d2d42b..eea89f3 100644 --- a/base/profile.d/MyConfig.class.ps1 +++ b/base/profile.d/MyConfig.class.ps1 @@ -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 } } diff --git a/base/profile.d/MyScript.class.ps1 b/base/profile.d/MyScript.class.ps1 index ed219be..d137685 100644 --- a/base/profile.d/MyScript.class.ps1 +++ b/base/profile.d/MyScript.class.ps1 @@ -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 '\\',"\\")[/\\]",'' } diff --git a/base/src/config.files.json b/base/src/config.files.json index c5bb83b..5fd9038 100644 --- a/base/src/config.files.json +++ b/base/src/config.files.json @@ -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", diff --git a/shell-loading-snippets/bash b/shell-loading-snippets/bash new file mode 100755 index 0000000..dae7cc7 --- /dev/null +++ b/shell-loading-snippets/bash @@ -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 + + + diff --git a/shell-loading-snippets/sh b/shell-loading-snippets/sh new file mode 100755 index 0000000..dae7cc7 --- /dev/null +++ b/shell-loading-snippets/sh @@ -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 + + + diff --git a/shell-loading-snippets/zsh b/shell-loading-snippets/zsh new file mode 100755 index 0000000..82e1b73 --- /dev/null +++ b/shell-loading-snippets/zsh @@ -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 + +