├── .github ├── dependabot.yml └── workflows │ ├── build.yml │ ├── release.yml │ └── run-ui-tests.yml ├── .gitignore ├── .idea └── gradle.xml ├── .run ├── Run Plugin.run.xml ├── Run Tests.run.xml └── Run Verifications.run.xml ├── CHANGELOG.md ├── LICENSE ├── README.md ├── build.gradle.kts ├── files └── gradle-wrapper.jar ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── images ├── cmp_template.png ├── compose_template.png ├── desktopApp_configuration.png ├── details.png ├── details_cmp.png ├── edit_configurations.png ├── final.png ├── final_cmp.png ├── iosApp_configuration.png ├── kmp_template.png ├── new_project.png ├── new_project_cmp.png └── xml_template.png ├── qodana.yml ├── settings.gradle.kts └── src └── main ├── kotlin └── com │ └── github │ └── cnrture │ └── quickprojectwizard │ ├── AndroidStudioTemplateProvider.kt │ ├── CMPTemplate.kt │ ├── ComposeTemplate.kt │ ├── Extensions.kt │ ├── XMLTemplate.kt │ ├── cmparch │ ├── AndroidFileGenerator.kt │ ├── CMPConfigModel.kt │ ├── CMPImageLibrary.kt │ ├── CommonFileGenerator.kt │ ├── DesktopFileGenerator.kt │ ├── FileGenerator.kt │ ├── IOSFileGenerator.kt │ └── Template.kt │ ├── composearch │ ├── common │ │ └── EmptyCollectExtension.kt │ └── ui │ │ ├── EmptyActivity.kt │ │ ├── components │ │ ├── EmptyEmptyScreen.kt │ │ └── EmptyLoadingBar.kt │ │ ├── main │ │ ├── EmptyMainContract.kt │ │ ├── EmptyMainScreen.kt │ │ ├── EmptyMainScreenPreviewProvider.kt │ │ └── EmptyMainViewModel.kt │ │ ├── navigation │ │ ├── EmptyNavigationGraph.kt │ │ └── Screen.kt │ │ └── theme │ │ ├── EmptyColor.kt │ │ ├── EmptyTheme.kt │ │ └── EmptyType.kt │ ├── general │ ├── EmptyConstants.kt │ ├── EmptyMainApplication.kt │ ├── EmptyManifestXml.kt │ ├── ImageLibrary.kt │ ├── NetworkLibrary.kt │ ├── data │ │ ├── model │ │ │ └── EmptyMainEntityModel.kt │ │ ├── repository │ │ │ └── EmptyMainRepositoryImpl.kt │ │ └── source │ │ │ ├── local │ │ │ ├── EmptyMainDao.kt │ │ │ └── EmptyMainRoomDB.kt │ │ │ └── remote │ │ │ ├── EmptyKtorApi.kt │ │ │ └── EmptyMainService.kt │ ├── detekt │ │ └── EmptyDetektConfig.kt │ ├── di │ │ ├── EmptyLocalModule.kt │ │ ├── EmptyNetworkModule.kt │ │ └── EmptyRepositoryModule.kt │ └── domain │ │ └── MainRepository.kt │ ├── gradle │ ├── Dependencies.kt │ ├── GradleKts.kt │ ├── Library.kt │ ├── Plugin.kt │ ├── ProjectGradleKts.kt │ ├── Version.kt │ └── network │ │ ├── GetVersions.kt │ │ └── VersionModel.kt │ ├── recipes │ ├── ComposeMultiplatformProjectRecipe.kt │ ├── ComposeProjectRecipe.kt │ └── XMLProjectRecipe.kt │ ├── util │ ├── FileUtils.kt │ └── NotificationUtil.kt │ └── xmlarch │ ├── common │ └── EmptyCollectExtension.kt │ └── ui │ ├── EmptyActivityLayout.kt │ ├── EmptyActivityXML.kt │ ├── EmptyFragmentLayout.kt │ ├── EmptyMainFragment.kt │ ├── EmptyMainNavGraphXML.kt │ ├── EmptyMainUIState.kt │ └── EmptyMainViewModelXML.kt └── resources ├── META-INF ├── plugin.xml ├── pluginIcon.svg └── pluginIcon_dark.svg └── fileTemplates ├── code ├── android_main_activity.kt.ft ├── android_manifest.xml.ft ├── app_module.kt.ft ├── application.kt.ft ├── assets_contents.json.ft ├── collect_extension.kt.ft ├── colors_contents.json.ft ├── common_app.kt.ft ├── compose.gradle.kts.ft ├── compose_ios_main.kt.ft ├── compose_multiplatform.xml.ft ├── compose_screen.kt.ft ├── compose_view_model.kt.ft ├── compose_wasm_js_main.kt.ft ├── config.xcconfig.ft ├── constants.kt.ft ├── contentview.swift.ft ├── contract.kt.ft ├── desktop_main.kt.ft ├── empty_screen.kt.ft ├── gradle.properties.ft ├── gradle_wrapper.properties.ft ├── icons_contents.json.ft ├── idea_workspace.xml.ft ├── info.plist.ft ├── iosapp.swift.ft ├── libs.versions.toml.ft ├── loading_bar.kt.ft ├── mvi.kt.ft ├── mvi_delegate.kt.ft ├── navigation_graph.kt.ft ├── navigation_screens.kt.ft ├── podfile.ft ├── preview_contents.json.ft ├── project.pbxproj.ft ├── project_build.gradle.kts.ft ├── repository.kt.ft ├── repository_impl.kt.ft ├── service.kt.ft ├── settings.gradle.kts.ft └── values.xml.ft └── velocity_implicit.vm /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # Dependabot configuration: 2 | # https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/configuration-options-for-dependency-updates 3 | 4 | version: 2 5 | updates: 6 | # Maintain dependencies for Gradle dependencies 7 | - package-ecosystem: "gradle" 8 | directory: "/" 9 | schedule: 10 | interval: "daily" 11 | # Maintain dependencies for GitHub Actions 12 | - package-ecosystem: "github-actions" 13 | directory: "/" 14 | schedule: 15 | interval: "daily" 16 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | # GitHub Actions Workflow created for handling the release process based on the draft release prepared with the Build workflow. 2 | # Running the publishPlugin task requires all following secrets to be provided: PUBLISH_TOKEN, PRIVATE_KEY, PRIVATE_KEY_PASSWORD, CERTIFICATE_CHAIN. 3 | # See https://plugins.jetbrains.com/docs/intellij/plugin-signing.html for more information. 4 | 5 | name: Release 6 | on: 7 | release: 8 | types: [prereleased, released] 9 | 10 | jobs: 11 | 12 | # Prepare and publish the plugin to JetBrains Marketplace repository 13 | release: 14 | name: Publish Plugin 15 | runs-on: ubuntu-latest 16 | permissions: 17 | contents: write 18 | pull-requests: write 19 | steps: 20 | 21 | # Check out the current repository 22 | - name: Fetch Sources 23 | uses: actions/checkout@v4 24 | with: 25 | ref: ${{ github.event.release.tag_name }} 26 | 27 | # Set up Java environment for the next steps 28 | - name: Setup Java 29 | uses: actions/setup-java@v4 30 | with: 31 | distribution: zulu 32 | java-version: 17 33 | 34 | # Setup Gradle 35 | - name: Setup Gradle 36 | uses: gradle/actions/setup-gradle@v4 37 | with: 38 | gradle-home-cache-cleanup: true 39 | 40 | # Set environment variables 41 | - name: Export Properties 42 | id: properties 43 | shell: bash 44 | run: | 45 | CHANGELOG="$(cat << 'EOM' | sed -e 's/^[[:space:]]*$//g' -e '/./,$!d' 46 | ${{ github.event.release.body }} 47 | EOM 48 | )" 49 | 50 | echo "changelog<> $GITHUB_OUTPUT 51 | echo "$CHANGELOG" >> $GITHUB_OUTPUT 52 | echo "EOF" >> $GITHUB_OUTPUT 53 | 54 | # Update the Unreleased section with the current release note 55 | - name: Patch Changelog 56 | if: ${{ steps.properties.outputs.changelog != '' }} 57 | env: 58 | CHANGELOG: ${{ steps.properties.outputs.changelog }} 59 | run: | 60 | ./gradlew patchChangelog --release-note="$CHANGELOG" 61 | 62 | # Publish the plugin to JetBrains Marketplace 63 | - name: Publish Plugin 64 | env: 65 | PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }} 66 | CERTIFICATE_CHAIN: ${{ secrets.CERTIFICATE_CHAIN }} 67 | PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} 68 | PRIVATE_KEY_PASSWORD: ${{ secrets.PRIVATE_KEY_PASSWORD }} 69 | run: ./gradlew publishPlugin 70 | 71 | # Upload artifact as a release asset 72 | - name: Upload Release Asset 73 | env: 74 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 75 | run: gh release upload ${{ github.event.release.tag_name }} ./build/distributions/* 76 | 77 | # Create a pull request 78 | - name: Create Pull Request 79 | if: ${{ steps.properties.outputs.changelog != '' }} 80 | env: 81 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 82 | run: | 83 | VERSION="${{ github.event.release.tag_name }}" 84 | BRANCH="changelog-update-$VERSION" 85 | LABEL="release changelog" 86 | 87 | git config user.email "action@github.com" 88 | git config user.name "GitHub Action" 89 | 90 | git checkout -b $BRANCH 91 | git commit -am "Changelog update - $VERSION" 92 | git push --set-upstream origin $BRANCH 93 | 94 | gh label create "$LABEL" \ 95 | --description "Pull requests with release changelog update" \ 96 | --force \ 97 | || true 98 | 99 | gh pr create \ 100 | --title "Changelog update - \`$VERSION\`" \ 101 | --body "Current pull request contains patched \`CHANGELOG.md\` file for the \`$VERSION\` version." \ 102 | --label "$LABEL" \ 103 | --head $BRANCH 104 | -------------------------------------------------------------------------------- /.github/workflows/run-ui-tests.yml: -------------------------------------------------------------------------------- 1 | # GitHub Actions Workflow for launching UI tests on Linux, Windows, and Mac in the following steps: 2 | # - Prepare and launch IDE with your plugin and robot-server plugin, which is needed to interact with the UI. 3 | # - Wait for IDE to start. 4 | # - Run UI tests with a separate Gradle task. 5 | # 6 | # Please check https://github.com/JetBrains/intellij-ui-test-robot for information about UI tests with IntelliJ Platform. 7 | # 8 | # Workflow is triggered manually. 9 | 10 | name: Run UI Tests 11 | on: 12 | workflow_dispatch 13 | 14 | jobs: 15 | 16 | testUI: 17 | runs-on: ${{ matrix.os }} 18 | strategy: 19 | fail-fast: false 20 | matrix: 21 | include: 22 | - os: ubuntu-latest 23 | runIde: | 24 | export DISPLAY=:99.0 25 | Xvfb -ac :99 -screen 0 1920x1080x16 & 26 | gradle runIdeForUiTests & 27 | - os: windows-latest 28 | runIde: start gradlew.bat runIdeForUiTests 29 | - os: macos-latest 30 | runIde: ./gradlew runIdeForUiTests & 31 | 32 | steps: 33 | 34 | # Check out the current repository 35 | - name: Fetch Sources 36 | uses: actions/checkout@v4 37 | 38 | # Set up Java environment for the next steps 39 | - name: Setup Java 40 | uses: actions/setup-java@v4 41 | with: 42 | distribution: zulu 43 | java-version: 17 44 | 45 | # Setup Gradle 46 | - name: Setup Gradle 47 | uses: gradle/actions/setup-gradle@v4 48 | with: 49 | gradle-home-cache-cleanup: true 50 | 51 | # Run IDEA prepared for UI testing 52 | - name: Run IDE 53 | run: ${{ matrix.runIde }} 54 | 55 | # Wait for IDEA to be started 56 | - name: Health Check 57 | uses: jtalk/url-health-check-action@v4 58 | with: 59 | url: http://127.0.0.1:8082 60 | max-attempts: 15 61 | retry-delay: 30s 62 | 63 | # Run tests 64 | - name: Tests 65 | run: ./gradlew test 66 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | .idea 3 | .intellijPlatform 4 | .qodana 5 | build 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 18 | 19 | -------------------------------------------------------------------------------- /.run/Run Plugin.run.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 17 | 19 | true 20 | true 21 | false 22 | 23 | 24 | -------------------------------------------------------------------------------- /.run/Run Tests.run.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 17 | 19 | true 20 | true 21 | false 22 | true 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /.run/Run Verifications.run.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 17 | 19 | true 20 | true 21 | false 22 | false 23 | 24 | 25 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Quick Project Wizard Changelog 4 | 5 | ## [Unreleased] 6 | 7 | ## [0.0.6] 8 | 9 | ### Added 10 | 11 | - Bug fixes 12 | 13 | [Unreleased]: https://github.com/cnrture/QuickProjectWizard/compare/v0.0.6...HEAD 14 | [0.0.6]: https://github.com/cnrture/QuickProjectWizard/commits/v0.0.6 15 | [0.0.5]: https://github.com/cnrture/QuickProjectWizard/commits/v0.0.5 16 | [0.0.4]: https://github.com/cnrture/QuickProjectWizard/commits/v0.0.4 17 | [0.0.3]: https://github.com/cnrture/QuickProjectWizard/commits/v0.0.3 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # QuickProjectWizard 2 | 3 | ![Build](https://github.com/cnrture/QuickProjectWizard/workflows/Build/badge.svg) 4 | [![Version](https://img.shields.io/jetbrains/plugin/v/25221.svg)](https://plugins.jetbrains.com/plugin/25221) 5 | [![Downloads](https://img.shields.io/jetbrains/plugin/d/25221.svg)](https://plugins.jetbrains.com/plugin/25221) 6 | 7 | New Project 8 | 9 | 10 | #### This plugin simplifies the process of setting up a new Android project with all the necessary dependencies and configurations. 11 | - Popular libraries and frameworks 12 | - Compose, XML and Compose Multiplatform templates 13 | - data, di, domain, ui, and common packages 14 | 15 | 16 | ## Installation 17 | 18 | - Using the IDE built-in plugin system: 19 | 20 | Settings/Preferences > Plugins > Marketplace > Search for "QuickProjectWizard" > 21 | Install 22 | 23 | - Using JetBrains Marketplace: 24 | 25 | Go to [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/MARKETPLACE_ID) and install it by clicking the Install to ... button in case your IDE is running. 26 | 27 | You can also download the [latest release](https://plugins.jetbrains.com/plugin/MARKETPLACE_ID/versions) from JetBrains Marketplace and install it manually using 28 | Settings/Preferences > Plugins > ⚙️ > Install plugin from disk... 29 | 30 | - Manually: 31 | 32 | Download the [latest release](https://github.com/cnrture/QuickProjectWizard/releases/latest) and install it manually using 33 | Settings/Preferences > Plugins > ⚙️ > Install plugin from disk... 34 | 35 | # Usage 36 | 37 | ## 1. Create a new project 38 | 39 | ### Compose and XML 40 | New Project 41 | 42 | ### Compose Multiplatform 43 | New Project 44 | 45 | - Open your Android Studio. 46 | - Click New Project. 47 | - Select Quick Project Wizard and click Next. 48 |

