public TaskExecutionContext(RunContext context, FeatureConfig feature, TaskConfig task, VariableReplacer replacer) { mContext = context; mFeature = feature; mTask = task; mReplacer = replacer; }
private static ExecutionNode BuildFeatureNode(string featureName, DeployContext context) { FeatureConfig feature; if (!context.FeaturesConfig.TryGet(featureName, out feature)) throw new SoftFailureException(string.Format("Cannot find feature {0}", featureName)); var node = new ExecutionNode(string.Format("Begin feature {0}", featureName), string.Format("End feature {0}", featureName)); foreach (var taskConfig in feature.Recipe) { var task = context.TaskManager.CreateTask(taskConfig); var replacer = new VariableReplacer(context.ApplicationContext, feature, taskConfig); node.AddChild(new ExecutionNode(task, new TaskExecutionContext(context.RunContext, feature, taskConfig, replacer))); } return node; }