feat: support hledger-ui on windows

Introduced or bumped dependencies:

- brick-2.1.1
- vty-6.1
- vty-crossplatform-0.4.0.0
- vty-windows-0.2.0.1 conditionally on windows (current version of
  vty-crossplatform has 0.2.0.0 as a lower bound, need to put a newer version explcitly;
  once we get a newer vty-crossplatform, we will be able to drop this conditional)
- vty-unix (indirectly via vty-crossplatform)
This commit is contained in:
ShrykeWindgrace 2023-12-08 15:18:16 +01:00 committed by Simon Michael
parent 03808552ff
commit ce02f20d29
5 changed files with 36 additions and 23 deletions

View File

@ -20,7 +20,8 @@ import Data.List (find)
import Data.List.Extra (nubSort)
import Data.Maybe (fromMaybe)
import qualified Data.Text as T
import Graphics.Vty (mkVty, Mode (Mouse), Vty (outputIface), Output (setMode))
import Graphics.Vty (Mode (Mouse), Vty (outputIface), Output (setMode))
import Graphics.Vty.CrossPlatform (mkVty)
import Lens.Micro ((^.))
import System.Directory (canonicalizePath)
import System.Environment (withProgName)

View File

@ -73,7 +73,7 @@ library
ansi-terminal >=0.9
, async
, base >=4.14 && <4.19
, brick >=1.5 && <2
, brick >=2.1.1 && <2.2
, cmdargs >=0.8
, containers >=0.5.9
, data-default
@ -95,14 +95,16 @@ library
, text-zipper >=0.4
, time >=1.5
, transformers
, unix
, vector
, vty >=5.15 && <6
, vty ==6.1.*
, vty-crossplatform >=0.4.0.0 && <0.5.0.0
default-language: Haskell2010
if os(windows)
buildable: False
build-depends:
vty-windows >=0.2.0.1 && <0.3.0.0
else
buildable: True
build-depends:
unix
executable hledger-ui
main-is: hledger-ui.hs
@ -116,9 +118,5 @@ executable hledger-ui
base >=4.14 && <4.19
, hledger-ui
default-language: Haskell2010
if os(windows)
buildable: False
else
buildable: True
if flag(threaded)
ghc-options: -threaded

View File

@ -51,7 +51,6 @@ ghc-options:
dependencies:
- base >=4.14 && <4.19
when:
# curses is required to build terminfo for vty for hledger-ui.
# On POSIX systems it might be not present.
# On windows it's very likely not present, but possibly it could be.
@ -61,12 +60,10 @@ when:
# curses
# default: True
# description:
# For now, just don't build hledger-ui on windows
- condition: os(windows)
then:
buildable: false
else:
buildable: true
#
# note on windows: the vty-windows (and hence hledger-ui) will reliably work only on the newer backends
# like Windows Terminal.
# mintty-based backends (default for cygwin/gitbash/msys2) are not supported (yet)
library:
source-dirs: .
@ -101,10 +98,16 @@ library:
- time >=1.5
- transformers
- vector
# not installable on windows, cf buildable flag below
- brick >=1.5 && <2
- vty >=5.15 && <6
- unix
- brick >=2.1.1 && <2.2
- vty >=6.1 && <6.2
- vty-crossplatform >= 0.4.0.0 && < 0.5.0.0
when:
- condition: os(windows)
then:
dependencies: vty-windows >= 0.2.0.1 && < 0.3.0.0
else:
dependencies: unix
executables:
hledger-ui:

View File

@ -31,3 +31,10 @@ nix:
# # "$targets": -Werror
# # "$everything": -O2
# # some-package: -DSOME_CPP_FLAG
extra-deps:
- vty-windows-0.2.0.1
- vty-crossplatform-0.4.0.0
- brick-2.1.1
- vty-6.1
- vty-unix-0.2.0.0

View File

@ -8,8 +8,12 @@ packages:
- hledger-ui
- hledger-web
# extra-deps:
extra-deps:
- vty-windows-0.2.0.1
- vty-crossplatform-0.4.0.0
- brick-2.1.1
- vty-6.1
- vty-unix-0.2.0.0
nix:
pure: false
packages: [perl gmp ncurses zlib]