コード例 #1
0
        internal static StepParameter Parse(string parameter)
        {
            var product = new StepParameter {
                PhaseIndex = 0, StepIndex = 0, PropertyName = string.Empty, Value = string.Empty
            };
            var match    = Regex.Match(parameter, ParameterRegex, RegexOptions.IgnoreCase);
            var segments = new List <string>(match.Value.TrimEnd(':').Split('.'));

            if (segments[0].StartsWith("PHASE", StringComparison.OrdinalIgnoreCase))
            {
                product.PhaseIndex = int.Parse(segments[0].Substring(5)) - 1;
                segments.RemoveAt(0);
            }

            if (!segments[0].StartsWith("STEP", StringComparison.OrdinalIgnoreCase))
            {
                throw new InvalidStepParameterException("Missing step index");
            }
            product.StepIndex = int.Parse(segments[0].Substring(4)) - 1;

            if (segments.Count > 1)
            {
                product.PropertyName = segments[1];
            }

            if (match.Value.Length < parameter.Length)
            {
                product.Value = parameter.Substring(match.Value.Length);
            }

            return(product);
        }
コード例 #2
0
 private static void SubstituteParameters(Manifest manifest, string[] parameters)
 {
     foreach (var parameter in parameters)
     {
         var prm = StepParameter.Parse(parameter);
         if (prm.PhaseIndex < 0 || prm.PhaseIndex > manifest.CountOfPhases - 1)
         {
             throw new InvalidStepParameterException("Invalid phase number: " + prm.PhaseIndex + 1);
         }
         var phase = manifest.GetPhase(prm.PhaseIndex);
         if (prm.StepIndex < 0 || prm.StepIndex > phase.Length - 1)
         {
             throw new InvalidStepParameterException(String.Format("Invalid step number: {1} (phase: {0})", prm.PhaseIndex + 1, prm.StepIndex + 1));
         }
         var step = phase[prm.StepIndex];
         step.SetProperty(prm.PropertyName, prm.Value);
     }
 }