Copyright | (c) Dennis Gosnell 2018 |
---|---|
License | BSD3 |
Stability | experimental |
Portability | POSIX |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
This module exposes Termonad's basic configuration options, as well as defaultMain
, startWithCliArgs
, and start
.
If you want to configure Termonad, please take a look at Termonad.Config.
Synopsis
- defaultMain :: TMConfig -> IO ()
- startWithCliArgs :: TMConfig -> IO ()
- start :: TMConfig -> IO ()
- module Termonad.Config
Documentation
defaultMain :: TMConfig -> IO () Source #
Run Termonad with the given TMConfig
.
This function will check if there is a ~/.config/termonad/termonad.hs
file
and a ~/.cache/termonad/termonad-linux-x86_64
binary. Termonad will
perform different actions based on whether or not these two files exist.
Here are the four different possible actions based on the existence of these two files.
~/.config/termonad/termonad.hs
exists,~/.cache/termonad/termonad-linux-x86_64
existsThe timestamps of these two files are checked. If the
~/.config/termonad/termonad.hs
file has been modified after the~/.cache/termonad/termonad-linux-x86_64
binary, then Termonad will use GHC to recompile the~/.config/termonad/termonad.hs
file, producing a new binary at~/.cache/termonad/termonad-linux-x86_64
. This new binary will be re-executed. TheTMConfig
passed to thisdefaultMain
will be effectively thrown away, however all command line options will be passed on to this new Termonad process.If GHC fails to recompile the
~/.config/termonad/termonad.hs
file, then Termonad will just executestartWithCliArgs
with theTMConfig
passed in.If the
~/.cache/termonad/termonad-linux-x86_64
binary has been modified after the~/.config/termonad/termonad.hs
file, then Termonad will re-exec the~/.cache/termonad/termonad-linux-x86_64
binary. TheTMConfig
passed to thisdefaultMain
will be effectively thrown away, however all command line options will be passed on to this new Termonad process.~/.config/termonad/termonad.hs
exists,~/.cache/termonad/termonad-linux-x86_64
does not existTermonad will use GHC to recompile the
~/.config/termonad/termonad.hs
file, producing a new binary at~/.cache/termonad/termonad-linux-x86_64
. This new binary will be re-executed. TheTMConfig
passed to thisdefaultMain
will be effectively thrown away, however all command line options will be passed on to this new Termonad process.If GHC fails to recompile the
~/.config/termonad/termonad.hs
file, then Termonad will just executestartWithCliArgs
with theTMConfig
passed in.~/.config/termonad/termonad.hs
does not exist,~/.cache/termonad/termonad-linux-x86_64
existsTermonad will ignore the
~/.cache/termonad/termonad-linux-x86_64
binary and just runstartWithCliArgs
with theTMConfig
passed to this function.~/.config/termonad/termonad.hs
does not exist,~/.cache/termonad/termonad-linux-x86_64
does not existTermonad will run
startWithCliArgs
with theTMConfig
passed to this function.
Other notes:
- That the locations of
~/.config/termonad/termonad.hs
and~/.cache/termonad/termonad-linux-x86_64
may differ depending on your system. - In your own
~/.config/termonad/termonad.hs
file, you can use eitherdefaultMain
orstartWithCliArgs
. As long as you always execute the system-widetermonad
binary (instead of the binary produced as~/.cache/termonad/termonad-linux-x86_64
), the effect should be similar. - If you directly run the cached termonad binary (e.g.
~/.cache/termonad/termonad-linux-x86_64
) instead of the system-installed Termonad binary (e.g./usr/bin/termonad
), the Termonad will recompile the the configuration file~/.config/termonad/termonad.hs
according to the above logic (while possibly overwriting the executable file for the binary you're currently running), but it will not re-exec into the newly builttermonad
binary. - When running the system-wide
termonad
binary, the initialTMConfig
that gets passed into this function comes fromtmConfigFromPreferencesFile
. As stated above, this initialTMConfig
gets ignored if users have a~/.config/termonad/termonad.hs
file that gets recompiled and re-execed.
End users generally call defaultMain
in their
~/.config/termonad/termonad.hs
file.
defaultMain
interally calls startWithCliArgs
, which parses CLI arguments
and combines them with the passed-in TMConfig
. startWithCliArgs
then
internally calls start
.
If you don't want the re-compiling and re-exec functionality, you can directly
use startWithCliArgs
. If you also don't want the CLI argument parsing
functionality, you can directly use start
.
startWithCliArgs :: TMConfig -> IO () Source #
Run Termonad with the given TMConfig
.
Do not perform any of the recompilation operations that the defaultMain
function does.
This function does parse command line arguments, and then calls start
.
start :: TMConfig -> IO () Source #
Run Termonad with the given TMConfig
.
Do not perform any of the recompilation operations that the defaultMain
function does.
This function does not parse command line arguments.
module Termonad.Config