|
|
|
@@ -55,6 +55,7 @@ impl ProjectBuilder {
|
|
|
|
"src/test/java/robot",
|
|
|
|
"src/test/java/robot",
|
|
|
|
"src/test/java/robot/subsystems",
|
|
|
|
"src/test/java/robot/subsystems",
|
|
|
|
"gradle/wrapper",
|
|
|
|
"gradle/wrapper",
|
|
|
|
|
|
|
|
".idea/runConfigurations",
|
|
|
|
];
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
for dir in dirs {
|
|
|
|
for dir in dirs {
|
|
|
|
@@ -416,9 +417,307 @@ class BasicTest {
|
|
|
|
test_file
|
|
|
|
test_file
|
|
|
|
)?;
|
|
|
|
)?;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Android Studio integration: .idea/ files
|
|
|
|
|
|
|
|
self.generate_idea_files(project_path)?;
|
|
|
|
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// Generate .idea/ files for Android Studio integration.
|
|
|
|
|
|
|
|
///
|
|
|
|
|
|
|
|
/// The goal is for students to open the project in Android Studio and see
|
|
|
|
|
|
|
|
/// a clean file tree (just src/ and the scripts) with Run configurations
|
|
|
|
|
|
|
|
/// that invoke Weevil's shell scripts directly. All the internal plumbing
|
|
|
|
|
|
|
|
/// (sdk/, .gradle/, build/) is hidden from the IDE view.
|
|
|
|
|
|
|
|
///
|
|
|
|
|
|
|
|
/// Android Studio uses IntelliJ's run configuration XML format. The
|
|
|
|
|
|
|
|
/// ShellScript type invokes a script relative to the project root — exactly
|
|
|
|
|
|
|
|
/// what we want since deploy.sh and build.sh already live there.
|
|
|
|
|
|
|
|
fn generate_idea_files(&self, project_path: &Path) -> Result<()> {
|
|
|
|
|
|
|
|
// workspace.xml — controls the file-tree view and hides internals.
|
|
|
|
|
|
|
|
// We use a ProjectViewPane exclude pattern list rather than touching
|
|
|
|
|
|
|
|
// the module's source roots, so this works regardless of whether the
|
|
|
|
|
|
|
|
// student has opened the project before.
|
|
|
|
|
|
|
|
let workspace_xml = r#"<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
|
|
|
<project version="4">
|
|
|
|
|
|
|
|
<component name="ProjectViewManager">
|
|
|
|
|
|
|
|
<state>
|
|
|
|
|
|
|
|
<navigator currentProjector="ProjectFiles" hideEmptyMiddlePackages="true" sortByType="true">
|
|
|
|
|
|
|
|
<state>
|
|
|
|
|
|
|
|
<expand>
|
|
|
|
|
|
|
|
<file url="file://$PROJECT_DIR$/src" />
|
|
|
|
|
|
|
|
<file url="file://$PROJECT_DIR$/src/main" />
|
|
|
|
|
|
|
|
<file url="file://$PROJECT_DIR$/src/main/java" />
|
|
|
|
|
|
|
|
<file url="file://$PROJECT_DIR$/src/main/java/robot" />
|
|
|
|
|
|
|
|
<file url="file://$PROJECT_DIR$/src/test" />
|
|
|
|
|
|
|
|
<file url="file://$PROJECT_DIR$/src/test/java" />
|
|
|
|
|
|
|
|
<file url="file://$PROJECT_DIR$/src/test/java/robot" />
|
|
|
|
|
|
|
|
</expand>
|
|
|
|
|
|
|
|
</state>
|
|
|
|
|
|
|
|
</navigator>
|
|
|
|
|
|
|
|
</state>
|
|
|
|
|
|
|
|
</component>
|
|
|
|
|
|
|
|
<component name="ExcludedFiles">
|
|
|
|
|
|
|
|
<file url="file://$PROJECT_DIR$/build" reason="Build output" />
|
|
|
|
|
|
|
|
<file url="file://$PROJECT_DIR$/.gradle" reason="Gradle cache" />
|
|
|
|
|
|
|
|
<file url="file://$PROJECT_DIR$/gradle" reason="Gradle wrapper internals" />
|
|
|
|
|
|
|
|
</component>
|
|
|
|
|
|
|
|
</project>
|
|
|
|
|
|
|
|
"#;
|
|
|
|
|
|
|
|
fs::write(project_path.join(".idea/workspace.xml"), workspace_xml)?;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Run configurations. Each is a ShellScript type that invokes one of
|
|
|
|
|
|
|
|
// Weevil's scripts. Android Studio shows these in the Run dropdown
|
|
|
|
|
|
|
|
// at the top of the IDE — no configuration needed by the student.
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// We generate both Unix (.sh, ./gradlew) and Windows (.bat, gradlew.bat)
|
|
|
|
|
|
|
|
// 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
|
|
|
|
|
|
|
|
let deploy_auto_xml = r#"<component name="ProjectRunConfigurationManager">
|
|
|
|
|
|
|
|
<configuration name="Deploy (auto)" type="ShConfigurationType">
|
|
|
|
|
|
|
|
<option name="SCRIPT_TEXT" value="" />
|
|
|
|
|
|
|
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
|
|
|
|
|
|
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/deploy.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/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
|
|
|
|
|
|
|
|
let deploy_usb_xml = r#"<component name="ProjectRunConfigurationManager">
|
|
|
|
|
|
|
|
<configuration name="Deploy (USB)" type="ShConfigurationType">
|
|
|
|
|
|
|
|
<option name="SCRIPT_TEXT" value="" />
|
|
|
|
|
|
|
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
|
|
|
|
|
|
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/deploy.sh" />
|
|
|
|
|
|
|
|
<option name="SCRIPT_OPTIONS" value="--usb" />
|
|
|
|
|
|
|
|
<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/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
|
|
|
|
|
|
|
|
let deploy_wifi_xml = r#"<component name="ProjectRunConfigurationManager">
|
|
|
|
|
|
|
|
<configuration name="Deploy (WiFi)" type="ShConfigurationType">
|
|
|
|
|
|
|
|
<option name="SCRIPT_TEXT" value="" />
|
|
|
|
|
|
|
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
|
|
|
|
|
|
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/deploy.sh" />
|
|
|
|
|
|
|
|
<option name="SCRIPT_OPTIONS" value="--wifi" />
|
|
|
|
|
|
|
|
<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/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
|
|
|
|
|
|
|
|
let test_xml = r#"<component name="ProjectRunConfigurationManager">
|
|
|
|
|
|
|
|
<configuration name="Test" type="ShConfigurationType">
|
|
|
|
|
|
|
|
<option name="SCRIPT_TEXT" value="" />
|
|
|
|
|
|
|
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
|
|
|
|
|
|
|
<option name="SCRIPT_PATH" value="$PROJECT_DIR$/gradlew" />
|
|
|
|
|
|
|
|
<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="/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/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(())
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fn setup_gradle(&self, project_path: &Path) -> Result<()> {
|
|
|
|
fn setup_gradle(&self, project_path: &Path) -> Result<()> {
|
|
|
|
println!("Setting up Gradle wrapper...");
|
|
|
|
println!("Setting up Gradle wrapper...");
|
|
|
|
crate::sdk::gradle::setup_wrapper(project_path)?;
|
|
|
|
crate::sdk::gradle::setup_wrapper(project_path)?;
|
|
|
|
|