com.amit.api.compiler.App Maven / Gradle / Ivy
/******************************************************************************
* Copyright 20014-2015 Alexandru Motriuc *
* *
******************************************************************************
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. *
* You may obtain a copy of the License at *
* http://www.apache.org/licenses/LICENSE-2.0 *
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and *
* limitations under the License. *
******************************************************************************/
package com.amit.api.compiler;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.GnuParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import com.amit.api.compiler.generator.CodeGenerator;
import com.amit.api.compiler.model.Project;
import com.amit.api.compiler.parser.AmitParser;
public class App {
public static void main( String[] args ) {
Options options = createOptions();
CommandLineParser parser = new GnuParser();
try {
// parse the command line arguments
CommandLine cmd = parser.parse( options, args );
execute( cmd );
} catch ( ParseException exp ) {
System.out.println( "Invalid arguments. Reason: " + exp.getMessage() );
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp( "args", options );
} catch( Exception e ) {
e.printStackTrace();
}
}
private static void execute( CommandLine cmd )
throws Exception {
AmitParser parser = AmitParser.fromFile( cmd.getOptionValue( "project" ) );
Project project = parser.parse();
CodeGenerator generator = new CodeGenerator(
project, cmd.getOptionValue( "template" ), cmd.getOptionValue( "destination" ) );
generator.generate();
}
private static Options createOptions() {
Option project = new Option(
"p", "project", true, "the path to amit project file." );
project.setRequired( true );
Option template = new Option(
"t", "template", true, "the path to the template used to generate the result." );
template.setRequired( true );
Option dest = new Option(
"d", "destination", true, "the destination to generate the files." );
dest.setRequired( true );
Options options = new Options();
options.addOption(project);
options.addOption(template);
options.addOption(dest);
return options;
}
}