BuildPropertyGroup globalProperties;
//IDictionary importedProjects;
List <ILogger> loggers;
- bool onlyLogCriticalEvents;
+ //bool onlyLogCriticalEvents;
Dictionary <string, Project> projects;
static Engine globalEngine;
[MonoTODO]
public bool BuildProject (Project project, string targetName)
{
- return BuildProject (project, new string[] { targetName}, new Hashtable (), BuildSettings.None);
+ return BuildProject (project, new string[] { targetName}, null, BuildSettings.None);
}
[MonoTODO]
public bool BuildProject (Project project, string[] targetNames)
{
- return BuildProject (project, targetNames, new Hashtable (), BuildSettings.None);
+ return BuildProject (project, targetNames, null, BuildSettings.None);
}
[MonoTODO]
BuildSettings buildFlags)
{
bool result;
+
+ StartBuild ();
LogProjectStarted (project, targetNames);
string[] targetNames,
BuildPropertyGroup globalProperties)
{
- return BuildProjectFile (projectFile, targetNames, globalProperties, new Hashtable (), BuildSettings.None);
+ return BuildProjectFile (projectFile, targetNames, globalProperties, null, BuildSettings.None);
}
[MonoTODO]
{
bool result;
Project project;
+
+ StartBuild ();
if (projects.ContainsKey (projectFile)) {
project = (Project) projects [projectFile];
LogProjectStarted (project, targetNames);
result = project.Build (targetNames, targetOutputs);
+ } else {
+ project = CreateNewProject ();
+ project.Load (projectFile);
+ LogProjectStarted (project, targetNames);
+ result = project.Build (targetNames, targetOutputs);
}
- else
- return false;
LogProjectFinished (project, result);
return result;
}
- private void CheckBinPath ()
+ void CheckBinPath ()
{
if (BinPath == null) {
throw new InvalidOperationException ("Before a project can be instantiated, " +
public Project CreateNewProject ()
{
- if (defaultTasksRegistered == true)
+ if (defaultTasksRegistered)
CheckBinPath ();
- // FIXME: I don't really know if it should be here
- LogBuildStarted ();
return new Project (this);
}
if (projectFullFileName == null)
throw new ArgumentNullException ("projectFullFileName");
- return (Project) projects [projectFullFileName];
+ // FIXME: test it
+ return projects [projectFullFileName];
}
internal void RemoveLoadedProject (Project p)
public void UnloadProject (Project project)
{
+ if (project == null)
+ throw new ArgumentNullException ("project");
+
if (project.ParentEngine != this)
- throw new InvalidOperationException ("This project is not loaded in this engine");
+ throw new InvalidOperationException ("The \"Project\" object specified does not belong to the correct \"Engine\" object.");
project.CheckUnloaded ();
public void UnloadAllProjects ()
{
foreach (KeyValuePair <string, Project> e in projects)
- UnloadProject ((Project) e.Value);
+ UnloadProject (e.Value);
}
[MonoTODO]
public void UnregisterAllLoggers ()
{
// FIXME: check if build succeeded
+ // FIXME: it shouldn't be here
LogBuildFinished (true);
foreach (ILogger i in loggers) {
i.Shutdown ();
}
loggers.Clear ();
}
+
+ internal void StartBuild ()
+ {
+ if (!buildStarted) {
+ LogBuildStarted ();
+ buildStarted = true;
+ }
+ }
- private void LogProjectStarted (Project project, string[] targetNames)
+ void LogProjectStarted (Project project, string [] targetNames)
{
ProjectStartedEventArgs psea;
if (targetNames.Length == 0) {
eventSource.FireProjectStarted (this, psea);
}
- private void LogProjectFinished (Project project, bool succeeded)
+ void LogProjectFinished (Project project, bool succeeded)
{
ProjectFinishedEventArgs pfea;
pfea = new ProjectFinishedEventArgs ("Project started.", null, project.FullFileName, succeeded);
eventSource.FireProjectFinished (this, pfea);
}
- private void LogBuildStarted ()
+ void LogBuildStarted ()
{
BuildStartedEventArgs bsea;
bsea = new BuildStartedEventArgs ("Build started.", null);
eventSource.FireBuildStarted (this, bsea);
}
- private void LogBuildFinished (bool succeeded)
+ void LogBuildFinished (bool succeeded)
{
BuildFinishedEventArgs bfea;
bfea = new BuildFinishedEventArgs ("Build finished.", null, succeeded);
eventSource.FireBuildFinished (this, bfea);
}
- private void RegisterDefaultTasks ()
+ void RegisterDefaultTasks ()
{
this.defaultTasksRegistered = false;
Project defaultTasksProject = CreateNewProject ();
if (binPath != null) {
- if (File.Exists (Path.Combine (binPath, defaultTasksProjectName)) == true) {
+ if (File.Exists (Path.Combine (binPath, defaultTasksProjectName))) {
defaultTasksProject.Load (Path.Combine (binPath, defaultTasksProjectName));
defaultTasks = defaultTasksProject.TaskDatabase;
- } else {
+ } else
defaultTasks = new TaskDatabase ();
- }
- } else {
+ } else
defaultTasks = new TaskDatabase ();
- }
this.defaultTasksRegistered = true;
}