mirror of
https://github.com/anoma/juvix.git
synced 2025-01-08 08:39:26 +03:00
3d012cc8fb
- Closes #1993 This pr makes it possible to use `~`, `..` and environment variables in the `juvix.yaml` and all flags / input of the cli. In the CLI, the shell will be responsible for replacing environment variables with their value, so the usual syntax can be used. For the `dependencies` field, I have implemented a parser that has some restrictions: 1. Environment variables are given with the makefile-like syntax `$(VAR)` 2. The three characters `$` `(` `)` are reserved for the environment variables syntax. They cannot be part of the path. 3. `~` is reserved for `$(HOME)`. I.e. the prepath `~~` will expand to `$HOME$HOME`. 4. Nested environment variables are not allowed. Thanks @paulcadman for the feedback. I think we are ready to merge this nightmarish pr 👻 --------- Co-authored-by: Paul Cadman <git@paulcadman.dev>
23 lines
688 B
Haskell
23 lines
688 B
Haskell
module Main (main) where
|
|
|
|
import App
|
|
import CommonOptions
|
|
import GlobalOptions
|
|
import Juvix.Compiler.Pipeline.Root
|
|
import TopCommand
|
|
import TopCommand.Options
|
|
|
|
main :: IO ()
|
|
main = do
|
|
let parserPreferences = prefs showHelpOnEmpty
|
|
invokeDir <- getCurrentDir
|
|
(_runAppIOArgsGlobalOptions, cli) <- customExecParser parserPreferences descr
|
|
mbuildDir <- mapM (prepathToAbsDir invokeDir) (_runAppIOArgsGlobalOptions ^? globalBuildDir . _Just . pathPath)
|
|
mainFileDir <- topCommandInputFile cli
|
|
_runAppIOArgsRoots <- findRootAndChangeDir mainFileDir mbuildDir invokeDir
|
|
runFinal
|
|
. resourceToIOFinal
|
|
. embedToFinal @IO
|
|
. runAppIO RunAppIOArgs {..}
|
|
$ runTopCommand cli
|