blob: 0e8eb87ed53e08922657e1e4b413bd999b76533c [file] [log] [blame]
package org.qi4j.tools.shell.generate;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import org.qi4j.api.concern.Concerns;
import org.qi4j.api.injection.scope.Service;
import org.qi4j.api.injection.scope.Structure;
import org.qi4j.api.mixin.Mixins;
import org.qi4j.api.unitofwork.UnitOfWorkFactory;
import org.qi4j.api.unitofwork.concern.UnitOfWorkConcern;
import org.qi4j.api.unitofwork.concern.UnitOfWorkPropagation;
import org.qi4j.tools.shell.Command;
import org.qi4j.tools.shell.FileUtils;
import org.qi4j.tools.shell.HelpNeededException;
import org.qi4j.tools.shell.StringUtils;
import org.qi4j.tools.shell.model.Layer;
import org.qi4j.tools.shell.model.Model;
import org.qi4j.tools.shell.model.Project;
import org.qi4j.tools.shell.templating.TemplateEngine;
@Mixins( Generate.Mixin.class )
@Concerns( UnitOfWorkConcern.class )
public interface Generate extends Command
{
public class Mixin
implements Generate
{
@Service
private Model model;
@Structure
private UnitOfWorkFactory uowf;
@Override
@UnitOfWorkPropagation
public void execute( String[] args, BufferedReader input, PrintWriter output )
throws HelpNeededException, IOException
{
if( args.length < 2 )
{
throw new HelpNeededException();
}
Project project = Project.Support.get( uowf.currentUnitOfWork(), args[ 1 ] );
if( project == null )
{
System.err.print( "Project " + args[ 1 ] + " does not exist." );
return;
}
model.setHomeDirectory( new File( System.getProperty( "homeDir" ) ) );
File projectDir = new File( project.applicationName() );
if( args.length >= 3 )
{
projectDir = new File(args[2]).getAbsoluteFile();
}
project.generate( projectDir );
}
@Override
public String description()
{
return "Generates the file structure from what has been built up in the database.";
}
@Override
public String name()
{
return "generate";
}
}
}