summaryrefslogtreecommitdiffstats
path: root/tools/sdkmanager/app
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-06-10 15:30:15 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-06-10 15:30:15 -0700
commit64638a165fbe0e6320adfc5e2aa4679ed0f94b35 (patch)
treee0c4f3f055982deddab62ac525aef78a74f4a5ec /tools/sdkmanager/app
parent37c885e48e05d5b139b724e75867554a1e97f309 (diff)
parent61df13dec40be51729ebf96769b3bc6c716e16cc (diff)
downloadandroid_development-64638a165fbe0e6320adfc5e2aa4679ed0f94b35.tar.gz
android_development-64638a165fbe0e6320adfc5e2aa4679ed0f94b35.tar.bz2
android_development-64638a165fbe0e6320adfc5e2aa4679ed0f94b35.zip
Merge change 3743 into donut
* changes: ADT #1856119: 'android update project' can now update sub-projects.
Diffstat (limited to 'tools/sdkmanager/app')
-rw-r--r--tools/sdkmanager/app/src/com/android/sdkmanager/CommandLineProcessor.java30
-rw-r--r--tools/sdkmanager/app/src/com/android/sdkmanager/Main.java27
-rw-r--r--tools/sdkmanager/app/src/com/android/sdkmanager/SdkCommandLine.java80
-rw-r--r--tools/sdkmanager/app/tests/com/android/sdkmanager/CommandLineProcessorTest.java4
4 files changed, 89 insertions, 52 deletions
diff --git a/tools/sdkmanager/app/src/com/android/sdkmanager/CommandLineProcessor.java b/tools/sdkmanager/app/src/com/android/sdkmanager/CommandLineProcessor.java
index 4a3c16c97..d4da21bee 100644
--- a/tools/sdkmanager/app/src/com/android/sdkmanager/CommandLineProcessor.java
+++ b/tools/sdkmanager/app/src/com/android/sdkmanager/CommandLineProcessor.java
@@ -85,13 +85,13 @@ public class CommandLineProcessor {
mLog = logger;
mActions = actions;
- define(MODE.BOOLEAN, false, GLOBAL_FLAG_VERB, NO_VERB_OBJECT, "v", KEY_VERBOSE,
+ define(Mode.BOOLEAN, false, GLOBAL_FLAG_VERB, NO_VERB_OBJECT, "v", KEY_VERBOSE,
"Verbose mode: errors, warnings and informational messages are printed.",
false);
- define(MODE.BOOLEAN, false, GLOBAL_FLAG_VERB, NO_VERB_OBJECT, "s", KEY_SILENT,
+ define(Mode.BOOLEAN, false, GLOBAL_FLAG_VERB, NO_VERB_OBJECT, "s", KEY_SILENT,
"Silent mode: only errors are printed out.",
false);
- define(MODE.BOOLEAN, false, GLOBAL_FLAG_VERB, NO_VERB_OBJECT, "h", KEY_HELP,
+ define(Mode.BOOLEAN, false, GLOBAL_FLAG_VERB, NO_VERB_OBJECT, "h", KEY_HELP,
"This help.",
false);
}
@@ -507,7 +507,7 @@ public class CommandLineProcessor {
}
} else if (arg.getDefaultValue() != null) {
Object v = arg.getDefaultValue();
- if (arg.getMode() != MODE.BOOLEAN || v.equals(Boolean.TRUE)) {
+ if (arg.getMode() != Mode.BOOLEAN || v.equals(Boolean.TRUE)) {
value = v.toString();
}
}
@@ -537,7 +537,7 @@ public class CommandLineProcessor {
* The mode of an argument specifies the type of variable it represents,
* whether an extra parameter is required after the flag and how to parse it.
*/
- static enum MODE {
+ static enum Mode {
/** Argument value is a Boolean. Default value is a Boolean. */
BOOLEAN {
@Override
@@ -628,7 +628,7 @@ public class CommandLineProcessor {
* An argument accepted by the command-line, also called "a flag".
* Arguments must have a short version (one letter), a long version name and a description.
* They can have a default value, or it can be null.
- * Depending on the {@link MODE}, the default value can be a Boolean, an Integer, a String
+ * Depending on the {@link Mode}, the default value can be a Boolean, an Integer, a String
* or a String array (in which case the first item is the current by default.)
*/
static class Arg {
@@ -645,7 +645,7 @@ public class CommandLineProcessor {
/** A default value. Can be null. */
private final Object mDefaultValue;
/** The argument mode (type + process method). Never null. */
- private final MODE mMode;
+ private final Mode mMode;
/** True if this argument is mandatory for this verb/directobject. */
private final boolean mMandatory;
/** Current value. Initially set to the default value. */
@@ -656,15 +656,15 @@ public class CommandLineProcessor {
/**
* Creates a new argument flag description.
*
- * @param mode The {@link MODE} for the argument.
+ * @param mode The {@link Mode} for the argument.
* @param mandatory True if this argument is mandatory for this action.
* @param directObject The action name. Can be #NO_VERB_OBJECT or #INTERNAL_FLAG.
* @param shortName The one-letter short argument name. Cannot be empty nor null.
* @param longName The long argument name. Cannot be empty nor null.
* @param description The description. Cannot be null.
- * @param defaultValue The default value (or values), which depends on the selected {@link MODE}.
+ * @param defaultValue The default value (or values), which depends on the selected {@link Mode}.
*/
- public Arg(MODE mode,
+ public Arg(Mode mode,
boolean mandatory,
String verb,
String directObject,
@@ -734,7 +734,7 @@ public class CommandLineProcessor {
}
/** Returns the argument mode (type + process method). Never null. */
- public MODE getMode() {
+ public Mode getMode() {
return mMode;
}
@@ -752,21 +752,21 @@ public class CommandLineProcessor {
/**
* Internal helper to define a new argument for a give action.
*
- * @param mode The {@link MODE} for the argument.
+ * @param mode The {@link Mode} for the argument.
* @param verb The verb name. Can be #INTERNAL_VERB.
* @param directObject The action name. Can be #NO_VERB_OBJECT or #INTERNAL_FLAG.
* @param shortName The one-letter short argument name. Cannot be empty nor null.
* @param longName The long argument name. Cannot be empty nor null.
* @param description The description. Cannot be null.
- * @param defaultValue The default value (or values), which depends on the selected {@link MODE}.
+ * @param defaultValue The default value (or values), which depends on the selected {@link Mode}.
*/
- protected void define(MODE mode,
+ protected void define(Mode mode,
boolean mandatory,
String verb,
String directObject,
String shortName, String longName,
String description, Object defaultValue) {
- assert(mandatory || mode == MODE.BOOLEAN); // a boolean mode cannot be mandatory
+ assert(mandatory || mode == Mode.BOOLEAN); // a boolean mode cannot be mandatory
if (directObject == null) {
directObject = NO_VERB_OBJECT;
diff --git a/tools/sdkmanager/app/src/com/android/sdkmanager/Main.java b/tools/sdkmanager/app/src/com/android/sdkmanager/Main.java
index 1836d330b..b5988ffc3 100644
--- a/tools/sdkmanager/app/src/com/android/sdkmanager/Main.java
+++ b/tools/sdkmanager/app/src/com/android/sdkmanager/Main.java
@@ -337,6 +337,33 @@ class Main {
creator.updateProject(projectDir,
target,
mSdkCommandLine.getParamName());
+
+ boolean doSubProjects = mSdkCommandLine.getParamSubProject();
+ boolean couldHaveDone = false;
+
+ // If there are any sub-folders with a manifest, try to update them as projects
+ // too. This will take care of updating any underlying test project even if the
+ // user changed the folder name.
+ File[] files = new File(projectDir).listFiles();
+ if (files != null) {
+ for (File dir : files) {
+ if (dir.isDirectory() &&
+ new File(dir, SdkConstants.FN_ANDROID_MANIFEST_XML).isFile()) {
+ if (doSubProjects) {
+ creator.updateProject(dir.getPath(),
+ target,
+ mSdkCommandLine.getParamName());
+ } else {
+ couldHaveDone = true;
+ }
+ }
+ }
+ }
+
+ if (couldHaveDone) {
+ mSdkLog.printf("It seems that there are sub-projects. If you want to update them\nplease use the --%1$s parameter.",
+ SdkCommandLine.KEY_SUBPROJECTS);
+ }
}
/**
diff --git a/tools/sdkmanager/app/src/com/android/sdkmanager/SdkCommandLine.java b/tools/sdkmanager/app/src/com/android/sdkmanager/SdkCommandLine.java
index 2ff0c5326..c48a3860b 100644
--- a/tools/sdkmanager/app/src/com/android/sdkmanager/SdkCommandLine.java
+++ b/tools/sdkmanager/app/src/com/android/sdkmanager/SdkCommandLine.java
@@ -38,20 +38,21 @@ public class SdkCommandLine extends CommandLineProcessor {
public static final String OBJECT_PROJECT = "project";
public static final String OBJECT_ADB = "adb";
- public static final String ARG_ALIAS = "alias";
- public static final String ARG_ACTIVITY = "activity";
-
- public static final String KEY_ACTIVITY = ARG_ACTIVITY;
- public static final String KEY_PACKAGE = "package";
- public static final String KEY_MODE = "mode";
- public static final String KEY_TARGET_ID = OBJECT_TARGET;
- public static final String KEY_NAME = "name";
- public static final String KEY_PATH = "path";
- public static final String KEY_FILTER = "filter";
- public static final String KEY_SKIN = "skin";
- public static final String KEY_SDCARD = "sdcard";
- public static final String KEY_FORCE = "force";
- public static final String KEY_RENAME = "rename";
+ public static final String ARG_ALIAS = "alias";
+ public static final String ARG_ACTIVITY = "activity";
+
+ public static final String KEY_ACTIVITY = ARG_ACTIVITY;
+ public static final String KEY_PACKAGE = "package";
+ public static final String KEY_MODE = "mode";
+ public static final String KEY_TARGET_ID = OBJECT_TARGET;
+ public static final String KEY_NAME = "name";
+ public static final String KEY_PATH = "path";
+ public static final String KEY_FILTER = "filter";
+ public static final String KEY_SKIN = "skin";
+ public static final String KEY_SDCARD = "sdcard";
+ public static final String KEY_FORCE = "force";
+ public static final String KEY_RENAME = "rename";
+ public static final String KEY_SUBPROJECTS = "subprojects";
/**
* Action definitions for SdkManager command line.
@@ -97,46 +98,46 @@ public class SdkCommandLine extends CommandLineProcessor {
// --- create avd ---
- define(MODE.STRING, false,
+ define(Mode.STRING, false,
VERB_CREATE, OBJECT_AVD, "p", KEY_PATH,
"Location path of the directory where the new AVD will be created", null);
- define(MODE.STRING, true,
+ define(Mode.STRING, true,
VERB_CREATE, OBJECT_AVD, "n", KEY_NAME,
"Name of the new AVD", null);
- define(MODE.INTEGER, true,
+ define(Mode.INTEGER, true,
VERB_CREATE, OBJECT_AVD, "t", KEY_TARGET_ID,
"Target id of the new AVD", null);
- define(MODE.STRING, false,
+ define(Mode.STRING, false,
VERB_CREATE, OBJECT_AVD, "s", KEY_SKIN,
"Skin of the new AVD", null);
- define(MODE.STRING, false,
+ define(Mode.STRING, false,
VERB_CREATE, OBJECT_AVD, "c", KEY_SDCARD,
"Path to a shared SD card image, or size of a new sdcard for the new AVD", null);
- define(MODE.BOOLEAN, false,
+ define(Mode.BOOLEAN, false,
VERB_CREATE, OBJECT_AVD, "f", KEY_FORCE,
"Force creation (override an existing AVD)", false);
// --- delete avd ---
- define(MODE.STRING, true,
+ define(Mode.STRING, true,
VERB_DELETE, OBJECT_AVD, "n", KEY_NAME,
"Name of the AVD to delete", null);
// --- move avd ---
- define(MODE.STRING, true,
+ define(Mode.STRING, true,
VERB_MOVE, OBJECT_AVD, "n", KEY_NAME,
"Name of the AVD to move or rename", null);
- define(MODE.STRING, false,
+ define(Mode.STRING, false,
VERB_MOVE, OBJECT_AVD, "r", KEY_RENAME,
"New name of the AVD to rename", null);
- define(MODE.STRING, false,
+ define(Mode.STRING, false,
VERB_MOVE, OBJECT_AVD, "p", KEY_PATH,
"New location path of the directory where to move the AVD", null);
// --- update avd ---
- define(MODE.STRING, true,
+ define(Mode.STRING, true,
VERB_UPDATE, OBJECT_AVD, "n", KEY_NAME,
"Name of the AVD to update", null);
@@ -145,41 +146,45 @@ public class SdkCommandLine extends CommandLineProcessor {
/* Disabled for ADT 0.9 / Cupcake SDK 1.5_r1 release. [bug #1795718].
This currently does not work, the alias build rules need to be fixed.
- define(MODE.ENUM, true,
+ define(Mode.ENUM, true,
VERB_CREATE, OBJECT_PROJECT, "m", KEY_MODE,
"Project mode", new String[] { ARG_ACTIVITY, ARG_ALIAS });
*/
- define(MODE.STRING, true,
+ define(Mode.STRING, true,
VERB_CREATE, OBJECT_PROJECT,
"p", KEY_PATH,
"Location path of new project", null);
- define(MODE.INTEGER, true,
+ define(Mode.INTEGER, true,
VERB_CREATE, OBJECT_PROJECT, "t", KEY_TARGET_ID,
"Target id of the new project", null);
- define(MODE.STRING, true,
+ define(Mode.STRING, true,
VERB_CREATE, OBJECT_PROJECT, "k", KEY_PACKAGE,
"Package name", null);
- define(MODE.STRING, true,
+ define(Mode.STRING, true,
VERB_CREATE, OBJECT_PROJECT, "a", KEY_ACTIVITY,
"Activity name", null);
- define(MODE.STRING, false,
+ define(Mode.STRING, false,
VERB_CREATE, OBJECT_PROJECT, "n", KEY_NAME,
"Project name", null);
// --- update project ---
- define(MODE.STRING, true,
+ define(Mode.STRING, true,
VERB_UPDATE, OBJECT_PROJECT,
"p", KEY_PATH,
"Location path of the project", null);
- define(MODE.INTEGER, true,
+ define(Mode.INTEGER, true,
VERB_UPDATE, OBJECT_PROJECT,
"t", KEY_TARGET_ID,
"Target id to set for the project", -1);
- define(MODE.STRING, false,
+ define(Mode.STRING, false,
VERB_UPDATE, OBJECT_PROJECT,
"n", KEY_NAME,
"Project name", null);
+ define(Mode.BOOLEAN, false,
+ VERB_UPDATE, OBJECT_PROJECT,
+ "s", KEY_SUBPROJECTS,
+ "Also update any projects in sub-folders, such as test projects.", false);
}
@Override
@@ -234,8 +239,13 @@ public class SdkCommandLine extends CommandLineProcessor {
return ((String) getValue(null, OBJECT_PROJECT, KEY_PACKAGE));
}
- /** Helper to retrieve the --activity for the new project action. */
+ /** Helper to retrieve the --activity for any project action. */
public String getParamProjectActivity() {
return ((String) getValue(null, OBJECT_PROJECT, KEY_ACTIVITY));
}
+
+ /** Helper to retrieve the --subprojects for any project action. */
+ public boolean getParamSubProject() {
+ return ((Boolean) getValue(null, OBJECT_PROJECT, KEY_SUBPROJECTS)).booleanValue();
+ }
}
diff --git a/tools/sdkmanager/app/tests/com/android/sdkmanager/CommandLineProcessorTest.java b/tools/sdkmanager/app/tests/com/android/sdkmanager/CommandLineProcessorTest.java
index 918591b53..a213652d7 100644
--- a/tools/sdkmanager/app/tests/com/android/sdkmanager/CommandLineProcessorTest.java
+++ b/tools/sdkmanager/app/tests/com/android/sdkmanager/CommandLineProcessorTest.java
@@ -41,9 +41,9 @@ public class CommandLineProcessorTest extends TestCase {
{ "verb1", "action1", "Some action" },
{ "verb1", "action2", "Another action" },
});
- define(MODE.STRING, false /*mandatory*/,
+ define(Mode.STRING, false /*mandatory*/,
"verb1", "action1", "1", "first", "non-mandatory flag", null);
- define(MODE.STRING, true /*mandatory*/,
+ define(Mode.STRING, true /*mandatory*/,
"verb1", "action1", "2", "second", "mandatory flag", null);
}