mirror of
https://github.com/IHaskell/IHaskell.git
synced 2025-04-14 10:26:07 +00:00
Make kernelName configurable
This does not change the display name, so it doesn't seem that useful on its own.
This commit is contained in:
parent
119655f90f
commit
cd50f50ce6
@ -101,6 +101,8 @@ parseKernelArgs = foldl' addFlag defaultKernelSpecOptions
|
||||
kernelSpecOpts { kernelSpecUseStack = True }
|
||||
addFlag kernelSpecOpts (KernelspecEnvFile fp) =
|
||||
kernelSpecOpts { kernelSpecEnvFile = Just fp }
|
||||
addFlag kernelSpecOpts (KernelName name) =
|
||||
kernelSpecOpts { kernelName = name }
|
||||
addFlag _kernelSpecOpts flag = error $ "Unknown flag" ++ show flag
|
||||
|
||||
-- | Run the IHaskell language kernel.
|
||||
|
@ -40,6 +40,7 @@ data Argument = ConfFile String -- ^ A file with commands to load at startup
|
||||
| KernelspecInstallPrefix String
|
||||
| KernelspecUseStack
|
||||
| KernelspecEnvFile FilePath
|
||||
| KernelName String
|
||||
deriving (Eq, Show)
|
||||
|
||||
data LhsStyle string =
|
||||
@ -133,6 +134,10 @@ kernelEnvFileFlag =
|
||||
"<file>"
|
||||
"Load environment from this file when kernel is installed"
|
||||
|
||||
kernelNameFlag :: Flag Args
|
||||
kernelNameFlag = flagReq ["kernel-name"] (store KernelName) "<name>"
|
||||
"Specify a name for the install kernel (default: haskell)"
|
||||
|
||||
confFlag :: Flag Args
|
||||
confFlag = flagReq ["conf", "c"] (store ConfFile) "<rc.hs>"
|
||||
"File with commands to execute at start; replaces ~/.ihaskell/rc.hs."
|
||||
@ -153,7 +158,7 @@ store constructor str (Args md prev) = Right $ Args md $ constructor str : prev
|
||||
installKernelSpec :: Mode Args
|
||||
installKernelSpec =
|
||||
mode "install" (Args InstallKernelSpec []) "Install the Jupyter kernelspec." noArgs
|
||||
[ghcLibFlag, ghcRTSFlag, kernelDebugFlag, confFlag, installPrefixFlag, helpFlag, kernelStackFlag, kernelEnvFileFlag]
|
||||
[ghcLibFlag, ghcRTSFlag, kernelDebugFlag, confFlag, installPrefixFlag, helpFlag, kernelStackFlag, kernelEnvFileFlag, kernelNameFlag]
|
||||
|
||||
kernel :: Mode Args
|
||||
kernel = mode "kernel" (Args (Kernel Nothing) []) "Invoke the IHaskell kernel." kernelArg
|
||||
|
@ -8,7 +8,6 @@ module IHaskell.IPython (
|
||||
getIHaskellDir,
|
||||
getSandboxPackageConf,
|
||||
subHome,
|
||||
kernelName,
|
||||
KernelSpecOptions(..),
|
||||
defaultKernelSpecOptions,
|
||||
installLabextension,
|
||||
@ -45,6 +44,7 @@ data KernelSpecOptions =
|
||||
, kernelSpecInstallPrefix :: Maybe String
|
||||
, kernelSpecUseStack :: Bool -- ^ Whether to use @stack@ environments.
|
||||
, kernelSpecEnvFile :: Maybe FilePath
|
||||
, kernelName :: String -- ^ The Jupyter kernel name.
|
||||
}
|
||||
|
||||
defaultKernelSpecOptions :: KernelSpecOptions
|
||||
@ -58,12 +58,9 @@ defaultKernelSpecOptions = KernelSpecOptions
|
||||
, kernelSpecInstallPrefix = Nothing
|
||||
, kernelSpecUseStack = False
|
||||
, kernelSpecEnvFile = Nothing
|
||||
, kernelName = "haskell"
|
||||
}
|
||||
|
||||
-- | The IPython kernel name.
|
||||
kernelName :: String
|
||||
kernelName = "haskell"
|
||||
|
||||
ipythonCommand :: SH.Sh SH.FilePath
|
||||
ipythonCommand = do
|
||||
jupyterMay <- SH.which "jupyter"
|
||||
@ -148,14 +145,14 @@ installKernelspec repl opts = void $ do
|
||||
|
||||
let kernelSpec = KernelSpec
|
||||
{ kernelDisplayName = "Haskell"
|
||||
, kernelLanguage = kernelName
|
||||
, kernelLanguage = kernelName opts
|
||||
, kernelCommand = [ihaskellPath, "kernel", "{connection_file}"] ++ kernelFlags
|
||||
}
|
||||
|
||||
-- Create a temporary directory. Use this temporary directory to make a kernelspec directory; then,
|
||||
-- shell out to IPython to install this kernelspec directory.
|
||||
SH.withTmpDir $ \tmp -> do
|
||||
let kernelDir = tmp SH.</> kernelName
|
||||
let kernelDir = tmp SH.</> kernelName opts
|
||||
let filename = kernelDir SH.</> ("kernel.json" :: SH.FilePath)
|
||||
|
||||
SH.mkdir_p kernelDir
|
||||
@ -163,7 +160,7 @@ installKernelspec repl opts = void $ do
|
||||
let files = ["kernel.js", "logo-64x64.svg"]
|
||||
forM_ files $ \file -> do
|
||||
src <- liftIO $ Paths.getDataFileName $ "html/" ++ file
|
||||
SH.cp (SH.fromText $ T.pack src) (tmp SH.</> kernelName SH.</> file)
|
||||
SH.cp (SH.fromText $ T.pack src) (tmp SH.</> kernelName opts SH.</> file)
|
||||
|
||||
ipython <- locateIPython
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user