aboutsummaryrefslogtreecommitdiffstats
path: root/sdkmanager/app/src/com
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2010-06-04 12:53:07 -0700
committerXavier Ducrohet <xav@android.com>2010-06-08 10:34:51 -0700
commite0ac2ae830f068dbbca3cbfeefd261ef7a0a98b2 (patch)
tree91ce8503c309602892bad6a78f38cad783861301 /sdkmanager/app/src/com
parent3f7087032bba4b7ea52b6bd391d8f3005d51230a (diff)
downloadsdk-e0ac2ae830f068dbbca3cbfeefd261ef7a0a98b2.zip
sdk-e0ac2ae830f068dbbca3cbfeefd261ef7a0a98b2.tar.gz
sdk-e0ac2ae830f068dbbca3cbfeefd261ef7a0a98b2.tar.bz2
Export project creation.
Change-Id: I22b5a1c7225425b387e1fd5b6769b5e9249b7c88
Diffstat (limited to 'sdkmanager/app/src/com')
-rw-r--r--sdkmanager/app/src/com/android/sdkmanager/CommandLineProcessor.java2
-rw-r--r--sdkmanager/app/src/com/android/sdkmanager/Main.java99
-rw-r--r--sdkmanager/app/src/com/android/sdkmanager/SdkCommandLine.java51
3 files changed, 121 insertions, 31 deletions
diff --git a/sdkmanager/app/src/com/android/sdkmanager/CommandLineProcessor.java b/sdkmanager/app/src/com/android/sdkmanager/CommandLineProcessor.java
index 7edee3a..5276bed 100644
--- a/sdkmanager/app/src/com/android/sdkmanager/CommandLineProcessor.java
+++ b/sdkmanager/app/src/com/android/sdkmanager/CommandLineProcessor.java
@@ -504,7 +504,7 @@ class CommandLineProcessor {
stdout("\nValid actions are composed of a verb and an optional direct object:");
for (String[] action : mActions) {
if (verb == null || verb.equals(action[ACTION_VERB_INDEX])) {
- stdout("- %1$6s %2$-12s: %3$s",
+ stdout("- %1$6s %2$-14s: %3$s",
action[ACTION_VERB_INDEX],
action[ACTION_OBJECT_INDEX],
action[ACTION_DESC_INDEX]);
diff --git a/sdkmanager/app/src/com/android/sdkmanager/Main.java b/sdkmanager/app/src/com/android/sdkmanager/Main.java
index 4d92467..9ce3006 100644
--- a/sdkmanager/app/src/com/android/sdkmanager/Main.java
+++ b/sdkmanager/app/src/com/android/sdkmanager/Main.java
@@ -231,6 +231,10 @@ public class Main {
} else if (SdkCommandLine.OBJECT_LIB_PROJECT.equals(directObject)) {
createProject(true /*library*/);
+
+ } else if (SdkCommandLine.OBJECT_EXPORT_PROJECT.equals(directObject)) {
+ createExportProject();
+
}
} else if (SdkCommandLine.VERB_UPDATE.equals(verb)) {
if (SdkCommandLine.OBJECT_AVD.equals(directObject)) {
@@ -245,14 +249,19 @@ public class Main {
} else if (SdkCommandLine.OBJECT_LIB_PROJECT.equals(directObject)) {
updateProject(true /*library*/);
+ } else if (SdkCommandLine.OBJECT_EXPORT_PROJECT.equals(directObject)) {
+ updateExportProject();
+
} else if (SdkCommandLine.OBJECT_SDK.equals(directObject)) {
if (mSdkCommandLine.getFlagNoUI()) {
updateSdkNoUI();
} else {
showMainWindow(true /*autoUpdate*/);
}
+
} else if (SdkCommandLine.OBJECT_ADB.equals(directObject)) {
updateAdb();
+
}
} else if (SdkCommandLine.VERB_DELETE.equals(verb) &&
SdkCommandLine.OBJECT_AVD.equals(directObject)) {
@@ -346,6 +355,19 @@ public class Main {
}
/**
+ * Returns a configured {@link ProjectCreator} instance.
+ */
+ private ProjectCreator getProjectCreator() {
+ ProjectCreator creator = new ProjectCreator(mSdkManager, mOsSdkFolder,
+ mSdkCommandLine.isVerbose() ? OutputLevel.VERBOSE :
+ mSdkCommandLine.isSilent() ? OutputLevel.SILENT :
+ OutputLevel.NORMAL,
+ mSdkLog);
+ return creator;
+ }
+
+
+ /**
* Creates a new Android project based on command-line parameters
*/
private void createProject(boolean library) {
@@ -361,11 +383,7 @@ public class Main {
}
IAndroidTarget target = targets[targetId - 1]; // target id is 1-based
- ProjectCreator creator = new ProjectCreator(mSdkManager, mOsSdkFolder,
- mSdkCommandLine.isVerbose() ? OutputLevel.VERBOSE :
- mSdkCommandLine.isSilent() ? OutputLevel.SILENT :
- OutputLevel.NORMAL,
- mSdkLog);
+ ProjectCreator creator = getProjectCreator();
String projectDir = getProjectLocation(mSdkCommandLine.getParamLocationPath());
@@ -384,7 +402,6 @@ public class Main {
return;
}
-
if (activityName != null &&
!ProjectCreator.RE_ACTIVITY_NAME.matcher(activityName).matches()) {
errorAndExit(
@@ -506,11 +523,7 @@ public class Main {
mSdkLog.printf("Found main project target: %1$s\n", target.getFullName());
- ProjectCreator creator = new ProjectCreator(mSdkManager, mOsSdkFolder,
- mSdkCommandLine.isVerbose() ? OutputLevel.VERBOSE :
- mSdkCommandLine.isSilent() ? OutputLevel.SILENT :
- OutputLevel.NORMAL,
- mSdkLog);
+ ProjectCreator creator = getProjectCreator();
String projectName = mSdkCommandLine.getParamName();
@@ -531,6 +544,38 @@ public class Main {
pathToMainProject);
}
+ /**
+ * Creates a new Android Export project based on command-line parameters
+ */
+ private void createExportProject() {
+ ProjectCreator creator = getProjectCreator();
+
+ String projectDir = getProjectLocation(mSdkCommandLine.getParamLocationPath());
+
+ String projectName = mSdkCommandLine.getParamName();
+ String packageName = mSdkCommandLine.getParamProjectPackage(
+ SdkCommandLine.OBJECT_EXPORT_PROJECT);
+
+ if (projectName != null &&
+ !ProjectCreator.RE_PROJECT_NAME.matcher(projectName).matches()) {
+ errorAndExit(
+ "Project name '%1$s' contains invalid characters.\nAllowed characters are: %2$s",
+ projectName, ProjectCreator.CHARS_PROJECT_NAME);
+ return;
+ }
+
+ if (packageName != null &&
+ !ProjectCreator.RE_PACKAGE_NAME.matcher(packageName).matches()) {
+ errorAndExit(
+ "Package name '%1$s' contains invalid characters.\n" +
+ "A package name must be constitued of two Java identifiers.\n" +
+ "Each identifier allowed characters are: %2$s",
+ packageName, ProjectCreator.CHARS_PACKAGE_NAME);
+ return;
+ }
+
+ creator.createExportProject(projectDir, projectName, packageName);
+ }
/**
* Updates an existing Android project based on command-line parameters
@@ -553,11 +598,7 @@ public class Main {
target = targets[targetId - 1]; // target id is 1-based
}
- ProjectCreator creator = new ProjectCreator(mSdkManager, mOsSdkFolder,
- mSdkCommandLine.isVerbose() ? OutputLevel.VERBOSE :
- mSdkCommandLine.isSilent() ? OutputLevel.SILENT :
- OutputLevel.NORMAL,
- mSdkLog);
+ ProjectCreator creator = getProjectCreator();
String projectDir = getProjectLocation(mSdkCommandLine.getParamLocationPath());
@@ -605,11 +646,7 @@ public class Main {
* Updates an existing test project with a new path to the main project.
*/
private void updateTestProject() {
- ProjectCreator creator = new ProjectCreator(mSdkManager, mOsSdkFolder,
- mSdkCommandLine.isVerbose() ? OutputLevel.VERBOSE :
- mSdkCommandLine.isSilent() ? OutputLevel.SILENT :
- OutputLevel.NORMAL,
- mSdkLog);
+ ProjectCreator creator = getProjectCreator();
String projectDir = getProjectLocation(mSdkCommandLine.getParamLocationPath());
@@ -618,6 +655,26 @@ public class Main {
}
/**
+ * Updates an existing Android export project based on command-line parameters
+ */
+ private void updateExportProject() {
+ ProjectCreator creator = getProjectCreator();
+
+ String projectDir = getProjectLocation(mSdkCommandLine.getParamLocationPath());
+
+ String projectName = mSdkCommandLine.getParamName();
+ if (projectName != null &&
+ !ProjectCreator.RE_PROJECT_NAME.matcher(projectName).matches()) {
+ errorAndExit(
+ "Project name '%1$s' contains invalid characters.\nAllowed characters are: %2$s",
+ projectName, ProjectCreator.CHARS_PROJECT_NAME);
+ return;
+ }
+
+ creator.updateExportProject(projectDir, projectName, mSdkCommandLine.getFlagForce());
+ }
+
+ /**
* Adjusts the project location to make it absolute & canonical relative to the
* working directory, if any.
*
diff --git a/sdkmanager/app/src/com/android/sdkmanager/SdkCommandLine.java b/sdkmanager/app/src/com/android/sdkmanager/SdkCommandLine.java
index d4da959..906c1ac 100644
--- a/sdkmanager/app/src/com/android/sdkmanager/SdkCommandLine.java
+++ b/sdkmanager/app/src/com/android/sdkmanager/SdkCommandLine.java
@@ -44,15 +44,16 @@ class SdkCommandLine extends CommandLineProcessor {
public final static String VERB_DELETE = "delete";
public final static String VERB_UPDATE = "update";
- public static final String OBJECT_SDK = "sdk";
- public static final String OBJECT_AVD = "avd";
- public static final String OBJECT_AVDS = "avds";
- public static final String OBJECT_TARGET = "target";
- public static final String OBJECT_TARGETS = "targets";
- public static final String OBJECT_PROJECT = "project";
- public static final String OBJECT_TEST_PROJECT = "test-project";
- public static final String OBJECT_LIB_PROJECT = "lib-project";
- public static final String OBJECT_ADB = "adb";
+ public static final String OBJECT_SDK = "sdk";
+ public static final String OBJECT_AVD = "avd";
+ public static final String OBJECT_AVDS = "avds";
+ public static final String OBJECT_TARGET = "target";
+ public static final String OBJECT_TARGETS = "targets";
+ public static final String OBJECT_PROJECT = "project";
+ public static final String OBJECT_TEST_PROJECT = "test-project";
+ public static final String OBJECT_LIB_PROJECT = "lib-project";
+ public static final String OBJECT_EXPORT_PROJECT = "export-project";
+ public static final String OBJECT_ADB = "adb";
public static final String ARG_ALIAS = "alias";
public static final String ARG_ACTIVITY = "activity";
@@ -125,6 +126,11 @@ class SdkCommandLine extends CommandLineProcessor {
{ VERB_UPDATE, OBJECT_LIB_PROJECT,
"Updates an Android Library Project (must have an AndroidManifest.xml)." },
+ { VERB_CREATE, OBJECT_EXPORT_PROJECT,
+ "Creates a new Android Export Project." },
+ { VERB_UPDATE, OBJECT_EXPORT_PROJECT,
+ "Updates an Android Export Project (must have an export.properties)." },
+
{ VERB_UPDATE, OBJECT_ADB,
"Updates adb to support the USB devices declared in the SDK add-ons." },
@@ -267,6 +273,19 @@ class SdkCommandLine extends CommandLineProcessor {
VERB_CREATE, OBJECT_LIB_PROJECT, "k", KEY_PACKAGE,
"Package name", null);
+ // --- create export-project ---
+
+ define(Mode.STRING, true,
+ VERB_CREATE, OBJECT_EXPORT_PROJECT,
+ "p", KEY_PATH,
+ "Location path of new project", null);
+ define(Mode.STRING, false,
+ VERB_CREATE, OBJECT_EXPORT_PROJECT, "n", KEY_NAME,
+ "Project name", null);
+ define(Mode.STRING, true,
+ VERB_CREATE, OBJECT_EXPORT_PROJECT, "k", KEY_PACKAGE,
+ "Package name", null);
+
// --- update project ---
define(Mode.STRING, true,
@@ -311,6 +330,20 @@ class SdkCommandLine extends CommandLineProcessor {
VERB_UPDATE, OBJECT_LIB_PROJECT,
"t", KEY_TARGET_ID,
"Target id to set for the project", null);
+
+ // --- update export project ---
+
+ define(Mode.STRING, true,
+ VERB_UPDATE, OBJECT_EXPORT_PROJECT,
+ "p", KEY_PATH,
+ "Location path of the project", null);
+ define(Mode.STRING, false,
+ VERB_UPDATE, OBJECT_EXPORT_PROJECT,
+ "n", KEY_NAME,
+ "Project name", null);
+ define(Mode.BOOLEAN, false,
+ VERB_UPDATE, OBJECT_EXPORT_PROJECT, "f", KEY_FORCE,
+ "Force replacing the build.xml file", false);
}
@Override