blob: 18ca3e7842a7875babb8ed6966280345484f4b8b [file] [log] [blame]
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.myrmidon.components.model;
import java.io.File;
import org.apache.avalon.framework.component.Component;
/**
* Abstraction used to interact with projects.
* Implementations may choose to structure it anyway they choose.
*
* TODO: Determine if projects should carry their own name. Breaks IOC but
* Can be useful as project files embed own name (or should that be description).
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public interface Project
extends Component
{
String ROLE = "org.apache.myrmidon.components.model.Project";
// the name of currently executing project
String PROJECT = "myrmidon.project.name";
// the name of currently executing project
//String PROJECT_FILE = "myrmidon.project.file";
// the name of currently executing target
//String TARGET = "myrmidon.target.name";
/**
* Get the imports for project.
*
* @return the imports
*/
TypeLib[] getTypeLibs();
/**
* Get names of projects referred to by this project.
*
* @return the names
*/
String[] getProjectNames();
/**
* Retrieve project reffered to by this project.
*
* @param name the project name
* @return the Project or null if none by that name
*/
Project getProject( String name );
/**
* Get name of default target.
*
* @return the default target name
*/
String getDefaultTargetName();
/**
* Retrieve implicit target.
* The implicit target is top level tasks.
* Currently restricted to property tasks.
*
* @return the Target
*/
Target getImplicitTarget();
/**
* Retrieve a target by name.
*
* @param name the name of target
* @return the Target or null if no target exists with name
*/
Target getTarget( String name );
/**
* Retrieve names of all targets in project.
*
* @return the iterator of project names
*/
String[] getTargetNames();
/**
* Retrieve base directory of project.
*
* @return the projects base directory
*/
File getBaseDirectory();
}