private bool ValidBatchCommandOptions(string[] batchcommand) { bool bRet = true; if (batchcommand != null) { foreach (string s in batchcommand) { Option o = VaultCmdLineClient.LookupOptionByString(s.Substring(1)); switch (o) { case Option.HOST: case Option.NOSSL: case Option.OUT: case Option.PASSWORD: case Option.REPOSITORY: case Option.SERVER: case Option.SSL: case Option.URL: case Option.USER: case Option.USERNAME: bRet = false; break; } if (bRet == false) { break; } } } return(bRet); }
public void Parse(string[] args) { for (int i = 0; i < args.Length; i++) { string s = args[i]; if ((s == null) || (s.Length == 0)) { // do not process bogus args. continue; } if ((s == VaultCmdLineClientDefines.StdInParam) && (_cmd == Command.BATCH)) { items.Add(s); continue; } if (s[0] == '-') { Option option = VaultCmdLineClient.LookupOptionByString(s.Substring(1)); switch (option) { case Option.BACKUP: { if (TestForArgument(i, args.Length, s)) { string sOpt = args[++i]; switch (sOpt.ToLower()) { case "yes": case "true": this.MakeBackup = BackupOption.yes; break; case "no": case "false": this.MakeBackup = BackupOption.no; break; default: if (!Error) { Error = true; ErrorMessage = string.Format("Invalid value for -backup: {0}. Use \"yes\" or \"no\".", sOpt); } break; } } break; } case Option.BEGINDATE: { if (TestForArgument(i, args.Length, s)) { string sDate = args[++i]; try { this.HistoryBeginDate = DateTime.Parse(sDate); } catch (Exception eBegDate) { Error = true; ErrorMessage = string.Format("{0} could not be converted to a valid date: {1}", option, eBegDate.Message); } } break; } case Option.BEGINVERSION: { if (TestForArgument(i, args.Length, s)) { string sVersion = args[++i]; try { this.VersionHistoryBeginVersion = long.Parse(sVersion); } catch (Exception e) { Error = true; ErrorMessage = string.Format("{0} could not be converted to a valid numeric version number: {1}", option, e.Message); } } break; } case Option.BEGINLABEL: { if (TestForArgument(i, args.Length, s)) { HistoryBeginLabel = args[++i]; } break; } case Option.COMMENT: { if (TestForArgument(i, args.Length, s)) { _comment = args[++i]; } break; } case Option.COMMIT: { AutoCommit = true; break; } case Option.COMPARETO: { if (TestForArgument(i, args.Length, s)) { _strDiffCompareTo = args[++i]; } break; } case Option.DATESORT: if (TestForArgument(i, args.Length, s)) { DateSort = VaultCmdLineClient.LookupDateSortOptionByString(args[++i]); } break; case Option.DESTFOLDER: { if (TestForArgument(i, args.Length, s)) { DestPath = args[++i]; } break; } case Option.LABELWORKINGFOLDER: { if (TestForArgument(i, args.Length, s)) { LabelWorkingFolder = args[++i]; } break; } case Option.DESTPATH: { if (TestForArgument(i, args.Length, s)) { DestPath = args[++i]; } break; } case Option.ENDDATE: { if (TestForArgument(i, args.Length, s)) { string sDate = args[++i]; try { this.HistoryEndDate = DateTime.Parse(sDate); } catch (Exception eEndDate) { Error = true; ErrorMessage = string.Format("{0} could not be converted to a valid date: {1}", option, eEndDate.Message); } } break; } case Option.ENDLABEL: { if (TestForArgument(i, args.Length, s)) { HistoryEndLabel = args[++i]; } break; } case Option.EXCLUDEACTIONS: { if (TestForArgument(i, args.Length, s)) { HistoryExcludedActions = args[++i]; } break; } case Option.EXCLUDEUSERS: { if (TestForArgument(i, args.Length, s)) { HistoryExcludedUsers = args[++i]; } break; } case Option.EXCLUSIVE: { CheckOutExclusive = true; break; } case Option.SERVER: case Option.HOST: { if (TestForArgument(i, args.Length, s)) { _host = args[++i]; } break; } case Option.KEEPCHECKEDOUT: { _bKeepCheckedOut = true; break; } case Option.LEAVEFILE: { LocalCopy = LocalCopyType.Leave; break; } case Option.MAKEWRITABLE: { MakeWritable = MakeWritableType.MakeAllFilesWritable; break; } case Option.MAKEREADONLY: { MakeWritable = MakeWritableType.MakeAllFilesReadOnly; break; } case Option.MERGE: { if (TestForArgument(i, args.Length, s)) { string strOpt = args[++i]; MergeOption mo = VaultCmdLineClient.LookupMergeOptionByString(strOpt); switch (mo) { case MergeOption.auto: case MergeOption.automatic: case MergeOption.automerge: Merge = MergeType.AttemptAutomaticMerge; break; case MergeOption.later: case MergeOption.mergelater: case MergeOption.no_overwrite: Merge = MergeType.MergeLater; break; case MergeOption.overwrite: Merge = MergeType.OverwriteWorkingCopy; break; default: if (Error == false) { Error = true; ErrorMessage = string.Format("Invalid value for -{0}: {1}", Option.MERGE, strOpt); } break; } } break; } case Option.NOCLOAKS: { this.RespectCloaks = false; break; } case Option.NORECURSIVE: { this.Recursive = false; break; } case Option.NOSSL: { _ssl = false; break; } case Option.OUT: { if (TestForArgument(i, args.Length, s)) { string sName = args[++i]; this.OutFile = sName; } break; } case Option.PASSWORD: { if (TestForArgument(i, args.Length, s)) { _password = args[++i]; } break; } case Option.PERFORMDELETIONS: { if (TestForArgument(i, args.Length, s)) { PerformDeletions = VaultCmdLineClient.LookupPerformDeletionsOptionByString(args[++i]); } break; } case Option.PROXYSERVER: { if (TestForArgument(i, args.Length, s)) { _proxyServer = args[++i]; } break; } case Option.PROXYPORT: { if (TestForArgument(i, args.Length, s)) { _proxyPort = args[++i]; } break; } case Option.PROXYUSER: { if (TestForArgument(i, args.Length, s)) { _proxyUser = args[++i]; } break; } case Option.PROXYPASSWORD: { if (TestForArgument(i, args.Length, s)) { _proxyPassword = args[++i]; } break; } case Option.PROXYDOMAIN: { if (TestForArgument(i, args.Length, s)) { _proxyDomain = args[++i]; } break; } case Option.REPOSITORY: { if (TestForArgument(i, args.Length, s)) { _repository = args[++i]; } break; } case Option.REQUIRECHECKOUT: { RequireCheckOut = true; break; } case Option.REVERTFILE: { LocalCopy = LocalCopyType.Replace; break; } case Option.ROWLIMIT: { if (TestForArgument(i, args.Length, s)) { string sInt = args[++i]; try { HistoryRowLimit = Int32.Parse(sInt); } catch (Exception) { } } break; } case Option.SETFILETIME: { if (TestForArgument(i, args.Length, s)) { string strOpt = args[++i]; FileTimeOption fto = VaultCmdLineClient.LookupFileTimeOptionByString(strOpt); switch (fto) { case FileTimeOption.current: this.SetFileTime = SetFileTimeType.Current; break; case FileTimeOption.checkin: this.SetFileTime = SetFileTimeType.CheckIn; break; case FileTimeOption.modification: case FileTimeOption.modified: this.SetFileTime = SetFileTimeType.Modification; break; default: if (!Error) { Error = true; ErrorMessage = string.Format("Invalid value for -setfiletime: {0}", strOpt); } break; } } break; } case Option.SSL: { _ssl = true; break; } case Option.UNCHANGED: { if (TestForArgument(i, args.Length, s)) { string sOpt = args[++i]; switch (sOpt.ToLower()) { case "leavecheckedout": this.Unchanged = UnchangedHandler.LeaveCheckedOut; break; case "undocheckout": this.Unchanged = UnchangedHandler.UndoCheckout; break; case "checkin": this.Unchanged = UnchangedHandler.Checkin; break; default: if (!Error) { Error = true; ErrorMessage = string.Format("Invalid value for -unchanged: {0}", sOpt); } break; } } break; } case Option.URL: { if (TestForArgument(i, args.Length, s)) { _url = args[++i]; } break; } case Option.USERNAME: case Option.USER: { if (TestForArgument(i, args.Length, s)) { _user = args[++i]; } break; } case Option.VAULTDIFF: { if (TestForArgument(i, args.Length, s)) { _strDiffBin = args[++i]; } break; } case Option.VAULTDIFF_OPTIONS: { if (TestForArgument(i, args.Length, s)) { _strDiffArgs = args[++i]; } break; } case Option.WILDCARD: { if (TestForArgument(i, args.Length, s)) { Wildcard = args[++i]; } break; } case Option.VERBOSE: { Verbose = true; break; } case Option.YESIAMSURE: { _yesiamsure = true; break; } default: { if (!Error) { Error = true; ErrorMessage = string.Format("unknown option: {0} - run 'vault.exe HELP' for help", s); } break; } } } else { if (!checkForCommand(s)) { if ( (s[0] == VaultDefine.RootName[0]) && (s.EndsWith(VaultDefine.PathSeparator.ToString())) ) { s = RepositoryPath.NormalizeFolder(s); } else if (s == VaultDefine.RootName) { s = RepositoryPath.NormalizeFolder(s); } items.Add(s); } } } }
public void Write(string cmdName) { Command cmd = Command.INVALID; foreach (Command testcmd in Enum.GetValues(typeof(Command))) { if (testcmd.ToString().ToLower() == cmdName.ToLower()) { cmd = testcmd; } } if (cmd == Command.INVALID || cmd == Command.NONE) { throw new UsageException(string.Format("unknown command: {0} - run 'vault.exe HELP' for help", cmdName.ToUpper())); } CommandHelpEntry he = (CommandHelpEntry)commandHelpHash[cmd]; _xml.Begin("usage"); Copyright(_xml); if (he.OptionList.Length == 0) { _xml.WriteContent(string.Format("usage: vault.exe {0} {1}", cmdName.ToUpper(), he.Usage)); } else { _xml.WriteContent(string.Format("usage: vault.exe {0} [options] {1}", cmdName.ToUpper(), he.Usage)); } _xml.WriteContent(); _xml.WriteContent(he.LongDetails); _xml.WriteContent(); if (VaultCmdLineClient.CommandNeedsAdmin(cmd)) { _xml.WriteContent("This command requires administrative privileges."); _xml.WriteContent(); } if (VaultCmdLineClient.CommandNeedsLogin(cmd)) { Option[] optionList = null; if (VaultCmdLineClient.CommandNeedsRepositorySpecified(cmd)) { optionList = new Option[] { Option.HOST, Option.SSL, Option.USER, Option.PASSWORD, Option.PROXYSERVER, Option.PROXYPORT, Option.PROXYUSER, Option.PROXYPASSWORD, Option.PROXYDOMAIN, Option.REPOSITORY }; } else { optionList = new Option[] { Option.HOST, Option.SSL, Option.USER, Option.PASSWORD, Option.PROXYSERVER, Option.PROXYPORT, Option.PROXYUSER, Option.PROXYPASSWORD, Option.PROXYDOMAIN }; } _xml.WriteContent("Server and authentication information is specified by:"); foreach (Option opt in optionList) { string optName = opt.ToString().ToLower(); OptionHelpEntry ohe = (OptionHelpEntry)optionHelpHash[opt]; if (ohe != null) { string details = ohe.Details.Replace("\n", "\n "); _xml.WriteContent(string.Format(" -{0} {1}\n {2}", optName, ohe.Usage, details)); } else { _xml.WriteContent(string.Format(" -{0}", optName)); } } _xml.WriteContent(); } if (he.OptionList.Length > 0) { _xml.WriteContent("This is a list of possible options:"); foreach (Option opt in he.OptionList) { string optName = opt.ToString().ToLower(); OptionHelpEntry ohe = (OptionHelpEntry)optionHelpHash[opt]; if (ohe != null) { string details = ohe.Details.Replace("\n", "\n "); _xml.WriteContent(string.Format(" -{0} {1}\n {2}", optName, ohe.Usage, details)); } else { _xml.WriteContent(string.Format(" -{0}", optName)); } } } _xml.End(); }
public void WriteHTML() { try { //create a new html file FileInfo fi = new FileInfo("./help.htm"); StreamWriter sw = fi.CreateText(); sw.AutoFlush = true; string heading = string.Empty; string text = string.Empty; string text1 = string.Empty; string text2 = string.Empty; heading = string.Format("<h><b>SourceGear Vault Command Line Client</b></h><br>"); heading += string.Format("<p>usage: vault commandname [options] [parameters]</p>"); heading += string.Format("<p>This is a list of possible commands:</p>"); text += ("<table cellpadding=\"5\" border=\"1\" width=\"1000\">"); text1 += ("<table cellpadding=\"5\" border=\"1\" width=\"1000\">"); foreach (Command cmd in Enum.GetValues(typeof(Command))) { if (cmd == Command.NONE || cmd == Command.INVALID) { continue; } string cmdName = cmd.ToString().ToUpper(); CommandHelpEntry he = (CommandHelpEntry)commandHelpHash[cmd]; if (he != null) { text += string.Format("<tr><td><a rel=index href=#{0}>{0}</a></tr><td>{1}</td></tr>", cmdName, he.ShortDetails); if (he.OptionList != null) { if (he.OptionList.Length == 0) { text1 += string.Format("<tr><td><a rel=index name=#{0}><b>{0}</b></tr>", cmdName); text1 += string.Format("<tr><td>usage: vault.exe {0} {1}<br>", cmdName.ToUpper(), he.Usage); text1 += string.Format("<br>{0}<br>", he.LongDetails); } else { text1 += string.Format("<tr><td><a rel=index name=#{0}><b>{0}</b></tr>", cmdName); text1 += string.Format("<tr><td>usage: vault.exe {0} [options] {1}<br>", cmdName.ToUpper(), he.Usage); text1 += string.Format("<br>{0}<br>", he.LongDetails); } } } else { text += string.Format("<tr><td><a rel=index href=#{0}>{0}</a></tr><td>{1}</td></tr>", cmdName, he.ShortDetails); } if (VaultCmdLineClient.CommandNeedsLogin(cmd)) { Option[] optionList = null; if (VaultCmdLineClient.CommandNeedsRepositorySpecified(cmd)) { optionList = new Option[] { Option.HOST, Option.SSL, Option.USER, Option.PASSWORD, Option.REPOSITORY }; } else { optionList = new Option[] { Option.HOST, Option.SSL, Option.USER, Option.PASSWORD }; } text1 += string.Format("<br>Server and authentication information is specified by:"); foreach (Option opt in optionList) { string optName = opt.ToString().ToLower(); OptionHelpEntry ohe = (OptionHelpEntry)optionHelpHash[opt]; if (ohe != null) { string details = ohe.Details.Replace("\n", "\n "); text1 += string.Format("<ul> -{0} {1}\n <ul>{2}</ul></ul>", optName, ohe.Usage, details); } else { text1 += string.Format("<ul> -{0}</ul>", optName); } } } if (he.OptionList.Length > 0) { text1 += string.Format("This is a list of possible options:<p>"); foreach (Option opt in he.OptionList) { string optName = opt.ToString().ToLower(); OptionHelpEntry ohe = (OptionHelpEntry)optionHelpHash[opt]; if (ohe != null) { string details = ohe.Details.Replace("\n", "\n "); text1 += string.Format("<ul> -{0} {1}\n <ul>{2}</ul></ul>", optName, ohe.Usage, details); } else { text1 += string.Format("<ul> -{0}<ul></td>", optName); } } } } text += ("</table>"); text1 += ("</table>"); text1 = text1.Replace("\n", "<br>"); sw.Write(heading); sw.Write(text); text2 += string.Format("<p></p>"); sw.Write(text2); sw.Write(text1); sw.Close(); Process p = new Process(); p.StartInfo.FileName = fi.Name; p.Start(); } catch (Exception) { throw new UsageException(string.Format("Unable to process the HTML file. Please use the 'Vault Help' command instead.")); } }