diff options
| author | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:04:04 -0800 |
|---|---|---|
| committer | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:04:04 -0800 |
| commit | e943f2fd8e7623ba3ea12bb65294d30446db4174 (patch) | |
| tree | eda2f24648d61fb33f3fa754d9fb4b5693517e0c /tools/idegen/src/IntelliJ.java | |
| parent | 5c11852110eeb03dc5a69111354b383f98d15336 (diff) | |
| download | android_development-e943f2fd8e7623ba3ea12bb65294d30446db4174.tar.gz android_development-e943f2fd8e7623ba3ea12bb65294d30446db4174.tar.bz2 android_development-e943f2fd8e7623ba3ea12bb65294d30446db4174.zip | |
Code drop from //branches/cupcake/...@124589
Diffstat (limited to 'tools/idegen/src/IntelliJ.java')
| -rw-r--r-- | tools/idegen/src/IntelliJ.java | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/tools/idegen/src/IntelliJ.java b/tools/idegen/src/IntelliJ.java new file mode 100644 index 000000000..00d731dc0 --- /dev/null +++ b/tools/idegen/src/IntelliJ.java @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * 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. + */ + +import java.io.File; +import java.io.IOException; +import java.util.SortedSet; + +/** + * Generates an IntelliJ project. + */ +public class IntelliJ { + + private static final String IDEA_IML = "android.iml"; + private static final String IDEA_IPR = "android.ipr"; + + /** + * Generates IntelliJ configuration files from the given configuration. + */ + public static void generateFrom(Configuration c) throws IOException { + File templatesDirectory = new File(c.toolDirectory, "templates"); + String ipr = Files.toString(new File(templatesDirectory, IDEA_IPR)); + Files.toFile(ipr, new File(IDEA_IPR)); + + String iml = Files.toString(new File(templatesDirectory, IDEA_IML)); + + StringBuilder sourceRootsXml = new StringBuilder(); + for (File sourceRoot : c.sourceRoots) { + sourceRootsXml.append("<sourceFolder url=\"file://$MODULE_DIR$/") + .append(sourceRoot.getPath()) + .append("\" isTestSource=\"").append(isTests(sourceRoot)) + .append("\"/>\n"); + } + + /* + * IntelliJ excludes are module-wide. We explicitly exclude directories + * under source roots but leave the rest in so you can still pull + * up random non-Java files. + */ + StringBuilder excludeXml = new StringBuilder(); + for (File excludedDir : c.excludesUnderSourceRoots()) { + sourceRootsXml.append("<excludeFolder url=\"file://$MODULE_DIR$/") + .append(excludedDir.getPath()) + .append("\"/>\n"); + } + + // Exclude Eclipse's output directory. + sourceRootsXml.append("<excludeFolder " + + "url=\"file://$MODULE_DIR$/out/eclipse\"/>\n"); + + StringBuilder jarsXml = new StringBuilder(); + for (File jar : c.jarFiles) { + jarsXml.append("<orderEntry type=\"module-library\">" + + "<library><CLASSES><root url=\"jar://$MODULE_DIR$/") + .append(jar.getPath()) + .append("!/\"/></CLASSES><JAVADOC/><SOURCES/></library>" + + "</orderEntry>\n"); + } + + iml = iml.replace("SOURCE_FOLDERS", + sourceRootsXml.toString() + excludeXml.toString()); + iml = iml.replace("JAR_ENTRIES", jarsXml.toString()); + + Files.toFile(iml, new File(IDEA_IML)); + } + + private static boolean isTests(File file) { + String path = file.getPath(); + + // test-runner is testing infrastructure, not test code. + if (path.contains("test-runner")) { + return false; + } + + return path.toUpperCase().contains("TEST"); + } +}
\ No newline at end of file |
