-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathollama-powershell.psm1
49 lines (41 loc) · 2.04 KB
/
ollama-powershell.psm1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
$commandsPath = Join-Path $PSScriptRoot Commands
:ToIncludeFiles foreach ($file in (Get-ChildItem -Path "$commandsPath" -Filter "*-*" -Recurse)) {
if ($file.Extension -ne '.ps1') { continue } # Skip if the extension is not .ps1
foreach ($exclusion in '\.[^\.]+\.ps1$') {
if (-not $exclusion) { continue }
if ($file.Name -match $exclusion) {
continue ToIncludeFiles # Skip excluded files
}
}
. $file.FullName
}
$myModule = $MyInvocation.MyCommand.ScriptBlock.Module
$ExecutionContext.SessionState.PSVariable.Set($myModule.Name, $myModule)
$myModule.pstypenames.insert(0, $myModule.Name)
New-PSDrive -Name $MyModule.Name -PSProvider FileSystem -Scope Global -Root $PSScriptRoot -ErrorAction Ignore
if ($home) {
$MyModuleProfileDirectory = Join-Path ([Environment]::GetFolderPath("LocalApplicationData")) $MyModule.Name
if (-not (Test-Path $MyModuleProfileDirectory)) {
$null = New-Item -ItemType Directory -Path $MyModuleProfileDirectory -Force
}
New-PSDrive -Name "My$($MyModule.Name)" -PSProvider FileSystem -Scope Global -Root $MyModuleProfileDirectory -ErrorAction Ignore
}
# Set a script variable of this, set to the module
# (so all scripts in this scope default to the correct `$this`)
$script:this = $myModule
#region Custom
$ollamaApplication = $ExecutionContext.SessionState.InvokeCommand.GetCommand('ollama','Application')
if (-not $ollamaApplication) {
Write-Warning "Ollama is not installed or in the path. Please install it from https://ollama.com/download"
} else {
$isOllamaRunning = Get-Process -Name ollama -ErrorAction Ignore
if (-not $isOllamaRunning) {
$ollamaServer = Start-ThreadJob -Name "ollama serve" -ScriptBlock { ollama serve }
}
$script:OllamaModels = Get-Ollama -ListModel
foreach ($modelInfo in $script:OllamaModels) {
$ExecutionContext.SessionState.PSVariable.Set("alias:$($modelInfo.Name -replace '\:latest$')", 'Get-Ollama')
}
}
#endregion Custom
Export-ModuleMember -Alias * -Function * -Variable $myModule.Name