Mono.CSharp.CommandLineParser.ParseOptionUnix C# (CSharp) Method

ParseOptionUnix() private method

private ParseOptionUnix ( string arg, string &args, int &i, CompilerSettings settings ) : ParseResult
arg string
args string
i int
settings CompilerSettings
return ParseResult
        ParseResult ParseOptionUnix(string arg, ref string[] args, ref int i, CompilerSettings settings)
        {
            switch (arg){
            case "-v":
                CSharpParser.yacc_verbose_flag++;
                return ParseResult.Success;

            case "--version":
                Version ();
                return ParseResult.Stop;

            case "--parse":
                settings.ParseOnly = true;
                return ParseResult.Success;

            case "--main": case "-m":
                report.Warning (-29, 1, "Compatibility: Use -main:CLASS instead of --main CLASS or -m CLASS");
                if ((i + 1) >= args.Length){
                    Error_RequiresArgument (arg);
                    return ParseResult.Error;
                }
                settings.MainClass = args[++i];
                return ParseResult.Success;

            case "--unsafe":
                report.Warning (-29, 1, "Compatibility: Use -unsafe instead of --unsafe");
                settings.Unsafe = true;
                return ParseResult.Success;

            case "/?": case "/h": case "/help":
            case "--help":
                Usage ();
                return ParseResult.Stop;

            case "--define":
                report.Warning (-29, 1, "Compatibility: Use -d:SYMBOL instead of --define SYMBOL");
                if ((i + 1) >= args.Length){
                    Error_RequiresArgument (arg);
                    return ParseResult.Error;
                }
                RootContext.AddConditional (args [++i]);
                return ParseResult.Success;

            case "--tokenize":
                settings.TokenizeOnly = true;
                return ParseResult.Success;

            case "-o":
            case "--output":
                report.Warning (-29, 1, "Compatibility: Use -out:FILE instead of --output FILE or -o FILE");
                if ((i + 1) >= args.Length){
                    Error_RequiresArgument (arg);
                    return ParseResult.Error;
                }
                settings.OutputFile = args[++i];
                return ParseResult.Success;

            case "--checked":
                report.Warning (-29, 1, "Compatibility: Use -checked instead of --checked");
                settings.Checked = true;
                return ParseResult.Success;

            case "--stacktrace":
                report.Printer.Stacktrace = true;
                return ParseResult.Success;

            case "--linkresource":
            case "--linkres":
                report.Warning (-29, 1, "Compatibility: Use -linkres:VALUE instead of --linkres VALUE");
                if ((i + 1) >= args.Length){
                    Error_RequiresArgument (arg);
                    return ParseResult.Error;
                }

                AddResource (new AssemblyResource (args[++i], args[i]), settings);
                return ParseResult.Success;

            case "--resource":
            case "--res":
                report.Warning (-29, 1, "Compatibility: Use -res:VALUE instead of --res VALUE");
                if ((i + 1) >= args.Length){
                    Error_RequiresArgument (arg);
                    return ParseResult.Error;
                }

                AddResource (new AssemblyResource (args[++i], args[i], true), settings);
                return ParseResult.Success;

            case "--target":
                report.Warning (-29, 1, "Compatibility: Use -target:KIND instead of --target KIND");
                if ((i + 1) >= args.Length){
                    Error_RequiresArgument (arg);
                    return ParseResult.Error;
                }

                string type = args [++i];
                switch (type){
                case "library":
                    settings.Target = Target.Library;
                    settings.TargetExt = ".dll";
                    break;

                case "exe":
                    settings.Target = Target.Exe;
                    break;

                case "winexe":
                    settings.Target = Target.WinExe;
                    break;

                case "module":
                    settings.Target = Target.Module;
                    settings.TargetExt = ".dll";
                    break;
                default:
                    report.Error (2019, "Invalid target type for -target. Valid options are `exe', `winexe', `library' or `module'");
                    break;
                }
                return ParseResult.Success;

            case "-r":
                report.Warning (-29, 1, "Compatibility: Use -r:LIBRARY instead of -r library");
                if ((i + 1) >= args.Length){
                    Error_RequiresArgument (arg);
                    return ParseResult.Error;
                }

                string val = args [++i];
                int idx = val.IndexOf ('=');
                if (idx > -1) {
                    string alias = val.Substring (0, idx);
                    string assembly = val.Substring (idx + 1);
                    AddAssemblyReference (alias, assembly, settings);
                    return ParseResult.Success;
                }

                settings.AssemblyReferences.Add (val);
                return ParseResult.Success;

            case "-L":
                report.Warning (-29, 1, "Compatibility: Use -lib:ARG instead of --L arg");
                if ((i + 1) >= args.Length){
                    Error_RequiresArgument (arg);
                    return ParseResult.Error;
                }
                settings.ReferencesLookupPaths.Add (args [++i]);
                return ParseResult.Success;

            case "--lint":
                settings.EnhancedWarnings = true;
                return ParseResult.Success;

            case "--nostdlib":
                report.Warning (-29, 1, "Compatibility: Use -nostdlib instead of --nostdlib");
                settings.StdLib = false;
                return ParseResult.Success;

            case "--nowarn":
                report.Warning (-29, 1, "Compatibility: Use -nowarn instead of --nowarn");
                if ((i + 1) >= args.Length){
                    Error_RequiresArgument (arg);
                    return ParseResult.Error;
                }
                int warn = 0;

                try {
                    warn = int.Parse (args [++i]);
                } catch {
                    Usage ();
                    //Environment.Exit (1);
                }
                report.SetIgnoreWarning (warn);
                return ParseResult.Success;

            case "--wlevel":
                report.Warning (-29, 1, "Compatibility: Use -warn:LEVEL instead of --wlevel LEVEL");
                if ((i + 1) >= args.Length){
                    Error_RequiresArgument (arg);
                    return ParseResult.Error;
                }

                SetWarningLevel (args [++i]);
                return ParseResult.Success;

            case "--mcs-debug":
                if ((i + 1) >= args.Length){
                    Error_RequiresArgument (arg);
                    return ParseResult.Error;
                }

                try {
                    Report.DebugFlags = int.Parse (args [++i]);
                } catch {
                    Error_RequiresArgument (arg);
                    return ParseResult.Error;
                }

                return ParseResult.Success;

            case "--about":
                About ();
                return ParseResult.Stop;

            case "--recurse":
                report.Warning (-29, 1, "Compatibility: Use -recurse:PATTERN option instead --recurse PATTERN");
                if ((i + 1) >= args.Length){
                    Error_RequiresArgument (arg);
                    return ParseResult.Error;
                }
                ProcessSourceFiles (args [++i], true);
                return ParseResult.Success;

            case "--timestamp":
                settings.Timestamps = true;
                return ParseResult.Success;

            case "--debug": case "-g":
                report.Warning (-29, 1, "Compatibility: Use -debug option instead of -g or --debug");
                settings.GenerateDebugInfo = true;
                return ParseResult.Success;

            case "--noconfig":
                report.Warning (-29, 1, "Compatibility: Use -noconfig option instead of --noconfig");
                settings.LoadDefaultReferences = false;
                return ParseResult.Success;

            default:
                if (arg.StartsWith ("--fatal")){
                    int fatal = 1;
                    if (arg.StartsWith ("--fatal="))
                        int.TryParse (arg.Substring (8), out fatal);

                    report.Printer.FatalCounter = fatal;
                    return ParseResult.Success;
                }
                if (arg.StartsWith ("--runtime:", StringComparison.Ordinal)) {
                    string version = arg.Substring (10);

                    switch (version) {
                    case "v1":
                    case "V1":
                        settings.StdLibRuntimeVersion = RuntimeVersion.v1;
                        break;
                    case "v2":
                    case "V2":
                        settings.StdLibRuntimeVersion = RuntimeVersion.v2;
                        break;
                    case "v4":
                    case "V4":
                        settings.StdLibRuntimeVersion = RuntimeVersion.v4;
                        break;
                    }
                    return ParseResult.Success;
                }

                return ParseResult.UnknownOption;
            }
        }