From b7177f8b7f972258eb4fa72217d2896d8a45849a Mon Sep 17 00:00:00 2001 From: Daniel Gröber Date: Sun, 2 Dec 2018 18:26:39 +0100 Subject: Add cabal target-selector compatible pretty printer for CompName Currently `dispCompName CompNameLib` would just print `"lib"` however this syntax is neither accepted by `cabal v1-build` nor `v2-build` as a valid target selector making it somewhat useless for that use-case. To specify a main library as a target selector one has to use the `:` syntax where `` is the name of the respective package for unqualified libraries. Hence this commit adds new function `dispCompName` with an additional `PkgName` argument. --- cabal-plan/src/Cabal/Plan.hs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'cabal-plan/src') diff --git a/cabal-plan/src/Cabal/Plan.hs b/cabal-plan/src/Cabal/Plan.hs index 63be81b..d65c581 100755 --- a/cabal-plan/src/Cabal/Plan.hs +++ b/cabal-plan/src/Cabal/Plan.hs @@ -14,6 +14,7 @@ module Cabal.Plan , Unit(..) , CompName(..) , dispCompName + , dispCompNameTarget , CompInfo(..) , UnitType(..) @@ -300,7 +301,16 @@ parseCompName t0 = case T.splitOn ":" t0 of ["setup"] -> Just CompNameSetup _ -> Nothing --- | Pretty print 'CompName' +-- | Pretty print 'CompName' in cabal's target-selector syntax. +dispCompNameTarget :: PkgName -> CompName -> Text +dispCompNameTarget (PkgName pkg) cn = case cn of + CompNameLib -> "lib:" <> pkg + _ -> dispCompName cn + +-- | Pretty print 'CompName' in the same syntax that is used in +-- @plan.json@. Note that this string can not be used as a target-selector on +-- the cabal command-line. See 'dispCompNameTarget' for a target-selector +-- compatible pretty printer. dispCompName :: CompName -> Text dispCompName cn = case cn of CompNameLib -> "lib" -- cgit v1.2.3