10 Creating the Input Loop
Craig Oates edited this page 4 years ago

Because of how Console.Waterworks (C.W.) is set-up, the command the end-user enters into the prompt must match the name of the command-method -- in "ConsoleCommands.fs". Before we get too far into discussing that, though, we must look at how the program creates the input-loop.

open Console.Waterworks

[<EntryPoint>]
let main argv = 
    let liaison = new CW_Liaison ()
    liaison.Run ("Commands", true) 
    0 // return an integer exit code

That snippet of code is all there is in "Program.fs". Once you know what is happening in here, you should never need to look at this file much -- if at all.

What is happening is a new CW_Liaison object is created and is told to run. This is where C.W. creates the input-loop which runs indefinitely until the end-user closes the console (or the program crashes). The first argument passed into run refers to the name-space of the ConsoleCommands module. In this case it is Commands. The second one refers to the information displayed in the console when you run it. When set to true, the console displays information found in "AssemblyInfo.fs". If you use false, the only thing you will see is the prompt. You can check the name-space of the ConsoleCommand module via the following link:

How C.W. creates and manages the input-loop is out of this wiki's scope. Although, if you would like to know more about how is created, you can use the following link:

Here are examples of what is displayed at run-time when you pass true or false into the liaison.Run command, mentioned above.

console with assembly info

console with no assembly info

Up above, I said I would elaborate on why the end-user's commands must match the name of the commands in the ConsoleCommands module. I will do that but not here because it ventures a little too far off topic for this section. So, I have created a dedicated section for it. You can access it with the following link: