Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
gargantext-ihaskell
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gargantext
gargantext-ihaskell
Commits
d3cd4f25
Commit
d3cd4f25
authored
Aug 17, 2021
by
Brandon Chinn
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add --env-file flag
parent
296c8e47
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
27 additions
and
9 deletions
+27
-9
Main.hs
main/Main.hs
+14
-7
Flags.hs
src/IHaskell/Flags.hs
+11
-2
IPython.hs
src/IHaskell/IPython.hs
+2
-0
No files found.
main/Main.hs
View file @
d3cd4f25
...
...
@@ -98,6 +98,8 @@ parseKernelArgs = foldl' addFlag defaultKernelSpecOptions
kernelSpecOpts
{
kernelSpecInstallPrefix
=
Just
prefix
}
addFlag
kernelSpecOpts
KernelspecUseStack
=
kernelSpecOpts
{
kernelSpecUseStack
=
True
}
addFlag
kernelSpecOpts
(
KernelspecEnvFile
fp
)
=
kernelSpecOpts
{
kernelSpecEnvFile
=
Just
fp
}
addFlag
_kernelSpecOpts
flag
=
error
$
"Unknown flag"
++
show
flag
-- | Run the IHaskell language kernel.
...
...
@@ -127,13 +129,12 @@ runKernel kOpts profileSrc = do
-- If we're in a stack directory, use `stack` to set the environment
-- We can't do this with base <= 4.6 because setEnv doesn't exist.
when
stack
$
do
stackEnv
<-
lines
<$>
readProcess
"stack"
[
"exec"
,
"env"
]
""
forM_
stackEnv
$
\
line
->
let
(
var
,
val
)
=
break
(
==
'='
)
line
in
case
tailMay
val
of
Nothing
->
return
()
Just
val'
->
setEnv
var
val'
when
stack
$
readProcess
"stack"
[
"exec"
,
"env"
]
""
>>=
parseAndSetEnv
case
kernelSpecEnvFile
kOpts
of
Nothing
->
return
()
Just
envFile
->
readFile
envFile
>>=
parseAndSetEnv
-- Serve on all sockets and ports defined in the profile.
interface
<-
serveProfile
profile
debug
...
...
@@ -210,6 +211,12 @@ runKernel kOpts profileSrc = do
isCommMessage
req
=
mhMsgType
(
header
req
)
`
elem
`
[
CommDataMessage
,
CommCloseMessage
]
parseAndSetEnv
envLines
=
forM_
(
lines
envLines
)
$
\
line
->
do
case
break
(
==
'='
)
line
of
(
_
,
[]
)
->
return
()
(
key
,
_
:
val
)
->
setEnv
key
val
-- Initial kernel state.
initialKernelState
::
IO
(
MVar
KernelState
)
initialKernelState
=
newMVar
defaultKernelState
...
...
src/IHaskell/Flags.hs
View file @
d3cd4f25
...
...
@@ -39,6 +39,7 @@ data Argument = ConfFile String -- ^ A file with commands to load at startup
|
ConvertLhsStyle
(
LhsStyle
String
)
|
KernelspecInstallPrefix
String
|
KernelspecUseStack
|
KernelspecEnvFile
FilePath
deriving
(
Eq
,
Show
)
data
LhsStyle
string
=
...
...
@@ -124,6 +125,14 @@ kernelStackFlag = flagNone ["stack"] addStack
where
addStack
(
Args
md
prev
)
=
Args
md
(
KernelspecUseStack
:
prev
)
kernelEnvFileFlag
::
Flag
Args
kernelEnvFileFlag
=
flagReq
[
"env-file"
]
(
store
KernelspecEnvFile
)
"<file>"
"Load environment from this file when kernel is installed"
confFlag
::
Flag
Args
confFlag
=
flagReq
[
"conf"
,
"c"
]
(
store
ConfFile
)
"<rc.hs>"
"File with commands to execute at start; replaces ~/.ihaskell/rc.hs."
...
...
@@ -144,11 +153,11 @@ 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
]
[
ghcLibFlag
,
ghcRTSFlag
,
kernelDebugFlag
,
confFlag
,
installPrefixFlag
,
helpFlag
,
kernelStackFlag
,
kernelEnvFileFlag
]
kernel
::
Mode
Args
kernel
=
mode
"kernel"
(
Args
(
Kernel
Nothing
)
[]
)
"Invoke the IHaskell kernel."
kernelArg
[
ghcLibFlag
,
kernelDebugFlag
,
confFlag
,
kernelStackFlag
,
kernelCodeMirrorFlag
]
[
ghcLibFlag
,
kernelDebugFlag
,
confFlag
,
kernelStackFlag
,
kernel
EnvFileFlag
,
kernel
CodeMirrorFlag
]
where
kernelArg
=
flagArg
update
"<json-kernel-file>"
update
filename
(
Args
_
flags
)
=
Right
$
Args
(
Kernel
$
Just
filename
)
flags
...
...
src/IHaskell/IPython.hs
View file @
d3cd4f25
...
...
@@ -43,6 +43,7 @@ data KernelSpecOptions =
,
kernelSpecConfFile
::
IO
(
Maybe
String
)
-- ^ Filename of profile JSON file.
,
kernelSpecInstallPrefix
::
Maybe
String
,
kernelSpecUseStack
::
Bool
-- ^ Whether to use @stack@ environments.
,
kernelSpecEnvFile
::
Maybe
FilePath
}
defaultKernelSpecOptions
::
KernelSpecOptions
...
...
@@ -55,6 +56,7 @@ defaultKernelSpecOptions = KernelSpecOptions
,
kernelSpecConfFile
=
defaultConfFile
,
kernelSpecInstallPrefix
=
Nothing
,
kernelSpecUseStack
=
False
,
kernelSpecEnvFile
=
Nothing
}
-- | The IPython kernel name.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment