mirror of
https://github.com/simplex-chat/haskell.nix.git
synced 2026-06-03 09:17:32 +00:00
5b7f7f245c
git-subtree-dir: nix-tools git-subtree-mainline:1110a74a9dgit-subtree-split:555d57e1ea
41 lines
1.5 KiB
Haskell
41 lines
1.5 KiB
Haskell
module Stack2nix.CLI
|
|
( Args(..)
|
|
, HpackUse(..)
|
|
, parseStack2nixArgs
|
|
) where
|
|
|
|
import Options.Applicative hiding (option)
|
|
import Data.Semigroup ((<>))
|
|
import Cabal2Nix (CabalDetailLevel(..))
|
|
|
|
data HpackUse
|
|
= IgnorePackageYaml
|
|
| UsePackageYamlFirst
|
|
deriving Show
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- CLI Arguments
|
|
data Args = Args
|
|
{ argOutputDir :: FilePath
|
|
, argStackYaml :: FilePath
|
|
, argHpackUse :: HpackUse
|
|
, argCacheFile :: FilePath
|
|
, argDetailLevel :: CabalDetailLevel
|
|
} deriving Show
|
|
|
|
-- Argument Parser
|
|
args :: Parser Args
|
|
args = Args
|
|
<$> strOption ( long "output" <> short 'o' <> metavar "DIR" <> help "Generate output in DIR" )
|
|
<*> strOption ( long "stack-yaml" <> value "stack.yaml" <> showDefault <> metavar "FILE" <> help "Override project stack.yaml" )
|
|
<*> flag UsePackageYamlFirst IgnorePackageYaml (long "ignore-package-yaml" <> help "disable hpack run and use only cabal disregarding package.yaml existence")
|
|
<*> strOption ( long "cache" <> value ".stack-to-nix.cache" <> showDefault <> metavar "FILE" <> help "Dependency cache file" )
|
|
<*> flag MinimalDetails FullDetails ( long "full" <> help "Output details needed to determine what files are used" )
|
|
|
|
parseStack2nixArgs :: IO Args
|
|
parseStack2nixArgs = execParser opts
|
|
where opts = info (args <**> helper)
|
|
( fullDesc
|
|
<> progDesc "Generate a Nix expression for a Haskell package using Stack"
|
|
<> header "stack-to-nix - a stack to nix converter" )
|