From: Gert D. <dri...@us...> - 2003-09-15 06:40:08
|
Update of /cvsroot/nant/nant/src/NAnt.Core/Tasks In directory sc8-pr-cvs1:/tmp/cvs-serv3359 Modified Files: CallTask.cs Log Message: Deprecated 'force' attribute as target will now always be executed again, even if it was already executed before. Handle circular dependency Index: CallTask.cs =================================================================== RCS file: /cvsroot/nant/nant/src/NAnt.Core/Tasks/CallTask.cs,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** CallTask.cs 6 Sep 2003 10:47:53 -0000 1.10 --- CallTask.cs 15 Sep 2003 06:40:05 -0000 1.11 *************** *** 43,47 **** /// <call target="compile"/> /// <property name="debug" value="true" /> ! /// <call target="compile" force="true" /> <!-- notice the force attribute --> /// </target> /// </project> --- 43,47 ---- /// <call target="compile"/> /// <property name="debug" value="true" /> ! /// <call target="compile" /> /// </target> /// </project> *************** *** 70,78 **** } /// <summary> ! /// Force an execute even if the target has already been executed. ! /// The default is <see langword="false" />. /// </summary> [TaskAttribute("force")] public bool ForceExecute { get { return _force; } --- 70,82 ---- } + // TO-DO : remove this property after NAnt 0.8.6 or so. + /// <summary> ! /// Force an execute even if the target has already been executed. The ! /// default is <see langword="false" />. <see langword="deprecated" /> as ! /// of NAnt 0.8.4. /// </summary> [TaskAttribute("force")] + [System.Obsolete("The <call> task will now always force execution of the specified target, and its dependencies.", false)] public bool ForceExecute { get { return _force; } *************** *** 88,104 **** /// </summary> protected override void ExecuteTask() { ! if (ForceExecute) { ! Target target = Project.Targets.Find(TargetName); ! if (target == null) { ! // if we can't find it, then neither should Project.Execute ! // let them do the error handling and exception generation. ! Project.Execute(TargetName); ! } else { ! // execute a copy ! target.Clone().Execute(); } - } else { - Project.Execute(TargetName); } } --- 92,113 ---- /// </summary> protected override void ExecuteTask() { ! Target owningTarget = Parent as Target; ! ! if (owningTarget != null) { ! // topologically sorted list of targets that will be executed ! TargetCollection targets = Project.TopologicalTargetSort(TargetName, Project.Targets); ! ! // check if owning target is part of list of targets that will ! // be executed again ! if (targets.Find(owningTarget.Name) != null) { ! // check if owning target is actually a dependency of the ! // target that should be executed ! if (targets.IndexOf(targets.Find(owningTarget.Name)) < targets.IndexOf(targets.Find(TargetName))) { ! throw new BuildException("Circular dependency: " + targets.ToString(" <- ") + " <- " + owningTarget.Name); ! } } } + + Project.Execute(TargetName); } |