Heck yeah, got Android building the project
This commit is contained in:
@@ -55,10 +55,16 @@ pub fn upgrade_project(path: &str) -> Result<()> {
|
|||||||
// Android Studio integration — regenerated so run configs stay in
|
// Android Studio integration — regenerated so run configs stay in
|
||||||
// sync if deploy.sh flags or script names ever change.
|
// sync if deploy.sh flags or script names ever change.
|
||||||
".idea/workspace.xml",
|
".idea/workspace.xml",
|
||||||
|
".idea/runConfigurations/Build.xml",
|
||||||
|
".idea/runConfigurations/Build (Windows).xml",
|
||||||
".idea/runConfigurations/Deploy (auto).xml",
|
".idea/runConfigurations/Deploy (auto).xml",
|
||||||
|
".idea/runConfigurations/Deploy (auto) (Windows).xml",
|
||||||
".idea/runConfigurations/Deploy (USB).xml",
|
".idea/runConfigurations/Deploy (USB).xml",
|
||||||
|
".idea/runConfigurations/Deploy (USB) (Windows).xml",
|
||||||
".idea/runConfigurations/Deploy (WiFi).xml",
|
".idea/runConfigurations/Deploy (WiFi).xml",
|
||||||
|
".idea/runConfigurations/Deploy (WiFi) (Windows).xml",
|
||||||
".idea/runConfigurations/Test.xml",
|
".idea/runConfigurations/Test.xml",
|
||||||
|
".idea/runConfigurations/Test (Windows).xml",
|
||||||
];
|
];
|
||||||
|
|
||||||
println!("{}", "Updating infrastructure files...".bright_yellow());
|
println!("{}", "Updating infrastructure files...".bright_yellow());
|
||||||
|
|||||||
@@ -470,8 +470,57 @@ class BasicTest {
|
|||||||
// Weevil's scripts. Android Studio shows these in the Run dropdown
|
// Weevil's scripts. Android Studio shows these in the Run dropdown
|
||||||
// at the top of the IDE — no configuration needed by the student.
|
// at the top of the IDE — no configuration needed by the student.
|
||||||
//
|
//
|
||||||
// We generate platform-specific configs: .sh on Unix, .bat on Windows.
|
// We generate both Unix (.sh, ./gradlew) and Windows (.bat, gradlew.bat)
|
||||||
// The SCRIPT element uses $PROJECT_DIR$ so it's location-independent.
|
// variants. Android Studio automatically hides configs whose script files
|
||||||
|
// don't exist, so only the platform-appropriate ones appear in the dropdown.
|
||||||
|
|
||||||
|
// Build (Unix) — just builds the APK without deploying
|
||||||
|
let build_unix_xml = r#"<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration name="Build" type="ShConfigurationType">
|
||||||
|
<option name="SCRIPT_TEXT" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/build.sh" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="/bin/bash" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="true" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="true" />
|
||||||
|
<envs />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
|
"#;
|
||||||
|
fs::write(
|
||||||
|
project_path.join(".idea/runConfigurations/Build.xml"),
|
||||||
|
build_unix_xml,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
// Build (Windows) — same, but calls build.bat
|
||||||
|
let build_windows_xml = r#"<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration name="Build (Windows)" type="ShConfigurationType">
|
||||||
|
<option name="SCRIPT_TEXT" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/build.bat" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="cmd.exe" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="/c" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="true" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="true" />
|
||||||
|
<envs />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
|
"#;
|
||||||
|
fs::write(
|
||||||
|
project_path.join(".idea/runConfigurations/Build (Windows).xml"),
|
||||||
|
build_windows_xml,
|
||||||
|
)?;
|
||||||
|
|
||||||
// Deploy (auto) — no flags, deploy.sh auto-detects USB vs WiFi
|
// Deploy (auto) — no flags, deploy.sh auto-detects USB vs WiFi
|
||||||
let deploy_auto_xml = r#"<component name="ProjectRunConfigurationManager">
|
let deploy_auto_xml = r#"<component name="ProjectRunConfigurationManager">
|
||||||
@@ -497,6 +546,30 @@ class BasicTest {
|
|||||||
deploy_auto_xml,
|
deploy_auto_xml,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
|
// Deploy (auto) (Windows)
|
||||||
|
let deploy_auto_windows_xml = r#"<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration name="Deploy (auto) (Windows)" type="ShConfigurationType">
|
||||||
|
<option name="SCRIPT_TEXT" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/deploy.bat" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="cmd.exe" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="/c" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="true" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="true" />
|
||||||
|
<envs />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
|
"#;
|
||||||
|
fs::write(
|
||||||
|
project_path.join(".idea/runConfigurations/Deploy (auto) (Windows).xml"),
|
||||||
|
deploy_auto_windows_xml,
|
||||||
|
)?;
|
||||||
|
|
||||||
// Deploy (USB) — forces USB connection
|
// Deploy (USB) — forces USB connection
|
||||||
let deploy_usb_xml = r#"<component name="ProjectRunConfigurationManager">
|
let deploy_usb_xml = r#"<component name="ProjectRunConfigurationManager">
|
||||||
<configuration name="Deploy (USB)" type="ShConfigurationType">
|
<configuration name="Deploy (USB)" type="ShConfigurationType">
|
||||||
@@ -521,6 +594,30 @@ class BasicTest {
|
|||||||
deploy_usb_xml,
|
deploy_usb_xml,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
|
// Deploy (USB) (Windows)
|
||||||
|
let deploy_usb_windows_xml = r#"<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration name="Deploy (USB) (Windows)" type="ShConfigurationType">
|
||||||
|
<option name="SCRIPT_TEXT" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/deploy.bat" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="cmd.exe" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="/c" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="true" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="true" />
|
||||||
|
<envs />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
|
"#;
|
||||||
|
fs::write(
|
||||||
|
project_path.join(".idea/runConfigurations/Deploy (USB) (Windows).xml"),
|
||||||
|
deploy_usb_windows_xml,
|
||||||
|
)?;
|
||||||
|
|
||||||
// Deploy (WiFi) — forces WiFi connection to default 192.168.43.1
|
// Deploy (WiFi) — forces WiFi connection to default 192.168.43.1
|
||||||
let deploy_wifi_xml = r#"<component name="ProjectRunConfigurationManager">
|
let deploy_wifi_xml = r#"<component name="ProjectRunConfigurationManager">
|
||||||
<configuration name="Deploy (WiFi)" type="ShConfigurationType">
|
<configuration name="Deploy (WiFi)" type="ShConfigurationType">
|
||||||
@@ -545,6 +642,30 @@ class BasicTest {
|
|||||||
deploy_wifi_xml,
|
deploy_wifi_xml,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
|
// Deploy (WiFi) (Windows)
|
||||||
|
let deploy_wifi_windows_xml = r#"<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration name="Deploy (WiFi) (Windows)" type="ShConfigurationType">
|
||||||
|
<option name="SCRIPT_TEXT" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/deploy.bat" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="cmd.exe" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="/c" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="true" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="true" />
|
||||||
|
<envs />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
|
"#;
|
||||||
|
fs::write(
|
||||||
|
project_path.join(".idea/runConfigurations/Deploy (WiFi) (Windows).xml"),
|
||||||
|
deploy_wifi_windows_xml,
|
||||||
|
)?;
|
||||||
|
|
||||||
// Test — runs the unit test suite via Gradle
|
// Test — runs the unit test suite via Gradle
|
||||||
let test_xml = r#"<component name="ProjectRunConfigurationManager">
|
let test_xml = r#"<component name="ProjectRunConfigurationManager">
|
||||||
<configuration name="Test" type="ShConfigurationType">
|
<configuration name="Test" type="ShConfigurationType">
|
||||||
@@ -569,6 +690,31 @@ class BasicTest {
|
|||||||
test_xml,
|
test_xml,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
|
// Test (Windows)
|
||||||
|
let test_windows_xml = r#"<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration name="Test (Windows)" type="ShConfigurationType">
|
||||||
|
<option name="SCRIPT_TEXT" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/gradlew.bat" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="test" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="cmd.exe" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="/c" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="true" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="true" />
|
||||||
|
<envs />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
|
"#;
|
||||||
|
fs::write(
|
||||||
|
project_path.join(".idea/runConfigurations/Test (Windows).xml"),
|
||||||
|
test_windows_xml,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user