diff options
Diffstat (limited to 'stdlib/source/program')
-rw-r--r-- | stdlib/source/program/compositor.lux | 8 | ||||
-rw-r--r-- | stdlib/source/program/compositor/cli.lux | 81 | ||||
-rw-r--r-- | stdlib/source/program/compositor/export.lux | 55 | ||||
-rw-r--r-- | stdlib/source/program/compositor/import.lux | 8 |
4 files changed, 33 insertions, 119 deletions
diff --git a/stdlib/source/program/compositor.lux b/stdlib/source/program/compositor.lux index 59c53550e..0d90a15dc 100644 --- a/stdlib/source/program/compositor.lux +++ b/stdlib/source/program/compositor.lux @@ -40,6 +40,7 @@ [phase [extension {"+" Extender}]]]] [meta + ["[0]" cli {"+" Service}] [packager {"+" Packager}] [archive {"+" Archive} ["[0]" unit] @@ -50,7 +51,6 @@ ... ["[0]" interpreter] ]]] ["[0]" / "_" - ["[1][0]" cli {"+" Service}] ["[1][0]" static {"+" Static}] ["[1][0]" export] ["[1][0]" import]]) @@ -148,7 +148,7 @@ (do [! async.monad] [platform (async.future platform)] (case service - {/cli.#Compilation compilation} + {cli.#Compilation compilation} (<| (or_crash! "Compilation failed:") ..timed (do (try.with async.monad) @@ -182,14 +182,14 @@ program_context)] (in (debug.log! "Compilation complete!")))) - {/cli.#Export export} + {cli.#Export export} (<| (or_crash! "Export failed:") (do (try.with async.monad) [_ (/export.export (value@ platform.#&file_system platform) export)] (in (debug.log! "Export complete!")))) - {/cli.#Interpretation interpretation} + {cli.#Interpretation interpretation} ... TODO: Fix the interpreter... (undefined) ... (<| (or_crash! "Interpretation failed:") diff --git a/stdlib/source/program/compositor/cli.lux b/stdlib/source/program/compositor/cli.lux deleted file mode 100644 index 1962569b3..000000000 --- a/stdlib/source/program/compositor/cli.lux +++ /dev/null @@ -1,81 +0,0 @@ -(.using - [library - [lux {"-" Module Source} - [control - [pipe {"+" case>}] - ["<>" parser - ["[0]" cli {"+" Parser}]]] - [tool - [compiler - [meta - [archive - [module - [descriptor {"+" Module}]]]]]] - [world - [file {"+" Path}]]]]) - -(type: .public Source - Path) - -(type: .public Host_Dependency - Path) - -(type: .public Library - Path) - -(type: .public Target - Path) - -(type: .public Compilation - [(List Source) (List Host_Dependency) (List Library) Target Module]) - -(type: .public Export - [(List Source) Target]) - -(type: .public Service - (Variant - {#Compilation Compilation} - {#Interpretation Compilation} - {#Export Export})) - -(template [<name> <long> <type>] - [(def: <name> - (Parser <type>) - (cli.named <long> cli.any))] - - [source_parser "--source" Source] - [host_dependency_parser "--host_dependency" Host_Dependency] - [library_parser "--library" Library] - [target_parser "--target" Target] - [module_parser "--module" Module] - ) - -(def: .public service - (Parser Service) - ($_ <>.or - (<>.after (cli.this "build") - ($_ <>.and - (<>.some ..source_parser) - (<>.some ..host_dependency_parser) - (<>.some ..library_parser) - ..target_parser - ..module_parser)) - (<>.after (cli.this "repl") - ($_ <>.and - (<>.some ..source_parser) - (<>.some ..host_dependency_parser) - (<>.some ..library_parser) - ..target_parser - ..module_parser)) - (<>.after (cli.this "export") - ($_ <>.and - (<>.some ..source_parser) - ..target_parser)) - )) - -(def: .public target - (-> Service Target) - (|>> (case> (^or {#Compilation [sources host_dependencies libraries target module]} - {#Interpretation [sources host_dependencies libraries target module]} - {#Export [sources target]}) - target))) diff --git a/stdlib/source/program/compositor/export.lux b/stdlib/source/program/compositor/export.lux index cb19398e7..4ac08f423 100644 --- a/stdlib/source/program/compositor/export.lux +++ b/stdlib/source/program/compositor/export.lux @@ -1,32 +1,31 @@ (.using - [library - [lux {"-" Source} - [abstract - ["[0]" monad {"+" do}]] - [control - ["[0]" try {"+" Try}] - [concurrency - ["[0]" async {"+" Async}]]] - [data - ["[0]" text - ["%" format {"+" format}]] - [collection - ["[0]" dictionary] - ["[0]" sequence]] - [format - ["[0]" binary] - ["[0]" tar]]] - [time - ["[0]" instant]] - [tool - [compiler - [meta - ["[0]" io "_" - ["[1]" context {"+" Extension}]]]]] - [world - ["[0]" file]]]] - [// - [cli {"+" Source Export}]]) + [library + [lux {"-" Source} + [abstract + ["[0]" monad {"+" do}]] + [control + ["[0]" try {"+" Try}] + [concurrency + ["[0]" async {"+" Async}]]] + [data + ["[0]" text + ["%" format {"+" format}]] + [collection + ["[0]" dictionary] + ["[0]" sequence]] + [format + ["[0]" binary] + ["[0]" tar]]] + [time + ["[0]" instant]] + [tool + [compiler + [meta + [cli {"+" Source Export}] + ["[0]" io "_" + ["[1]" context {"+" Extension}]]]]] + [world + ["[0]" file]]]]) (def: file "library.tar") diff --git a/stdlib/source/program/compositor/import.lux b/stdlib/source/program/compositor/import.lux index 9554ec934..7f21f20ec 100644 --- a/stdlib/source/program/compositor/import.lux +++ b/stdlib/source/program/compositor/import.lux @@ -22,13 +22,9 @@ [tool [compiler [meta - [archive - [module - [descriptor {"+" Module}]]]]]] + [cli {"+" Library Module}]]]] [world - ["[0]" file]]]] - [// - [cli {"+" Library}]]) + ["[0]" file]]]]) (def: Action (type (All (_ a) (Async (Try a))))) |