Пример #1
0
        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);
        }
Пример #2
0
        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);
                    }
                }
            }
        }
Пример #3
0
        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();
        }
Пример #4
0
        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."));
            }
        }