49 | 50 | ## 2. Configure your project 51 | 52 | ### Compose and XML 53 | Quick Project Wizard Page 54 | 55 | ### Compose Multiplatform 56 | New Project 57 | 58 | - Select the libraries, dependencies and screens you want to include in your project (for example, Retrofit, Room, Hilt, etc.). 59 | - Customize versions and additional configurations. 60 | - After all selections have been made, click Finish. 61 |

62 | 63 | ## 3. Finalize and start coding 64 | 65 | ### Compose and XML 66 | Quick Project Wizard Page 67 | 68 | ### Compose Multiplatform 69 | New Project 70 | 71 | - Review the generated project structure to ensure all necessary dependencies and configurations are correctly applied. 72 | - Start coding your new project with all the essential tools and libraries already integrated. 73 | - Congratulations! You have successfully installed and configured the Quick Project Wizard plugin. Your new Android project is now set up with the latest and most essential dependencies, making your development process more efficient and streamlined. 74 | 75 | ## 4. Configure edit configurations (Just Compose Multiplatform) 76 | 77 | Quick Project Wizard Page 78 | 79 | - Open edit configurations. 80 | 81 | Quick Project Wizard Page 82 | 83 | - Write your composeApp path instead of "\${PROJECT_DIR}\$" (like : ~/Documents/GitHub/CMPApp/composeApp) 84 | 85 | Quick Project Wizard Page 86 | 87 | - Select Apple device from Execution Target. 88 | --- 89 | Plugin based on the [IntelliJ Platform Plugin Template][template]. 90 | 91 | [template]: https://github.com/JetBrains/intellij-platform-plugin-template 92 | [docs:plugin-description]: https://plugins.jetbrains.com/docs/intellij/plugin-user-experience.html#plugin-description-and-presentation 93 | -------------------------------------------------------------------------------- /build.gradle.kts: -------------------------------------------------------------------------------- 1 | import org.jetbrains.changelog.Changelog 2 | import org.jetbrains.changelog.markdownToHTML 3 | import org.jetbrains.intellij.platform.gradle.TestFrameworkType 4 | 5 | plugins { 6 | id("java") // Java support 7 | alias(libs.plugins.kotlin) // Kotlin support 8 | alias(libs.plugins.intelliJPlatform) // IntelliJ Platform Gradle Plugin 9 | alias(libs.plugins.changelog) // Gradle Changelog Plugin 10 | alias(libs.plugins.qodana) // Gradle Qodana Plugin 11 | alias(libs.plugins.kover) // Gradle Kover Plugin 12 | alias(libs.plugins.kotlinxSerialization) // Kotlinx Serialization Plugin 13 | } 14 | 15 | group = providers.gradleProperty("pluginGroup").get() 16 | version = providers.gradleProperty("pluginVersion").get() 17 | 18 | // Set the JVM language level used to build the project. 19 | kotlin { 20 | jvmToolchain(17) 21 | } 22 | 23 | // Configure project's dependencies 24 | repositories { 25 | mavenCentral() 26 | 27 | // IntelliJ Platform Gradle Plugin Repositories Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-repositories-extension.html 28 | intellijPlatform { 29 | defaultRepositories() 30 | } 31 | } 32 | 33 | // Dependencies are managed with Gradle version catalog - read more: https://docs.gradle.org/current/userguide/platforms.html#sub:version-catalog 34 | dependencies { 35 | testImplementation(libs.junit) 36 | implementation(libs.ktor.core) 37 | implementation(libs.ktor.cio) 38 | implementation(libs.kotlinx.serialization) 39 | implementation(libs.freemarker) 40 | 41 | // IntelliJ Platform Gradle Plugin Dependencies Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html 42 | intellijPlatform { 43 | create(providers.gradleProperty("platformType"), providers.gradleProperty("platformVersion")) 44 | 45 | // Plugin Dependencies. Uses `platformBundledPlugins` property from the gradle.properties file for bundled IntelliJ Platform plugins. 46 | bundledPlugins(providers.gradleProperty("platformBundledPlugins").map { it.split(',') }) 47 | 48 | // Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file for plugin from JetBrains Marketplace. 49 | plugins(providers.gradleProperty("platformPlugins").map { it.split(',') }) 50 | 51 | instrumentationTools() 52 | pluginVerifier() 53 | zipSigner() 54 | testFramework(TestFrameworkType.Platform) 55 | } 56 | } 57 | 58 | // Configure IntelliJ Platform Gradle Plugin - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-extension.html 59 | intellijPlatform { 60 | pluginConfiguration { 61 | version = providers.gradleProperty("pluginVersion") 62 | 63 | // Extract the section from README.md and provide for the plugin's manifest 64 | description = providers.fileContents(layout.projectDirectory.file("README.md")).asText.map { 65 | val start = "" 66 | val end = "" 67 | 68 | with(it.lines()) { 69 | if (!containsAll(listOf(start, end))) { 70 | throw GradleException("Plugin description section not found in README.md:\n$start ... $end") 71 | } 72 | subList(indexOf(start) + 1, indexOf(end)).joinToString("\n").let(::markdownToHTML) 73 | } 74 | } 75 | 76 | val changelog = project.changelog // local variable for configuration cache compatibility 77 | // Get the latest available change notes from the changelog file 78 | changeNotes = providers.gradleProperty("pluginVersion").map { pluginVersion -> 79 | with(changelog) { 80 | renderItem( 81 | (getOrNull(pluginVersion) ?: getUnreleased()) 82 | .withHeader(false) 83 | .withEmptySections(false), 84 | Changelog.OutputType.HTML, 85 | ) 86 | } 87 | } 88 | 89 | ideaVersion { 90 | sinceBuild = providers.gradleProperty("pluginSinceBuild") 91 | untilBuild = providers.gradleProperty("pluginUntilBuild") 92 | } 93 | } 94 | 95 | signing { 96 | certificateChain = providers.environmentVariable("CERTIFICATE_CHAIN") 97 | privateKey = providers.environmentVariable("PRIVATE_KEY") 98 | password = providers.environmentVariable("PRIVATE_KEY_PASSWORD") 99 | } 100 | 101 | publishing { 102 | token = providers.environmentVariable("PUBLISH_TOKEN") 103 | // The pluginVersion is based on the SemVer (https://semver.org) and supports pre-release labels, like 2.1.7-alpha.3 104 | // Specify pre-release label to publish the plugin in a custom Release Channel automatically. Read more: 105 | // https://plugins.jetbrains.com/docs/intellij/deployment.html#specifying-a-release-channel 106 | channels = providers.gradleProperty("pluginVersion").map { listOf(it.substringAfter('-', "").substringBefore('.').ifEmpty { "default" }) } 107 | } 108 | 109 | pluginVerification { 110 | ides { 111 | recommended() 112 | } 113 | } 114 | } 115 | 116 | // Configure Gradle Changelog Plugin - read more: https://github.com/JetBrains/gradle-changelog-plugin 117 | changelog { 118 | groups.empty() 119 | repositoryUrl = providers.gradleProperty("pluginRepositoryUrl") 120 | } 121 | 122 | // Configure Gradle Kover Plugin - read more: https://github.com/Kotlin/kotlinx-kover#configuration 123 | kover { 124 | reports { 125 | total { 126 | xml { 127 | onCheck = true 128 | } 129 | } 130 | } 131 | } 132 | 133 | tasks { 134 | wrapper { 135 | gradleVersion = providers.gradleProperty("gradleVersion").get() 136 | } 137 | 138 | publishPlugin { 139 | dependsOn(patchChangelog) 140 | } 141 | } 142 | 143 | intellijPlatformTesting { 144 | runIde { 145 | register("runIdeForUiTests") { 146 | task { 147 | jvmArgumentProviders += CommandLineArgumentProvider { 148 | listOf( 149 | "-Drobot-server.port=8082", 150 | "-Dide.mac.message.dialogs.as.sheets=false", 151 | "-Djb.privacy.policy.text=", 152 | "-Djb.consents.confirmation.enabled=false", 153 | ) 154 | } 155 | } 156 | 157 | plugins { 158 | robotServerPlugin() 159 | } 160 | } 161 | } 162 | } 163 | -------------------------------------------------------------------------------- /files/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnrture/QuickProjectWizard/a92cc4c928037d084204f239d46f2879a558366a/files/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # IntelliJ Platform Artifacts Repositories -> https://plugins.jetbrains.com/docs/intellij/intellij-artifacts.html 2 | 3 | pluginGroup = com.github.cnrture.quickprojectwizard 4 | pluginName = QuickProjectWizard 5 | pluginRepositoryUrl = https://github.com/cnrture/QuickProjectWizard 6 | # SemVer format -> https://semver.org 7 | pluginVersion = 0.0.6 8 | 9 | # Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html 10 | pluginSinceBuild = 241 11 | pluginUntilBuild = 243.* 12 | 13 | # IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension 14 | platformType = AI 15 | platformVersion = 2024.1.2.13 16 | 17 | # Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html 18 | # Example: platformPlugins = com.jetbrains.php:203.4449.22, org.intellij.scala:2023.3.27@EAP 19 | platformPlugins = 20 | # Example: platformBundledPlugins = com.intellij.java 21 | platformBundledPlugins = org.jetbrains.android, org.jetbrains.kotlin, com.intellij.java 22 | 23 | # Gradle Releases -> https://github.com/gradle/gradle/releases 24 | gradleVersion = 8.9 25 | 26 | # Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib 27 | kotlin.stdlib.default.dependency = false 28 | 29 | # Enable Gradle Configuration Cache -> https://docs.gradle.org/current/userguide/configuration_cache.html 30 | org.gradle.configuration-cache = true 31 | 32 | # Enable Gradle Build Cache -> https://docs.gradle.org/current/userguide/build_cache.html 33 | org.gradle.caching = true 34 | -------------------------------------------------------------------------------- /gradle/libs.versions.toml: -------------------------------------------------------------------------------- 1 | [versions] 2 | # libraries 3 | junit = "4.13.2" 4 | 5 | # plugins 6 | changelog = "2.2.1" 7 | kotlin = "2.1.21" 8 | intelliJPlatform = "2.6.0" 9 | kover = "0.9.1" 10 | qodana = "2025.1.1" 11 | ktorVersion = "3.1.3" 12 | kotlinxSerialization = "1.8.1" 13 | freeMarker = "2.3.34" 14 | 15 | [libraries] 16 | junit = { group = "junit", name = "junit", version.ref = "junit" } 17 | ktor-core = { group = "io.ktor", name = "ktor-client-core", version.ref = "ktorVersion" } 18 | ktor-cio = { group = "io.ktor", name = "ktor-client-cio", version.ref = "ktorVersion" } 19 | kotlinx-serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerialization" } 20 | freemarker = { group = "org.freemarker", name = "freemarker", version.ref = "freeMarker" } 21 | 22 | [plugins] 23 | changelog = { id = "org.jetbrains.changelog", version.ref = "changelog" } 24 | intelliJPlatform = { id = "org.jetbrains.intellij.platform", version.ref = "intelliJPlatform" } 25 | kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } 26 | kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" } 27 | qodana = { id = "org.jetbrains.qodana", version.ref = "qodana" } 28 | kotlinxSerialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } 29 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnrture/QuickProjectWizard/a92cc4c928037d084204f239d46f2879a558366a/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | @rem SPDX-License-Identifier: Apache-2.0 17 | @rem 18 | 19 | @if "%DEBUG%"=="" @echo off 20 | @rem ########################################################################## 21 | @rem 22 | @rem Gradle startup script for Windows 23 | @rem 24 | @rem ########################################################################## 25 | 26 | @rem Set local scope for the variables with windows NT shell 27 | if "%OS%"=="Windows_NT" setlocal 28 | 29 | set DIRNAME=%~dp0 30 | if "%DIRNAME%"=="" set DIRNAME=. 31 | @rem This is normally unused 32 | set APP_BASE_NAME=%~n0 33 | set APP_HOME=%DIRNAME% 34 | 35 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 36 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 37 | 38 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 39 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 40 | 41 | @rem Find java.exe 42 | if defined JAVA_HOME goto findJavaFromJavaHome 43 | 44 | set JAVA_EXE=java.exe 45 | %JAVA_EXE% -version >NUL 2>&1 46 | if %ERRORLEVEL% equ 0 goto execute 47 | 48 | echo. 1>&2 49 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 50 | echo. 1>&2 51 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 52 | echo location of your Java installation. 1>&2 53 | 54 | goto fail 55 | 56 | :findJavaFromJavaHome 57 | set JAVA_HOME=%JAVA_HOME:"=% 58 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 59 | 60 | if exist "%JAVA_EXE%" goto execute 61 | 62 | echo. 1>&2 63 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 64 | echo. 1>&2 65 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 66 | echo location of your Java installation. 1>&2 67 | 68 | goto fail 69 | 70 | :execute 71 | @rem Setup the command line 72 | 73 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 74 | 75 | 76 | @rem Execute Gradle 77 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 78 | 79 | :end 80 | @rem End local scope for the variables with windows NT shell 81 | if %ERRORLEVEL% equ 0 goto mainEnd 82 | 83 | :fail 84 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 85 | rem the _cmd.exe /c_ return code! 86 | set EXIT_CODE=%ERRORLEVEL% 87 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 88 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 89 | exit /b %EXIT_CODE% 90 | 91 | :mainEnd 92 | if "%OS%"=="Windows_NT" endlocal 93 | 94 | :omega 95 | -------------------------------------------------------------------------------- /images/cmp_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnrture/QuickProjectWizard/a92cc4c928037d084204f239d46f2879a558366a/images/cmp_template.png -------------------------------------------------------------------------------- /images/compose_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnrture/QuickProjectWizard/a92cc4c928037d084204f239d46f2879a558366a/images/compose_template.png -------------------------------------------------------------------------------- /images/desktopApp_configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnrture/QuickProjectWizard/a92cc4c928037d084204f239d46f2879a558366a/images/desktopApp_configuration.png -------------------------------------------------------------------------------- /images/details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnrture/QuickProjectWizard/a92cc4c928037d084204f239d46f2879a558366a/images/details.png -------------------------------------------------------------------------------- /images/details_cmp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnrture/QuickProjectWizard/a92cc4c928037d084204f239d46f2879a558366a/images/details_cmp.png -------------------------------------------------------------------------------- /images/edit_configurations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnrture/QuickProjectWizard/a92cc4c928037d084204f239d46f2879a558366a/images/edit_configurations.png -------------------------------------------------------------------------------- /images/final.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnrture/QuickProjectWizard/a92cc4c928037d084204f239d46f2879a558366a/images/final.png -------------------------------------------------------------------------------- /images/final_cmp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnrture/QuickProjectWizard/a92cc4c928037d084204f239d46f2879a558366a/images/final_cmp.png -------------------------------------------------------------------------------- /images/iosApp_configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnrture/QuickProjectWizard/a92cc4c928037d084204f239d46f2879a558366a/images/iosApp_configuration.png -------------------------------------------------------------------------------- /images/kmp_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnrture/QuickProjectWizard/a92cc4c928037d084204f239d46f2879a558366a/images/kmp_template.png -------------------------------------------------------------------------------- /images/new_project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnrture/QuickProjectWizard/a92cc4c928037d084204f239d46f2879a558366a/images/new_project.png -------------------------------------------------------------------------------- /images/new_project_cmp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnrture/QuickProjectWizard/a92cc4c928037d084204f239d46f2879a558366a/images/new_project_cmp.png -------------------------------------------------------------------------------- /images/xml_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cnrture/QuickProjectWizard/a92cc4c928037d084204f239d46f2879a558366a/images/xml_template.png -------------------------------------------------------------------------------- /qodana.yml: -------------------------------------------------------------------------------- 1 | # Qodana configuration: 2 | # https://www.jetbrains.com/help/qodana/qodana-yaml.html 3 | 4 | version: 1.0 5 | linter: jetbrains/qodana-jvm-community:latest 6 | projectJDK: "17" 7 | profile: 8 | name: qodana.recommended 9 | exclude: 10 | - name: All 11 | paths: 12 | - .qodana 13 | -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" 3 | } 4 | 5 | rootProject.name = "QuickProjectWizard" 6 | -------------------------------------------------------------------------------- /src/main/kotlin/com/github/cnrture/quickprojectwizard/AndroidStudioTemplateProvider.kt: -------------------------------------------------------------------------------- 1 | package com.github.cnrture.quickprojectwizard 2 | 3 | import com.android.tools.idea.wizard.template.Template 4 | import com.android.tools.idea.wizard.template.WizardTemplateProvider 5 | 6 | class AndroidStudioTemplateProvider : WizardTemplateProvider() { 7 | override fun getTemplates(): List