/******************************************************************************* * Copyright 2011 See AUTHORS file. * * 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.badlogic.gdx.setup; import com.badlogic.gdx.setup.DependencyBank.ProjectType; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class ProjectBuilder { DependencyBank bank; List<ProjectType> modules = new ArrayList<ProjectType>(); List<Dependency> dependencies = new ArrayList<Dependency>(); File settingsFile; File buildFile; public ProjectBuilder(DependencyBank bank) { this.bank = bank; } public List<String> buildProject(List<ProjectType> projects, List<Dependency> dependencies) { List<String> incompatibilities = new ArrayList<String>(); for (Dependency dep : dependencies) { for (ProjectType type : projects) { dep.getDependencies(type); incompatibilities.addAll(dep.getIncompatibilities(type)); } } this.modules = projects; this.dependencies = dependencies; return incompatibilities; } public boolean build() throws IOException { settingsFile = File.createTempFile("libgdx-setup-settings", ".gradle"); buildFile = File.createTempFile("libgdx-setup-build", ".gradle"); if (!settingsFile.exists()) { settingsFile.createNewFile(); } if (!buildFile.exists()) { buildFile.createNewFile(); } settingsFile.setWritable(true); buildFile.setWritable(true); try { FileWriter settingsWriter = new FileWriter(settingsFile.getAbsoluteFile()); BufferedWriter settingsBw = new BufferedWriter(settingsWriter); String settingsContents = "include "; for (ProjectType module : modules) { settingsContents += "'" + module.getName() + "'"; if (modules.indexOf(module) != modules.size() - 1) { settingsContents += ", "; } } settingsBw.write(settingsContents); settingsBw.close(); settingsWriter.close(); FileWriter buildWriter = new FileWriter(buildFile.getAbsoluteFile()); BufferedWriter buildBw = new BufferedWriter(buildWriter); BuildScriptHelper.addBuildScript(modules, buildBw); BuildScriptHelper.addAllProjects(buildBw); for (ProjectType module : modules) { BuildScriptHelper.addProject(module, dependencies, buildBw); } //Add task here for now buildBw.write("\n"); buildBw.write("tasks.eclipse.doLast {\n"); buildBw.write(" delete \".project\"\n"); buildBw.write("}"); buildBw.close(); buildWriter.close(); return true; } catch (IOException e) { e.printStackTrace(); return false; } } public void cleanUp() { settingsFile.deleteOnExit(); buildFile.deleteOnExit(); } }