X-Git-Url: https://us-delaporte.pagekite.me/gitweb/dotfiles.git/blobdiff_plain/3c6667a7becc94534caefc7e64a340a992f2ecf7..ae3a6357cf4b2b89d393a95726057b80c3d35cf2:/files/Microsoft.PowerShell_profile.ps1?ds=sidebyside diff --git a/files/Microsoft.PowerShell_profile.ps1 b/files/Microsoft.PowerShell_profile.ps1 index 3cbce8b..ca2f5e1 100644 --- a/files/Microsoft.PowerShell_profile.ps1 +++ b/files/Microsoft.PowerShell_profile.ps1 @@ -1,147 +1,129 @@ -#WebDriverException: Message: unknown error: cannot determine loading status .EXAMPLE -# . C:\src\dotfiles\Microsoft.PowerShell_profile.ps1 - -# Courtesty of MKletz -# Get-ChildItem -Path 'C:\Repos' -Filter "*.psd1" -Recurse | ForEach-Object -Process { -# $Path = Split-Path -Path $_.Directory -Parent -# $env:PSModulePath = $env:PSModulePath + ";$($Path)" -#} -# $env:PSModulePath = $env:PSModulePath.Replace("\\ad.uillinois.edu\techsvc\home\$($ENV:USERNAME)\Documents\PowerShell\Modules;",'') - -$env:src = "~\src" -if($IsWindows){ - $env:src = "c:\src" +$env:src = "$HOME\src" +$env:dotfiles = Join-Path $HOME "dotfiles" +$env:journal = Join-Path $HOME "Journal" +$env:nvim = Join-Path $HOME "\AppData\Local\nvim" + +if($IsWindows) { + $env:journal = Join-Path $HOME "Box\Journal" + $env:nvim = Join-Path $HOME "\AppData\Local\nvim" } -if($IsWindows){ - # Some Paths that are annoying to find/restore if the installer fails - $ENV:PATH+=";$env:src\bin" # anything else I need - $ENV:PATH+=";C:\Program Files\Microsoft VS Code\bin" # One Editor to rule them all - $ENV:PATH+=";C:\Program Files\Git\cmd" # Version control is nice. - $ENV:PATH+=";C:\ProgramData\chocolatey\bin" # Package management is nice. - $ENV:PATH+=";C:\bin\x16emu" # Package management is nice. - $ENV:PATH+=";C:\Program Files (x86)\GnuWin32\bin" # GNU Utils - i.e. rm - $ENV:PATH+=";C:\PENGUIN" # Flag to ensure my profile kicked in. - $ENV:PATH+=";$env:src\x16-demo\tools" # x16 python tools - $ENV:PATH+=";$env:src\flutter\bin" # Flutter for Dart -} -else { - $ENV:PATH+=";$env:src/bin" # anything else I need - $ENV:PATH+=":$HOME/x16/x16-emulator" # x16 Emulator - $ENV:PATH+=":$HOME/src/x16-demo/tools" # x16 python tools -} - -# Command line tools -$ENV:PATH+=";$env:src\chart" # command line chart utility edthedev\chart -$ENV:PATH+=";$env:src\agenda" # command line chart utility edthedev\chart -$ENV:PATH+=";$env:src\todolist" # todo list utility edthedev\todolist -$env:todolist = "C:\Users\delaport\Journal\" -# New-Alias todo todolist - -# alias renumber $HOME/src/x16-demo/ - -$env:Journal = "~\Journal" # allows cd $env:journal -$env:minion = "$env:src\minion" -# Import some home grown PowerShell modules, if they are installed. -# -$modPaths = Get-Childitem -ErrorAction Ignore -Path "$env:src\dotfiles\psmodules" -$modPaths += Get-Childitem -ErrorAction Ignore -Path "$env:minion\psmodule" - -# https://github.com/uillinois-community/powershell-scripts -$modPaths += Get-Childitem -ErrorAction Ignore -Path "$env:src\powershell-scripts\modules" - -# Windows Only Modules -if($IsWindows){ - $modPaths += Get-Childitem -ErrorAction Ignore -Path "$env:src\dotfiles\win_psmodules" -} -if($modPaths.length -eq 0){ - Write-Host "No modules found." -} -$modPaths | ForEach-Object { - $fileName = $_.FullName - if($filename -Like "*.psm1") { - Import-Module $fileName - Write-Host ">> Loaded $fileName" - } -} - - - -# Linux-like up/down in shell -Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward -Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward -Set-PSReadlineOption -HistorySavePath $env:src\PSHistory.log - -# Minion alias commands - 'today' -# . C:\src\minion\profiles\alias.ps1 -# . $env:minion\profiles\alias.ps1 -# Add Minion go executable to path. -# . $env:minion\profiles\path.ps1 -# Add Minion to path -# Write-Host "+ Added minion command to path." -# if($IsWindows){ -# $ENV:PATH+=";$env:minion\go" # Flag to ensure my profile kicked in. -# } - -# Unix dies hard. -New-Alias which get-command +Import-Module $env:dotfiles\psmodules\add_to_profile.psm1 +Add-ToProfile $env:dotfiles\files\paths.ps1 +Add-ToProfile $env:dotfiles\files\env.ps1 # Delay loading PoshGit for speed. function Enable-PoshGit { Import-Module posh-git } New-Alias pg Enable-PoshGit -Write-Host "+ Type 'pg' to enable PoshGit" -function Invoke-X16Emu { - param( - [string]$File - ) - x16emu.exe -bas $File -keymap en-us -} - -New-Alias x16 Invoke-X16Emu +Set-Alias code codium # Prefer Codium -if((Get-Location).Path -eq $HOME){ - cd $env:src +# Dashboard +New-Alias dash Show-MyDashboard # from dash.psm1 +New-Alias today Get-JournalAgenda +function journal { + param( + [ValidateSet('limited','shared','journal', 'dotfiles', 'nvim')] + [string]$key, + [switch]$limited = $false, + [switch]$shared = $false, + [switch]$dotfiles = $false + ) + $path = $journal + switch($key){ + 'limited' { $path = "$HOME\Box\SecDevLimited" } + 'shared' { $path = "$HOME\Box\Privacy & Cybersecurity\Cybersecurity Development" } + 'journal' { $path = "$HOME\Box\Journal" } + 'dotfiles' { $path = $env:dotfiles } + 'nvim' { $path = $env:nvim } + } + cd $path; nvim $path } -function Get-GitLog() { - git log --oneline +function dotfiles { + nvim "$HOME\dotfiles" } -function Get-GitStatus() { - git status -b --short +function open { + param ( + [string]$searchText + ) + $directories = @( + "$HOME\Box\Journal", + "$HOME\Box\SecDevLimited", + "$HOME\Box\Privacy & Cybersecurity\Cybersecurity Development" + ) + + $totalFiles = 0 + $processedFiles = 0 + + foreach ($directory in $directories) { + if (Test-Path $directory) { + $totalFiles += (Get-ChildItem -Path $directory -Recurse -File).Count + } else { + Write-Host "Directory '$directory' does not exist." + } + } + + $resultFiles = @() + $textFileExtensions = @(".txt", ".log", ".csv", ".json", ".xml", ".md") + foreach ($directory in $directories) { + Get-ChildItem -Path $directory -Recurse -File | Where-Object { $textFileExtensions -contains $_.Extension } | ForEach-Object { + $fileContent = Get-Content -Path $_.FullName -Raw + + if ($fileContent -match $searchText) { + $resultFiles += $_.FullName + } + $processedFiles++ + Write-Progress -Activity "Searching Files" -Status "$processedFiles / $totalFiles files processed" -PercentComplete (($processedFiles / $totalFiles) * 100) + } + } + nvim $resultFiles } -# Tell my scripts which GitHub repositories to look in. -$env:GITHUB_USERNAME = 'edthedev' -$env:GITHUB_REPOS = @( - 'techservicesillinois/SecOps-Tools', - 'techservicesillinois/secdev-job-aids', - 'techservicesillinois/awscli-login', - 'techservicesillinois/farmit', - 'uillinois-community/uillinois-community.github.io', - 'techservicesillinois/SecOps-Powershell-CSOC', - 'techservicesillinois/SecOps-Powershell-CISDSC', - 'techservicesillinois/secops-splunk-null-router' -) -join ' ' -$ENV:TS_REPOS = $ENV:GITHUB_REPOS.split(' ') | Where { $_ -like 'techser*' } - - -# Nice for git -New-Alias ol Get-GitLog -New-Alias st Get-GitStatus -# Dashboard -New-Alias dash Show-MyDashboard # from dash.psm1 +# Vi +New-Alias vi nvim +New-Alias vim nvim -function Get-JournalAgenda() { - agenda.exe -path "$HOME/Journal/{YYYY}/{MM}-{DD}.md" +# You can pry my unix commands out of my cold dead fingers +if($iswindows) { + Set-Alias which get-command } -New-Alias today Get-JournalAgenda +# Reject Windows heritage, act like Vi +# Set-PSReadlineOption -HistorySavePath $env:src\PSHistory.log +Set-PSReadlineOption -BellStyle Visual +Set-PSReadlineOption -ViModeIndicator Prompt +Set-PSReadlineOption -EditMode Vi -function Invoke-FixWslVPN { - Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect Secure Mobility Client Virtual Miniport Adapter for Windows x64"} | Set-NetIPInterface -InterfaceMetric 6000 +Write-Host "+ Type 'pg' to enable PoshGit" +Write-Host 'See $env:realProfile for version controlled profile file.' + +# Load dotfiles modules +$env:psmodules = "$env:dotfiles\psmodules" +Import-Module "$env:psmodules\dash.psm1" +Import-Module $env:psmodules\file_management.psm1 +Import-Module "$env:psmodules\fix_vpn.psm1" + +$maybe_mods = @( + "$env:src\travel-times\travel-times.psm1", + "$env:src\powershell-scripts\modules\AgileGitHubCLI.psm1" + ) +$maybe_mods | ForEach-Object { + if(Test-Path $_) { + Import-Module $_ + } else { + Write-Host "Not found: $_" + } } + +$env:nvim_config = "$HOME\AppData\Local\nvim" + +# Load local source modules +# Import-Module $env:src\powershell-scripts\modules\MarkdownGitHub.psm1 + +# Let's face it, I'm about to cd into my source directory +if((Get-Location).Path -eq $HOME){ cd $env:src }