diff --git a/sources/environment/commands/properties.dylan b/sources/environment/commands/properties.dylan index c9f77b1c4d..fd426145ac 100644 --- a/sources/environment/commands/properties.dylan +++ b/sources/environment/commands/properties.dylan @@ -20,6 +20,19 @@ define method parameter-type-name "property" end method parameter-type-name; +define method parse-next-argument + (context :: , type == , text :: , + #key start :: = 0, end: stop = #f) + => (value :: , next-index :: ) + let (name, next-index) + = parse-next-word(text, start: start, end: stop); + if (name) + values(find-named-property(context, as(, name)), next-index) + else + parse-error("Missing keyword argument") + end +end method parse-next-argument; + define open generic ensure-property-available (context :: , property :: ) => (); diff --git a/sources/environment/console/command-line.dylan b/sources/environment/console/command-line.dylan index 88f347b97c..98cdaf86d5 100644 --- a/sources/environment/console/command-line.dylan +++ b/sources/environment/console/command-line.dylan @@ -19,6 +19,8 @@ define abstract class () init-keyword: internal-debug:; constant slot %project :: false-or() = #f, init-keyword: project:; + constant slot %show :: false-or() = #f, + init-keyword: show:; constant slot %help? :: = #f, init-keyword: help?:; constant slot %logo? :: = #f, @@ -169,6 +171,8 @@ define method do-execute-command run() elseif (command.%shortversion?) run(, short: "short") + elseif (command.%show) + run(, property: command.%show); else command.%logo? & message(context, dylan-banner()); let personal-root = command.%personal-root; diff --git a/sources/environment/console/compiler-command-line.dylan b/sources/environment/console/compiler-command-line.dylan index ec8e57d90b..bbeb5ce753 100644 --- a/sources/environment/console/compiler-command-line.dylan +++ b/sources/environment/console/compiler-command-line.dylan @@ -28,6 +28,8 @@ define command-line main => flag echo-input = "echoes all input to the console"; flag verbose = "show verbose output"; + keyword show :: = "show a compiler setting"; + flag import = "import the project"; flag build = "build the project"; flag compile = "compile the project"; diff --git a/sources/environment/console/environment-command-line.dylan b/sources/environment/console/environment-command-line.dylan index 053e73390a..e7f450342b 100644 --- a/sources/environment/console/environment-command-line.dylan +++ b/sources/environment/console/environment-command-line.dylan @@ -103,6 +103,8 @@ define command-line main => flag debugger = "enter the debugger if this program crashes"; flag echo-input = "echoes all input to the console"; + keyword show :: = "show a compiler setting"; + flag import = "import the project"; flag build = "build the project"; flag compile = "compile the project";