oh-my-posh/website/docs/migrating-module.md
2022-05-16 07:00:35 +02:00

86 lines
2.5 KiB
Markdown

---
id: migrating
title: PowerShell module
sidebar_label: ⚰️ PowerShell Module
---
## Problem statement
Traditionally, the module was the only way to install oh-my-posh using `Install-Module oh-my-posh`.
Today, with the shift to the executable version over a year ago, it only acts as a wrapper around the
executable, offering no additional functionality. Throughout the year, the following changes have been made:
- don't ship all binaries in the Module but download on `Import-Module`
- move all functionality from the Module to the [init][init] script
There's a problem with the Module due to the following:
- downloading the binary is a problem on company managed computers
- the module syncs cross device thanks to OneDrive sync, causing versions to be out of sync and [configs to break][idiots]
- it's impactful having to explain the difference time and time again (for me)
## Migration steps
### Remove the module's cached files
```powershell
Remove-Item $env:POSH_PATH -Force -Recurse
```
:::warning
If you added custom elements to this location, they will be deleted with the command above.
Make sure to move these before running the command.
:::
### Install oh-my-posh
See your platform's installation guide. The preferred ways are **winget** and **Homebrew**.
- [Windows][windows]
- [macOS][macos]
- [Linux][linux]
### Uninstall the PowerShell module
```powershell
Uninstall-Module oh-my-posh -AllVersions
```
Delete the import of the PowerShell module in your `$PROFILE`
```powershell
Import-Module oh-my-posh
```
### Adjust setting the prompt
If you're still using `Set-PoshPrompt`, replace that statement with the following:
#### I have a custom theme
```powershell
oh-my-posh init pwsh --config ~/.custom.omp.json | Invoke-Expression
```
And replace `~/.custom.omp.json` with the location of your theme.
#### I have an out-of-the-box theme
```powershell
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" | Invoke-Expression
```
Replace `jandedobbeleer.omp.json` with the theme you use.
:::caution
Only winget and scoop add the environment variable `POSH_THEMES_PATH` automatically. For Homebrew, use
`$(brew --prefix oh-my-posh)/themes/jandedobbeleer.omp.json`.
:::
[init]: https://github.com/JanDeDobbeleer/oh-my-posh/blob/main/src/shell/scripts/omp.ps1
[idiots]: https://ohmyposh.dev/blog/idiots-everywhere
[windows]: /docs/installation/windows
[macos]: /docs/installation/macos
[linux]: /docs/installation/linux
[set-prompt]: /docs/installation/prompt