anchor.diff:    --version           Print version
     add                 Add one or several Fable npm packages
     start               Start Fable server
  -  --port              Port number (default 61225)
  +  --port              Port number (default 61225) or "free" to choose a free port. 
     --timeout           Stop the server if timeout (ms) is reached
     npm-run             Start a server, run an npm script and shut it down
       <script>            Name of the npm script, e.g.: `dotnet fable npm-run start`
  -    --port              Port number (default 61225)
  +    --port              Port number (default 61225) or "free" to choose a free port. 
       --args              Args for the npm script, e.g.: `dotnet fable npm-run build --args "-p --output-filename bundle.js"`
     webpack             Start a server and invoke webpack (must be installed in current or a parent dir)
  -    --port              Port number (default 61225)
  +    --port              Port number (default 61225) or "free" to choose a free port. 
       --args              Args for Webpack, e.g.: `dotnet fable webpack --args -p`
     shell-run           Start a server, run an abritrary command and shut it down
       <cmd>            Name of the command to run, e.g.: `dotnet fable shell-run make`
  -    --port              Port number (default 61225)
  +    --port              Port number (default 61225) or "free" to choose a free port. 
       --args              Args for the command, e.g.: `dotnet fable shell-run make --args "build"`
     webpack-dev-server  Same as `webpack` command but invokes webpack-dev-server
   """
  
positive.code: open System.Diagnostics
  open System.Reflection
  open System.Runtime.InteropServices
  open Microsoft.FSharp.Compiler.SourceCodeServices
  open Parser
  open State
  
  let startProcess workingDir fileName args =
      let fileName, args =
          let isWindows =
              #if NETFX
  
negative.code:     startServer port -1 agent.Post <| fun listen ->
          Async.Start listen
          let workingDir = Directory.GetCurrentDirectory()
          let p = startProcess workingDir exec args (Some (port.ToString()))
          Console.CancelKeyPress.Add (fun _ ->
              Server.stop port |> Async.RunSynchronously
              printfn "Killing process..."
  