]> us-delaporte.pagekite.me Git - dotfiles.git/blobdiff - files/Microsoft.PowerShell_profile.ps1
Update to set Screen session name. Add screen session list command.
[dotfiles.git] / files / Microsoft.PowerShell_profile.ps1
index d868417ce490dfa11123cba4ac06b7887af4ea13..ca2f5e11fbe74cc84d227976105e72ccb715ba98 100644 (file)
-#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."
-}
-$enabledMods = 'dash.psm1','docker.psm1';
-$modPaths | ForEach-Object {
-       $fileName = $_.FullName
-       if($enabledModules -Contains $_.Name ){
-               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 }