Commit fe89d497 authored by Andrew Gibiansky's avatar Andrew Gibiansky

Add --prefix flag to ihaskell install

parent 6e82ef36
......@@ -100,6 +100,8 @@ parseKernelArgs = foldl' addFlag defaultKernelSpecOptions
kernelSpecOpts { kernelSpecDebug = True }
addFlag kernelSpecOpts (GhcLibDir libdir) =
kernelSpecOpts { kernelSpecGhcLibdir = libdir }
addFlag kernelSpecOpts (KernelspecInstallPrefix prefix) =
kernelSpecOpts { kernelSpecInstallPrefix = Just prefix }
addFlag kernelSpecOpts flag = error $ "Unknown flag" ++ show flag
-- | Run the IHaskell language kernel.
......
......@@ -37,6 +37,7 @@ data Argument = ConfFile String -- ^ A file with commands to load at startup
| ConvertFromFormat NotebookFormat
| ConvertToFormat NotebookFormat
| ConvertLhsStyle (LhsStyle String)
| KernelspecInstallPrefix String
deriving (Eq, Show)
data LhsStyle string =
......@@ -103,6 +104,10 @@ confFlag :: Flag Args
confFlag = flagReq ["conf", "c"] (store ConfFile) "<rc.hs>"
"File with commands to execute at start; replaces ~/.ihaskell/rc.hs."
installPrefixFlag :: Flag Args
installPrefixFlag = flagReq ["prefix"] (store KernelspecInstallPrefix) "<install-dir>"
"Installation prefix for kernelspec (see Jupyter's --prefix option)"
helpFlag = flagHelpSimple (add Help)
add flag (Args mode flags) = Args mode $ flag : flags
......@@ -113,7 +118,7 @@ store constructor str (Args mode prev) = Right $ Args mode $ constructor str : p
installKernelSpec :: Mode Args
installKernelSpec =
mode "install" (Args InstallKernelSpec []) "Install the Jupyter kernelspec." noArgs
[ghcLibFlag, kernelDebugFlag, confFlag, helpFlag]
[ghcLibFlag, kernelDebugFlag, confFlag, installPrefixFlag, helpFlag]
kernel :: Mode Args
kernel = mode "kernel" (Args (Kernel Nothing) []) "Invoke the IHaskell kernel." kernelArg
......
......@@ -46,6 +46,7 @@ data KernelSpecOptions =
{ kernelSpecGhcLibdir :: String -- ^ GHC libdir.
, kernelSpecDebug :: Bool -- ^ Spew debugging output?
, kernelSpecConfFile :: IO (Maybe String) -- ^ Filename of profile JSON file.
, kernelSpecInstallPrefix :: Maybe String
}
defaultKernelSpecOptions :: KernelSpecOptions
......@@ -53,6 +54,7 @@ defaultKernelSpecOptions = KernelSpecOptions
{ kernelSpecGhcLibdir = GHC.Paths.libdir
, kernelSpecDebug = False
, kernelSpecConfFile = defaultConfFile
, kernelSpecInstallPrefix = Nothing
}
-- | The IPython kernel name.
......@@ -201,8 +203,9 @@ installKernelspec replace opts = void $ do
Just ipython <- SH.which "ipython"
let replaceFlag = ["--replace" | replace]
cmd = ["kernelspec", "install", "--user", kernelDir] ++ replaceFlag
SH.silently $ SH.run ipython (map SH.toTextIgnore cmd)
installPrefixFlag = maybe [] (\prefix -> ["--prefix", T.pack prefix]) (kernelSpecInstallPrefix opts)
cmd = ["kernelspec", "install", "--user", SH.toTextIgnore kernelDir] ++ replaceFlag ++ installPrefixFlag
SH.silently $ SH.run ipython cmd
kernelSpecCreated :: SH.Sh Bool
kernelSpecCreated = do
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment