private bool ParseOption (string str) { string arg; string opt = GetCommand (str, out arg); switch (opt) { case "help": case "?": Usage (); return true; case "embed": { if (arg == null) ReportMissingFileSpec (opt); ResourceInfo res = new ResourceInfo (); res.isEmbedded = true; String [] parts = arg.Split (','); res.fileName = parts [0]; if (parts.Length > 1) res.name = parts [1]; if (parts.Length > 2) { switch (parts [2]) { case "public": break; case "private": res.isPrivate = true; break; default: ReportInvalidArgument (opt, parts [2]); break; } } resources.Add (res); return true; } case "link": { if (arg == null) ReportMissingFileSpec (opt); ResourceInfo res = new ResourceInfo (); String [] parts = arg.Split (','); res.fileName = parts [0]; if (parts.Length > 1) res.name = parts [1]; if (parts.Length > 2) res.target = parts [2]; if (parts.Length > 3) { switch (parts [3]) { case "public": break; case "private": res.isPrivate = true; break; default: ReportInvalidArgument (opt, parts [3]); break; } } resources.Add (res); return true; } case "algid": if (arg == null) ReportMissingArgument (opt); try { string realArg = arg; if (realArg.StartsWith ("0x")) realArg = realArg.Substring (2); uint val = Convert.ToUInt32 (realArg, 16); AddCattr (typeof (AssemblyAlgorithmIdAttribute), typeof (uint), val); } catch (Exception) { ReportInvalidArgument (opt, arg); } return true; case "base": ReportNotImplemented (opt); return true; case "baseaddress": ReportNotImplemented (opt); return true; case "bugreport": ReportNotImplemented (opt); return true; case "comp": case "company": if (arg == null) ReportMissingText (opt); AddCattr (typeof (AssemblyCompanyAttribute), arg); return true; case "config": case "configuration": if (arg == null) ReportMissingText (opt); AddCattr (typeof (AssemblyConfigurationAttribute), arg); return true; case "copy": case "copyright": if (arg == null) ReportMissingText (opt); AddCattr (typeof (AssemblyCopyrightAttribute), arg); return true; case "c": case "culture": if (arg == null) ReportMissingText (opt); culture = arg; return true; case "delay": case "delaysign": case "delay+": case "delaysign+": delaysign = DelaySign.Yes; return true; case "delay-": case "delaysign-": delaysign = DelaySign.No; return true; case "descr": case "description": if (arg == null) ReportMissingText (opt); AddCattr (typeof (AssemblyDescriptionAttribute), arg); return true; case "e": case "evidence": { if (arg == null) ReportMissingFileSpec (opt); ResourceInfo res = new ResourceInfo (); res.name = "Security.Evidence"; res.fileName = arg; res.isEmbedded = true; res.isPrivate = true; resources.Add (res); return true; } case "fileversion": if (arg == null) ReportMissingText (opt); AddCattr (typeof (AssemblyFileVersionAttribute), arg); return true; case "flags": if (arg == null) ReportMissingArgument (opt); try { string realArg = arg; if (realArg.StartsWith ("0x")) realArg = realArg.Substring (2); uint val = Convert.ToUInt32 (realArg, 16); AddCattr (typeof (AssemblyFlagsAttribute), typeof (uint), val); } catch (Exception) { ReportInvalidArgument (opt, arg); } return true; case "fullpaths": fullPaths = true; return true; case "keyf": case "keyfile": if (arg == null) ReportMissingText (opt); keyfile = arg; return true; case "keyn": case "keyname": if (arg == null) ReportMissingText (opt); keyname = arg; return true; case "main": if (arg == null) ReportMissingText (opt); entryPoint = arg; return true; case "nologo": return true; case "out": if (arg == null) ReportMissingFileSpec (opt); outFile = arg; return true; case "prod": case "product": if (arg == null) ReportMissingText (opt); AddCattr (typeof (AssemblyProductAttribute), arg); return true; case "productv": case "productversion": if (arg == null) ReportMissingText (opt); AddCattr (typeof (AssemblyInformationalVersionAttribute), arg); return true; case "t": case "target": if (arg == null) ReportMissingText (opt); switch (arg) { case "lib": case "library": target = Target.Dll; break; case "exe": target = Target.Exe; break; case "win": case "winexe": Report (0, "target:win is not implemented"); break; default: ReportInvalidArgument (opt, arg); break; } return true; case "template": if (arg == null) ReportMissingFileSpec (opt); isTemplateFile = true; templateFile = Path.Combine (Directory.GetCurrentDirectory (), arg); return true; case "title": if (arg == null) ReportMissingText (opt); AddCattr (typeof (AssemblyTitleAttribute), arg); return true; case "trade": case "trademark": if (arg == null) ReportMissingText (opt); AddCattr (typeof (AssemblyTrademarkAttribute), arg); return true; case "v": case "version": // This option conflicts with the standard UNIX meaning if (arg == null) { Version (); break; } AddCattr (typeof (AssemblyVersionAttribute), arg); return true; case "win32icon": if (arg == null) ReportMissingFileSpec (opt); win32IconFile = arg; return true; case "win32res": if (arg == null) ReportMissingFileSpec (opt); win32ResFile = arg; return true; } return false; }