public ConsoleApplicationMain()
 {
     stdin  = capex.console.Stdin.instance();
     stdout = capex.console.Stdout.instance();
     ctx    = new capex.console.ConsoleApplicationContext();
 }
        public static void printUsage(cape.PrintWriter stdout, string name, object[] parameters, object[] flags, object[] options)
        {
            var nn = name;

            if (cape.String.isEmpty(nn))
            {
                var exe = cape.CurrentProcess.getExecutableFile();
                if (exe != null)
                {
                    nn = exe.baseNameWithoutExtension();
                }
                if (cape.String.isEmpty(nn))
                {
                    nn = "(command)";
                }
            }
            var ll = 0;

            ll = capex.console.ConsoleApplication.getLongestString(parameters, 0, ll);
            ll = capex.console.ConsoleApplication.getLongestString(flags, 1, ll);
            ll = capex.console.ConsoleApplication.getLongestString(options, 9, ll);
            stdout.print("Usage: " + nn + " [parameters, flags and options]\n");
            if (cape.Array.isEmpty(parameters) == false)
            {
                stdout.print("\n");
                stdout.print("Supported Parameters:\n");
                stdout.print("\n");
                if (parameters != null)
                {
                    var n = 0;
                    var m = parameters.Length;
                    for (n = 0; n < m; n++)
                    {
                        var parameter = parameters[n] as object[];
                        if (parameter != null)
                        {
                            stdout.print("  " + cape.String.padToLength(cape.String.asString(parameter[0]), ll) + " - " + cape.String.asString(parameter[1]) + "\n");
                        }
                    }
                }
            }
            if (cape.Array.isEmpty(flags) == false)
            {
                stdout.print("\n");
                stdout.print("Supported Flags:\n");
                stdout.print("\n");
                if (flags != null)
                {
                    var n2 = 0;
                    var m2 = flags.Length;
                    for (n2 = 0; n2 < m2; n2++)
                    {
                        var flag = flags[n2] as object[];
                        if (flag != null)
                        {
                            stdout.print("  -" + cape.String.padToLength(cape.String.asString(flag[0]), ll) + " - " + cape.String.asString(flag[1]) + "\n");
                        }
                    }
                }
            }
            if (cape.Array.isEmpty(options) == false)
            {
                stdout.print("\n");
                stdout.print("Supported Options:\n");
                stdout.print("\n");
                if (options != null)
                {
                    var n3 = 0;
                    var m3 = options.Length;
                    for (n3 = 0; n3 < m3; n3++)
                    {
                        var option = options[n3] as object[];
                        if (option != null)
                        {
                            stdout.print("  -" + cape.String.padToLength(cape.String.asString(option[0]) + "=<value>", ll) + " - " + cape.String.asString(option[1]) + "\n");
                        }
                    }
                }
            }
            stdout.print("\n");
        }