{-# LANGUAGE FlexibleContexts #-}{-# LANGUAGE RankNTypes #-}------------------------------------------------------------------------------- copy :-- $(MAKE) install prefix=$(destdir)/$(prefix) \-- bindir=$(destdir)/$(bindir) \-- |-- Module : Distribution.Make-- Copyright : Martin Sjögren 2004-- License : BSD3---- Maintainer : cabal-devel@haskell.org-- Portability : portable---- This is an alternative build system that delegates everything to the @make@-- program. All the commands just end up calling @make@ with appropriate-- arguments. The intention was to allow preexisting packages that used-- makefiles to be wrapped into Cabal packages. In practice essentially all-- such packages were converted over to the \"Simple\" build system instead.-- Consequently this module is not used much and it certainly only sees cursory-- maintenance and no testing. Perhaps at some point we should stop pretending-- that it works.---- Uses the parsed command-line from "Distribution.Simple.Setup" in order to build-- Haskell tools using a back-end build system based on make. Obviously we-- assume that there is a configure script, and that after the ConfigCmd has-- been run, there is a Makefile. Further assumptions:---- [ConfigCmd] We assume the configure script accepts-- @--with-hc@,-- @--with-hc-pkg@,-- @--prefix@,-- @--bindir@,-- @--libdir@,-- @--libexecdir@,-- @--datadir@.---- [BuildCmd] We assume that the default Makefile target will build everything.---- [InstallCmd] We assume there is an @install@ target. Note that we assume that-- this does *not* register the package!---- [CopyCmd] We assume there is a @copy@ target, and a variable @$(destdir)@.-- The @copy@ target should probably just invoke @make install@-- recursively (e.g. @$(MAKE) install prefix=$(destdir)\/$(prefix)-- bindir=$(destdir)\/$(bindir)@. The reason we can\'t invoke @make-- install@ directly here is that we don\'t know the value of @$(prefix)@.---- [SDistCmd] We assume there is a @dist@ target.---- [RegisterCmd] We assume there is a @register@ target and a variable @$(user)@.---- [UnregisterCmd] We assume there is an @unregister@ target.---- [HaddockCmd] We assume there is a @docs@ or @doc@ target.moduleDistribution.Make(moduleDistribution.Package,License(..),Version,defaultMain ,defaultMainArgs )whereimportDistribution.Compat.PreludeimportPrelude()-- localimportDistribution.LicenseimportDistribution.PackageimportDistribution.PrettyimportDistribution.Simple.Command importDistribution.Simple.Program importDistribution.Simple.Setup importDistribution.Simple.Utils importDistribution.VersionimportSystem.Environment(getArgs,getProgName)defaultMain ::IO()defaultMain :: IO ()
defaultMain =IO [String]
getArgsIO [String] -> ([String] -> IO ()) -> IO ()
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=[String] -> IO ()
defaultMainArgs defaultMainArgs ::[String]->IO()defaultMainArgs :: [String] -> IO ()
defaultMainArgs =[String] -> IO ()
defaultMainHelper defaultMainHelper ::[String]->IO()defaultMainHelper :: [String] -> IO ()
defaultMainHelper [String]
args =doCommandParse (GlobalFlags, CommandParse (IO ()))
command <-CommandUI GlobalFlags
-> [Command (IO ())]
-> [String]
-> IO (CommandParse (GlobalFlags, CommandParse (IO ())))
forall a action.
CommandUI a
-> [Command action]
-> [String]
-> IO (CommandParse (a, CommandParse action))
commandsRun ([Command (IO ())] -> CommandUI GlobalFlags
forall action. [Command action] -> CommandUI GlobalFlags
globalCommand [Command (IO ())]
commands )[Command (IO ())]
commands [String]
args caseCommandParse (GlobalFlags, CommandParse (IO ()))
command ofCommandHelp String -> String
help ->(String -> String) -> IO ()
printHelp String -> String
help CommandList [String]
opts ->[String] -> IO ()
printOptionsList [String]
opts CommandErrors [String]
errs ->[String] -> IO ()
forall {b}. [String] -> IO b
printErrors [String]
errs CommandReadyToGo (GlobalFlags
flags ,CommandParse (IO ())
commandParse )->caseCommandParse (IO ())
commandParse ofCommandParse (IO ())
_|Flag Bool -> Bool
forall a. WithCallStack (Flag a -> a)
fromFlag (GlobalFlags -> Flag Bool
globalVersion GlobalFlags
flags )->IO ()
printVersion |Flag Bool -> Bool
forall a. WithCallStack (Flag a -> a)
fromFlag (GlobalFlags -> Flag Bool
globalNumericVersion GlobalFlags
flags )->IO ()
printNumericVersion CommandHelp String -> String
help ->(String -> String) -> IO ()
printHelp String -> String
help CommandList [String]
opts ->[String] -> IO ()
printOptionsList [String]
opts CommandErrors [String]
errs ->[String] -> IO ()
forall {b}. [String] -> IO b
printErrors [String]
errs CommandReadyToGo IO ()
action ->IO ()
action whereprintHelp :: (String -> String) -> IO ()
printHelp String -> String
help =IO String
getProgNameIO String -> (String -> IO ()) -> IO ()
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=String -> IO ()
putStr(String -> IO ()) -> (String -> String) -> String -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.String -> String
help printOptionsList :: [String] -> IO ()
printOptionsList =String -> IO ()
putStr(String -> IO ()) -> ([String] -> String) -> [String] -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.[String] -> String
unlinesprintErrors :: [String] -> IO b
printErrors [String]
errs =doString -> IO ()
putStr(String -> [String] -> String
forall a. [a] -> [[a]] -> [a]
intercalateString
"\n"[String]
errs )ExitCode -> IO b
forall a. ExitCode -> IO a
exitWith(Int -> ExitCode
ExitFailureInt
1)printNumericVersion :: IO ()
printNumericVersion =String -> IO ()
putStrLn(String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$Version -> String
forall a. Pretty a => a -> String
prettyShowVersion
cabalVersion printVersion :: IO ()
printVersion =String -> IO ()
putStrLn(String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$String
"Cabal library version "String -> String -> String
forall a. [a] -> [a] -> [a]
++Version -> String
forall a. Pretty a => a -> String
prettyShowVersion
cabalVersion progs :: ProgramDb
progs =ProgramDb
defaultProgramDb commands :: [Command (IO ())]
commands =[ProgramDb -> CommandUI ConfigFlags
configureCommand ProgramDb
progs CommandUI ConfigFlags
-> (ConfigFlags -> [String] -> IO ()) -> Command (IO ())
forall flags action.
CommandUI flags -> (flags -> [String] -> action) -> Command action
`commandAddAction` ConfigFlags -> [String] -> IO ()
configureAction ,ProgramDb -> CommandUI BuildFlags
buildCommand ProgramDb
progs CommandUI BuildFlags
-> (BuildFlags -> [String] -> IO ()) -> Command (IO ())
forall flags action.
CommandUI flags -> (flags -> [String] -> action) -> Command action
`commandAddAction` BuildFlags -> [String] -> IO ()
buildAction ,CommandUI InstallFlags
installCommand CommandUI InstallFlags
-> (InstallFlags -> [String] -> IO ()) -> Command (IO ())
forall flags action.
CommandUI flags -> (flags -> [String] -> action) -> Command action
`commandAddAction` InstallFlags -> [String] -> IO ()
installAction ,CommandUI CopyFlags
copyCommand CommandUI CopyFlags
-> (CopyFlags -> [String] -> IO ()) -> Command (IO ())
forall flags action.
CommandUI flags -> (flags -> [String] -> action) -> Command action
`commandAddAction` CopyFlags -> [String] -> IO ()
copyAction ,CommandUI HaddockFlags
haddockCommand CommandUI HaddockFlags
-> (HaddockFlags -> [String] -> IO ()) -> Command (IO ())
forall flags action.
CommandUI flags -> (flags -> [String] -> action) -> Command action
`commandAddAction` HaddockFlags -> [String] -> IO ()
haddockAction ,CommandUI CleanFlags
cleanCommand CommandUI CleanFlags
-> (CleanFlags -> [String] -> IO ()) -> Command (IO ())
forall flags action.
CommandUI flags -> (flags -> [String] -> action) -> Command action
`commandAddAction` CleanFlags -> [String] -> IO ()
cleanAction ,CommandUI SDistFlags
sdistCommand CommandUI SDistFlags
-> (SDistFlags -> [String] -> IO ()) -> Command (IO ())
forall flags action.
CommandUI flags -> (flags -> [String] -> action) -> Command action
`commandAddAction` SDistFlags -> [String] -> IO ()
sdistAction ,CommandUI RegisterFlags
registerCommand CommandUI RegisterFlags
-> (RegisterFlags -> [String] -> IO ()) -> Command (IO ())
forall flags action.
CommandUI flags -> (flags -> [String] -> action) -> Command action
`commandAddAction` RegisterFlags -> [String] -> IO ()
registerAction ,CommandUI RegisterFlags
unregisterCommand CommandUI RegisterFlags
-> (RegisterFlags -> [String] -> IO ()) -> Command (IO ())
forall flags action.
CommandUI flags -> (flags -> [String] -> action) -> Command action
`commandAddAction` RegisterFlags -> [String] -> IO ()
unregisterAction ]configureAction ::ConfigFlags ->[String]->IO()configureAction :: ConfigFlags -> [String] -> IO ()
configureAction ConfigFlags
flags [String]
args =do[String] -> IO ()
noExtraFlags [String]
args letverbosity :: Verbosity
verbosity =Flag Verbosity -> Verbosity
forall a. WithCallStack (Flag a -> a)
fromFlag (Flag Verbosity -> Verbosity) -> Flag Verbosity -> Verbosity
forall a b. (a -> b) -> a -> b
$ConfigFlags -> Flag Verbosity
configVerbosity ConfigFlags
flags mbWorkDir :: Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir =Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a. Flag a -> Maybe a
flagToMaybe (Flag (SymbolicPath CWD ('Dir Pkg))
 -> Maybe (SymbolicPath CWD ('Dir Pkg)))
-> Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a b. (a -> b) -> a -> b
$ConfigFlags -> Flag (SymbolicPath CWD ('Dir Pkg))
configWorkingDir ConfigFlags
flags Verbosity
-> Maybe (SymbolicPath CWD ('Dir Pkg))
-> String
-> [String]
-> IO ()
rawSystemExit Verbosity
verbosity Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir String
"sh"([String] -> IO ()) -> [String] -> IO ()
forall a b. (a -> b) -> a -> b
$String
"configure"String -> [String] -> [String]
forall a. a -> [a] -> [a]
:Bool -> ConfigFlags -> [String]
configureArgs Bool
backwardsCompatHack ConfigFlags
flags wherebackwardsCompatHack :: Bool
backwardsCompatHack =Bool
TruecopyAction ::CopyFlags ->[String]->IO()copyAction :: CopyFlags -> [String] -> IO ()
copyAction CopyFlags
flags [String]
args =do[String] -> IO ()
noExtraFlags [String]
args letverbosity :: Verbosity
verbosity =Flag Verbosity -> Verbosity
forall a. WithCallStack (Flag a -> a)
fromFlag (Flag Verbosity -> Verbosity) -> Flag Verbosity -> Verbosity
forall a b. (a -> b) -> a -> b
$CopyFlags -> Flag Verbosity
copyVerbosity CopyFlags
flags mbWorkDir :: Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir =Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a. Flag a -> Maybe a
flagToMaybe (Flag (SymbolicPath CWD ('Dir Pkg))
 -> Maybe (SymbolicPath CWD ('Dir Pkg)))
-> Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a b. (a -> b) -> a -> b
$CopyFlags -> Flag (SymbolicPath CWD ('Dir Pkg))
copyWorkingDir CopyFlags
flags destArgs :: [String]
destArgs =caseFlag CopyDest -> CopyDest
forall a. WithCallStack (Flag a -> a)
fromFlag (Flag CopyDest -> CopyDest) -> Flag CopyDest -> CopyDest
forall a b. (a -> b) -> a -> b
$CopyFlags -> Flag CopyDest
copyDest CopyFlags
flags ofCopyDest
NoCopyDest ->[String
"install"]CopyTo String
path ->[String
"copy",String
"destdir="String -> String -> String
forall a. [a] -> [a] -> [a]
++String
path ]CopyToDb String
_->String -> [String]
forall a. HasCallStack => String -> a
errorString
"CopyToDb not supported via Make"Verbosity
-> Maybe (SymbolicPath CWD ('Dir Pkg))
-> String
-> [String]
-> IO ()
rawSystemExit Verbosity
verbosity Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir String
"make"[String]
destArgs installAction ::InstallFlags ->[String]->IO()installAction :: InstallFlags -> [String] -> IO ()
installAction InstallFlags
flags [String]
args =do[String] -> IO ()
noExtraFlags [String]
args letverbosity :: Verbosity
verbosity =Flag Verbosity -> Verbosity
forall a. WithCallStack (Flag a -> a)
fromFlag (Flag Verbosity -> Verbosity) -> Flag Verbosity -> Verbosity
forall a b. (a -> b) -> a -> b
$InstallFlags -> Flag Verbosity
installVerbosity InstallFlags
flags mbWorkDir :: Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir =Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a. Flag a -> Maybe a
flagToMaybe (Flag (SymbolicPath CWD ('Dir Pkg))
 -> Maybe (SymbolicPath CWD ('Dir Pkg)))
-> Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a b. (a -> b) -> a -> b
$InstallFlags -> Flag (SymbolicPath CWD ('Dir Pkg))
installWorkingDir InstallFlags
flags Verbosity
-> Maybe (SymbolicPath CWD ('Dir Pkg))
-> String
-> [String]
-> IO ()
rawSystemExit Verbosity
verbosity Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir String
"make"[String
"install"]Verbosity
-> Maybe (SymbolicPath CWD ('Dir Pkg))
-> String
-> [String]
-> IO ()
rawSystemExit Verbosity
verbosity Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir String
"make"[String
"register"]haddockAction ::HaddockFlags ->[String]->IO()haddockAction :: HaddockFlags -> [String] -> IO ()
haddockAction HaddockFlags
flags [String]
args =do[String] -> IO ()
noExtraFlags [String]
args letverbosity :: Verbosity
verbosity =Flag Verbosity -> Verbosity
forall a. WithCallStack (Flag a -> a)
fromFlag (Flag Verbosity -> Verbosity) -> Flag Verbosity -> Verbosity
forall a b. (a -> b) -> a -> b
$HaddockFlags -> Flag Verbosity
haddockVerbosity HaddockFlags
flags mbWorkDir :: Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir =Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a. Flag a -> Maybe a
flagToMaybe (Flag (SymbolicPath CWD ('Dir Pkg))
 -> Maybe (SymbolicPath CWD ('Dir Pkg)))
-> Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a b. (a -> b) -> a -> b
$HaddockFlags -> Flag (SymbolicPath CWD ('Dir Pkg))
haddockWorkingDir HaddockFlags
flags Verbosity
-> Maybe (SymbolicPath CWD ('Dir Pkg))
-> String
-> [String]
-> IO ()
rawSystemExit Verbosity
verbosity Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir String
"make"[String
"docs"]IO () -> (IOException -> IO ()) -> IO ()
forall a. IO a -> (IOException -> IO a) -> IO a
`catchIO`\IOException
_->Verbosity
-> Maybe (SymbolicPath CWD ('Dir Pkg))
-> String
-> [String]
-> IO ()
rawSystemExit Verbosity
verbosity Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir String
"make"[String
"doc"]buildAction ::BuildFlags ->[String]->IO()buildAction :: BuildFlags -> [String] -> IO ()
buildAction BuildFlags
flags [String]
args =do[String] -> IO ()
noExtraFlags [String]
args letverbosity :: Verbosity
verbosity =Flag Verbosity -> Verbosity
forall a. WithCallStack (Flag a -> a)
fromFlag (Flag Verbosity -> Verbosity) -> Flag Verbosity -> Verbosity
forall a b. (a -> b) -> a -> b
$BuildFlags -> Flag Verbosity
buildVerbosity BuildFlags
flags mbWorkDir :: Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir =Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a. Flag a -> Maybe a
flagToMaybe (Flag (SymbolicPath CWD ('Dir Pkg))
 -> Maybe (SymbolicPath CWD ('Dir Pkg)))
-> Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a b. (a -> b) -> a -> b
$BuildFlags -> Flag (SymbolicPath CWD ('Dir Pkg))
buildWorkingDir BuildFlags
flags Verbosity
-> Maybe (SymbolicPath CWD ('Dir Pkg))
-> String
-> [String]
-> IO ()
rawSystemExit Verbosity
verbosity Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir String
"make"[]cleanAction ::CleanFlags ->[String]->IO()cleanAction :: CleanFlags -> [String] -> IO ()
cleanAction CleanFlags
flags [String]
args =do[String] -> IO ()
noExtraFlags [String]
args letverbosity :: Verbosity
verbosity =Flag Verbosity -> Verbosity
forall a. WithCallStack (Flag a -> a)
fromFlag (Flag Verbosity -> Verbosity) -> Flag Verbosity -> Verbosity
forall a b. (a -> b) -> a -> b
$CleanFlags -> Flag Verbosity
cleanVerbosity CleanFlags
flags mbWorkDir :: Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir =Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a. Flag a -> Maybe a
flagToMaybe (Flag (SymbolicPath CWD ('Dir Pkg))
 -> Maybe (SymbolicPath CWD ('Dir Pkg)))
-> Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a b. (a -> b) -> a -> b
$CleanFlags -> Flag (SymbolicPath CWD ('Dir Pkg))
cleanWorkingDir CleanFlags
flags Verbosity
-> Maybe (SymbolicPath CWD ('Dir Pkg))
-> String
-> [String]
-> IO ()
rawSystemExit Verbosity
verbosity Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir String
"make"[String
"clean"]sdistAction ::SDistFlags ->[String]->IO()sdistAction :: SDistFlags -> [String] -> IO ()
sdistAction SDistFlags
flags [String]
args =do[String] -> IO ()
noExtraFlags [String]
args letverbosity :: Verbosity
verbosity =Flag Verbosity -> Verbosity
forall a. WithCallStack (Flag a -> a)
fromFlag (Flag Verbosity -> Verbosity) -> Flag Verbosity -> Verbosity
forall a b. (a -> b) -> a -> b
$SDistFlags -> Flag Verbosity
sDistVerbosity SDistFlags
flags mbWorkDir :: Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir =Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a. Flag a -> Maybe a
flagToMaybe (Flag (SymbolicPath CWD ('Dir Pkg))
 -> Maybe (SymbolicPath CWD ('Dir Pkg)))
-> Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a b. (a -> b) -> a -> b
$SDistFlags -> Flag (SymbolicPath CWD ('Dir Pkg))
sDistWorkingDir SDistFlags
flags Verbosity
-> Maybe (SymbolicPath CWD ('Dir Pkg))
-> String
-> [String]
-> IO ()
rawSystemExit Verbosity
verbosity Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir String
"make"[String
"dist"]registerAction ::RegisterFlags ->[String]->IO()registerAction :: RegisterFlags -> [String] -> IO ()
registerAction RegisterFlags
flags [String]
args =do[String] -> IO ()
noExtraFlags [String]
args letverbosity :: Verbosity
verbosity =Flag Verbosity -> Verbosity
forall a. WithCallStack (Flag a -> a)
fromFlag (Flag Verbosity -> Verbosity) -> Flag Verbosity -> Verbosity
forall a b. (a -> b) -> a -> b
$RegisterFlags -> Flag Verbosity
registerVerbosity RegisterFlags
flags mbWorkDir :: Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir =Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a. Flag a -> Maybe a
flagToMaybe (Flag (SymbolicPath CWD ('Dir Pkg))
 -> Maybe (SymbolicPath CWD ('Dir Pkg)))
-> Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a b. (a -> b) -> a -> b
$RegisterFlags -> Flag (SymbolicPath CWD ('Dir Pkg))
registerWorkingDir RegisterFlags
flags Verbosity
-> Maybe (SymbolicPath CWD ('Dir Pkg))
-> String
-> [String]
-> IO ()
rawSystemExit Verbosity
verbosity Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir String
"make"[String
"register"]unregisterAction ::RegisterFlags ->[String]->IO()unregisterAction :: RegisterFlags -> [String] -> IO ()
unregisterAction RegisterFlags
flags [String]
args =do[String] -> IO ()
noExtraFlags [String]
args letverbosity :: Verbosity
verbosity =Flag Verbosity -> Verbosity
forall a. WithCallStack (Flag a -> a)
fromFlag (Flag Verbosity -> Verbosity) -> Flag Verbosity -> Verbosity
forall a b. (a -> b) -> a -> b
$RegisterFlags -> Flag Verbosity
registerVerbosity RegisterFlags
flags mbWorkDir :: Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir =Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a. Flag a -> Maybe a
flagToMaybe (Flag (SymbolicPath CWD ('Dir Pkg))
 -> Maybe (SymbolicPath CWD ('Dir Pkg)))
-> Flag (SymbolicPath CWD ('Dir Pkg))
-> Maybe (SymbolicPath CWD ('Dir Pkg))
forall a b. (a -> b) -> a -> b
$RegisterFlags -> Flag (SymbolicPath CWD ('Dir Pkg))
registerWorkingDir RegisterFlags
flags Verbosity
-> Maybe (SymbolicPath CWD ('Dir Pkg))
-> String
-> [String]
-> IO ()
rawSystemExit Verbosity
verbosity Maybe (SymbolicPath CWD ('Dir Pkg))
mbWorkDir String
"make"[String
"unregister"]

AltStyle によって変換されたページ (->オリジナル) /