mirror of
https://github.com/anoma/juvix.git
synced 2024-12-14 08:27:03 +03:00
22027f137c
This PR redefines the `html` command unifying our previous subcommands for the HTML backend. You should use the command in the following way to obtain the same results as before: - `juvix html src.juvix` -> `juvix html src.juvix --only-source` - `juvix dev doc src.juvix` -> `juvix html src.juvix` - Other fixes here include the flag `--non-recursive`, which replaces the previous behavior in that we now generate all the HTML recursively by default. - The flag `--no-print-metadata` is now called `--no-footer` - Also, another change introduced by this PR is asset handling; for example, with our canonical Juvix program, the new output is organized as follows. ``` juvix html HelloWorld.juvix --only-source && tree html/ Copying assets files to test/html/assets Writing HelloWorld.html html/ ├── assets │ ├── css │ │ ├── linuwial.css │ │ ├── source-ayu-light.css │ │ └── source-nord.css │ ├── images │ │ ├── tara-magicien.png │ │ ├── tara-seating.svg │ │ ├── tara-smiling.png │ │ ├── tara-smiling.svg │ │ ├── tara-teaching.png │ │ └── tara-teaching.svg │ └── js │ ├── highlight.js │ └── tex-chtml.js └── HelloWorld.html ├── Stdlib.Data.Bool.html ├── Stdlib.Data.List.html ├── Stdlib.Data.Maybe.html ├── Stdlib.Data.Nat.html ├── Stdlib.Data.Ord.html ├── Stdlib.Data.Product.html ├── Stdlib.Data.String.html ├── Stdlib.Function.html ├── Stdlib.Prelude.html └── Stdlib.System.IO.html ``` In addition, for the vscode-plugin, this PR adds two flags, `--prefix-assets` and `--prefix-url`, for which one provides input to help vscode find resource locations and Juvix files. PS. Make sure to run `make clean` the first time you run `make install` for the first time.
125 lines
3.2 KiB
Haskell
125 lines
3.2 KiB
Haskell
module Commands.Dev.Options
|
|
( module Commands.Dev.Options,
|
|
module Commands.Dev.Asm.Options,
|
|
module Commands.Dev.Core.Options,
|
|
module Commands.Dev.Internal.Options,
|
|
module Commands.Dev.Parse.Options,
|
|
module Commands.Dev.Highlight.Options,
|
|
module Commands.Dev.Scope.Options,
|
|
module Commands.Dev.Termination.Options,
|
|
module Commands.Dev.DisplayRoot.Options,
|
|
)
|
|
where
|
|
|
|
import Commands.Dev.Asm.Options hiding (Compile)
|
|
import Commands.Dev.Core.Options
|
|
import Commands.Dev.DisplayRoot.Options
|
|
import Commands.Dev.Highlight.Options
|
|
import Commands.Dev.Internal.Options
|
|
import Commands.Dev.MiniC.Options
|
|
import Commands.Dev.Parse.Options
|
|
import Commands.Dev.Runtime.Options
|
|
import Commands.Dev.Scope.Options
|
|
import Commands.Dev.Termination.Options
|
|
import CommonOptions
|
|
|
|
data DevCommand
|
|
= DisplayRoot RootOptions
|
|
| Highlight HighlightOptions
|
|
| Internal InternalCommand
|
|
| Core CoreCommand
|
|
| Asm AsmCommand
|
|
| Runtime RuntimeCommand
|
|
| MiniC MiniCOptions
|
|
| Parse ParseOptions
|
|
| Scope ScopeOptions
|
|
| Termination TerminationCommand
|
|
deriving stock (Data)
|
|
|
|
parseDevCommand :: Parser DevCommand
|
|
parseDevCommand =
|
|
hsubparser
|
|
( mconcat
|
|
[ commandHighlight,
|
|
commandInternal,
|
|
commandCore,
|
|
commandAsm,
|
|
commandRuntime,
|
|
commandMiniC,
|
|
commandParse,
|
|
commandScope,
|
|
commandShowRoot,
|
|
commandTermination
|
|
]
|
|
)
|
|
|
|
commandHighlight :: Mod CommandFields DevCommand
|
|
commandHighlight =
|
|
command "highlight" $
|
|
info
|
|
(Highlight <$> parseHighlight)
|
|
(progDesc "Highlight a Juvix file")
|
|
|
|
commandMiniC :: Mod CommandFields DevCommand
|
|
commandMiniC =
|
|
command "minic" $
|
|
info
|
|
(MiniC <$> parseMiniC)
|
|
(progDesc "Translate a Juvix file to MiniC")
|
|
|
|
commandInternal :: Mod CommandFields DevCommand
|
|
commandInternal =
|
|
command "internal" $
|
|
info
|
|
(Internal <$> parseInternalCommand)
|
|
(progDesc "Subcommands related to Internal")
|
|
|
|
commandCore :: Mod CommandFields DevCommand
|
|
commandCore =
|
|
command "core" $
|
|
info
|
|
(Core <$> parseCoreCommand)
|
|
(progDesc "Subcommands related to JuvixCore")
|
|
|
|
commandAsm :: Mod CommandFields DevCommand
|
|
commandAsm =
|
|
command "asm" $
|
|
info
|
|
(Asm <$> parseAsmCommand)
|
|
(progDesc "Subcommands related to JuvixAsm")
|
|
|
|
commandRuntime :: Mod CommandFields DevCommand
|
|
commandRuntime =
|
|
command "runtime" $
|
|
info
|
|
(Runtime <$> parseRuntimeCommand)
|
|
(progDesc "Subcommands related to the Juvix runtime")
|
|
|
|
commandParse :: Mod CommandFields DevCommand
|
|
commandParse =
|
|
command "parse" $
|
|
info
|
|
(Parse <$> parseParse)
|
|
(progDesc "Parse a Juvix file")
|
|
|
|
commandScope :: Mod CommandFields DevCommand
|
|
commandScope =
|
|
command "scope" $
|
|
info
|
|
(Scope <$> parseScope)
|
|
(progDesc "Parse and scope a Juvix file")
|
|
|
|
commandShowRoot :: Mod CommandFields DevCommand
|
|
commandShowRoot =
|
|
command "root" $
|
|
info
|
|
(DisplayRoot <$> parseRoot)
|
|
(progDesc "Show the root path for a Juvix project")
|
|
|
|
commandTermination :: Mod CommandFields DevCommand
|
|
commandTermination =
|
|
command "termination" $
|
|
info
|
|
(Termination <$> parseTerminationCommand)
|
|
(progDesc "Subcommands related to termination checking")
|