2022-09-14 17:16:15 +03:00
|
|
|
module Commands.Dev.Options
|
|
|
|
( module Commands.Dev.Options,
|
2022-09-29 18:44:55 +03:00
|
|
|
module Commands.Dev.Asm.Options,
|
2022-09-14 17:16:15 +03:00
|
|
|
module Commands.Dev.Core.Options,
|
2023-02-22 17:27:40 +03:00
|
|
|
module Commands.Dev.Geb.Options,
|
2022-09-14 17:16:15 +03:00
|
|
|
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,
|
2022-12-20 15:05:40 +03:00
|
|
|
module Commands.Dev.DisplayRoot.Options,
|
2022-09-14 17:16:15 +03:00
|
|
|
)
|
|
|
|
where
|
|
|
|
|
2022-12-06 13:33:20 +03:00
|
|
|
import Commands.Dev.Asm.Options hiding (Compile)
|
2022-09-14 17:16:15 +03:00
|
|
|
import Commands.Dev.Core.Options
|
2022-12-20 15:05:40 +03:00
|
|
|
import Commands.Dev.DisplayRoot.Options
|
2023-02-22 17:27:40 +03:00
|
|
|
import Commands.Dev.Geb.Options
|
2022-09-14 17:16:15 +03:00
|
|
|
import Commands.Dev.Highlight.Options
|
|
|
|
import Commands.Dev.Internal.Options
|
2023-11-07 21:11:02 +03:00
|
|
|
import Commands.Dev.MigrateJuvixYaml.Options
|
2022-09-14 17:16:15 +03:00
|
|
|
import Commands.Dev.Parse.Options
|
2023-03-31 01:57:44 +03:00
|
|
|
import Commands.Dev.Repl.Options
|
2022-11-03 11:38:09 +03:00
|
|
|
import Commands.Dev.Runtime.Options
|
2022-09-14 17:16:15 +03:00
|
|
|
import Commands.Dev.Scope.Options
|
|
|
|
import Commands.Dev.Termination.Options
|
2023-03-31 01:57:44 +03:00
|
|
|
import Commands.Repl.Options
|
2022-09-14 17:16:15 +03:00
|
|
|
import CommonOptions
|
|
|
|
|
|
|
|
data DevCommand
|
2022-12-20 15:05:40 +03:00
|
|
|
= DisplayRoot RootOptions
|
2022-09-14 17:16:15 +03:00
|
|
|
| Highlight HighlightOptions
|
|
|
|
| Internal InternalCommand
|
|
|
|
| Core CoreCommand
|
2023-02-22 17:27:40 +03:00
|
|
|
| Geb GebCommand
|
2022-09-29 18:44:55 +03:00
|
|
|
| Asm AsmCommand
|
2022-11-03 11:38:09 +03:00
|
|
|
| Runtime RuntimeCommand
|
2022-09-14 17:16:15 +03:00
|
|
|
| Parse ParseOptions
|
|
|
|
| Scope ScopeOptions
|
|
|
|
| Termination TerminationCommand
|
2023-03-31 01:57:44 +03:00
|
|
|
| JuvixDevRepl ReplOptions
|
2023-11-07 21:11:02 +03:00
|
|
|
| MigrateJuvixYaml MigrateJuvixYamlOptions
|
2022-09-14 17:16:15 +03:00
|
|
|
deriving stock (Data)
|
|
|
|
|
|
|
|
parseDevCommand :: Parser DevCommand
|
|
|
|
parseDevCommand =
|
|
|
|
hsubparser
|
|
|
|
( mconcat
|
|
|
|
[ commandHighlight,
|
|
|
|
commandInternal,
|
|
|
|
commandCore,
|
2023-02-22 17:27:40 +03:00
|
|
|
commandGeb,
|
2022-09-29 18:44:55 +03:00
|
|
|
commandAsm,
|
2022-11-03 11:38:09 +03:00
|
|
|
commandRuntime,
|
2022-09-14 17:16:15 +03:00
|
|
|
commandParse,
|
|
|
|
commandScope,
|
|
|
|
commandShowRoot,
|
2023-03-31 01:57:44 +03:00
|
|
|
commandTermination,
|
2023-11-07 21:11:02 +03:00
|
|
|
commandJuvixDevRepl,
|
|
|
|
commandMigrateJuvixYaml
|
2022-09-14 17:16:15 +03:00
|
|
|
]
|
|
|
|
)
|
|
|
|
|
|
|
|
commandHighlight :: Mod CommandFields DevCommand
|
|
|
|
commandHighlight =
|
|
|
|
command "highlight" $
|
|
|
|
info
|
|
|
|
(Highlight <$> parseHighlight)
|
|
|
|
(progDesc "Highlight a Juvix file")
|
|
|
|
|
|
|
|
commandInternal :: Mod CommandFields DevCommand
|
|
|
|
commandInternal =
|
|
|
|
command "internal" $
|
|
|
|
info
|
|
|
|
(Internal <$> parseInternalCommand)
|
|
|
|
(progDesc "Subcommands related to Internal")
|
|
|
|
|
2023-02-22 17:27:40 +03:00
|
|
|
commandGeb :: Mod CommandFields DevCommand
|
|
|
|
commandGeb =
|
|
|
|
command "geb" $
|
|
|
|
info
|
|
|
|
(Geb <$> parseGebCommand)
|
|
|
|
(progDesc "Subcommands related to JuvixGeb")
|
|
|
|
|
2022-09-14 17:16:15 +03:00
|
|
|
commandCore :: Mod CommandFields DevCommand
|
|
|
|
commandCore =
|
|
|
|
command "core" $
|
|
|
|
info
|
|
|
|
(Core <$> parseCoreCommand)
|
|
|
|
(progDesc "Subcommands related to JuvixCore")
|
|
|
|
|
2022-09-29 18:44:55 +03:00
|
|
|
commandAsm :: Mod CommandFields DevCommand
|
|
|
|
commandAsm =
|
|
|
|
command "asm" $
|
|
|
|
info
|
|
|
|
(Asm <$> parseAsmCommand)
|
|
|
|
(progDesc "Subcommands related to JuvixAsm")
|
|
|
|
|
2022-11-03 11:38:09 +03:00
|
|
|
commandRuntime :: Mod CommandFields DevCommand
|
|
|
|
commandRuntime =
|
|
|
|
command "runtime" $
|
|
|
|
info
|
|
|
|
(Runtime <$> parseRuntimeCommand)
|
|
|
|
(progDesc "Subcommands related to the Juvix runtime")
|
|
|
|
|
2022-09-14 17:16:15 +03:00
|
|
|
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
|
2022-12-20 15:05:40 +03:00
|
|
|
(DisplayRoot <$> parseRoot)
|
2022-09-14 17:16:15 +03:00
|
|
|
(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")
|
2023-03-31 01:57:44 +03:00
|
|
|
|
|
|
|
commandJuvixDevRepl :: Mod CommandFields DevCommand
|
|
|
|
commandJuvixDevRepl =
|
|
|
|
command
|
|
|
|
"repl"
|
|
|
|
( info
|
|
|
|
(JuvixDevRepl <$> parseDevRepl)
|
|
|
|
(progDesc "Run the Juvix dev REPL")
|
|
|
|
)
|
2023-11-07 21:11:02 +03:00
|
|
|
|
|
|
|
commandMigrateJuvixYaml :: Mod CommandFields DevCommand
|
|
|
|
commandMigrateJuvixYaml =
|
|
|
|
command "migrate-juvix-yaml" $
|
|
|
|
info
|
|
|
|
(MigrateJuvixYaml <$> parseMigrateJuvixYaml)
|
|
|
|
(progDesc "Migrate juvix.yaml to Package.juvix in the current project")
|