Home

Awesome

ghcman; ghcup for PowerShell on Windows

GitHub Actions: test GitHub Actions: install GitHub Actions: lint PowerShell Gallery Join the chat at https://gitter.im/ghcman/community Sponsor

Install

Download and load ghcman to PowerShell.

> Install-Module ghcman
> Import-Module ghcman

Confirm its info.

> Get-Module ghcman

ModuleType Version    Name     ExportedCommands
---------- -------    ----     ----------------
Manifest   1.0        ghcman   {Clear-Cabal, Clear-Ghc, Install-Cabal, Install-Ghc...}

Show help. Add the -Full option for more details.

> Get-Help Set-Ghc

NAME
    Set-Ghc

SYNOPSIS
    Sets the version or variant of GHC to the Path environment variable of the current session.


SYNTAX
    Set-Ghc [-Ghc] <String> [<CommonParameters>]


DESCRIPTION


RELATED LINKS


How to use

Retrieve new versions data.

> Update-GhcmanVersionFile

Install a specified GHC and set it to $Env:Path.

> Install-Ghc 9.2.1
> Set-Ghc 9.2.1
> ghc --version
The Glorious Glasgow Haskell Compilation System, version 9.2.1

Install a specified Cabal and set it to $Env:Path.

> Install-Cabal 3.4.0.0
> Set-Cabal 3.4.0.0
> cabal --version
cabal-install version 3.4.0.0
compiled using version 3.4.0.0 of the Cabal library

Check which versions are installed or not.

> Get-Ghc -HumanReadable
9.2.1    S C:\Users\kazuki\AppData\Roaming\ghcman\ghc-9.2.1
9.0.1    S
8.10.6   S
8.10.5   S
8.10.4   S
8.10.3   S
8.10.2   S
8.10.1   S
8.8.4    S
8.8.3    S
8.8.2    S
8.8.1    S
8.6.5    S
8.6.4    S
8.6.3    S
8.6.2    S
8.6.1    S
8.4.4    S
8.4.3    S
8.4.2    S
8.4.1    S
8.2.2    S
8.2.1    S
8.0.2    S
8.0.1    S
S: supported
> Get-Cabal -HumanReadable
3.4.0.0  S C:\Users\kazuki\AppData\Roaming\ghcman\cabal-3.4.0.0
3.2.0.0  S
3.0.0.0  S
2.4.1.0  S
2.4.0.0  S
2.2.0.0  S
2.0.0.1  S
2.0.0.0  S
S: supported

Configuration

ghcman.yaml is a local configuration file. ghcman searches it in the current directory and its parents recursively until $Env:USERPROFILE or the root. A user global configuration file is $Env:APPDATA\ghcman\config.yaml, and a system global one is $Env:ProgramData\ghcman\config.yaml.

This is a sample of ghcman.yaml and config.yaml.

ghc:
  HEAD: somewhere\directory\which\contains\ghc
  fix-some-issue: other\directory

cabal:
  HEAD: somewhere\directory\which\contains\cabal

Write-GhcmanConfigTemplate function creates ghcman.yaml with the template.

When you want to check the loaded configuration, use Get-GhcmanConfig function.

You can set $Env:GhcmanInstall to specify a directory where GHCs and Cabals are installed. Its default is $Env:APPDATA\ghcman.

Functions

Note

Previously this was called “ghcups”.