Skip to content

Commit

Permalink
Mob 39328 support android studio koala (#111)
Browse files Browse the repository at this point in the history
* [MOB-39328] Переносит изменения из #87 с небольшими доработками -- осуществляет переход на новую версию UI DSL в Geminio

* [MOB-39328] Поднятие версии Geminio и значения pluginSinceBuild для Geminio

* [MOB-39328] Переносит изменения из #88 с небольшими доработками -- осуществляет переход на новый UI DSL в Garcon

* [MOB-39328] Поднимает версию Garcon и указывает новую версию pluginSinceBuild

* [MOB-39328] Переносит изменения из #88 с небольшими доработками -- осуществляет переход на новый UI DSL в Garcon

* [MOB-39328] Переносит изменения из #89 с небольшими доработками -- осуществляет переход на новый UI DSL в Carnival

* [MOB-39328] Поднимает версию Carnival и версию pluginSinceBuild

* [MOB-39328] Меняем версию компилятора для сборки плагинов в gradle.properties и скриптах Github Actions

* [MOB-39328] Коммитит забытые файлы

* [MOB-39328] Заменяет URL на скачивание нужной версии Android Studio в скриптах Github Actions

* [MOB-39328] Исправляет замечания detekt

* [MOB-39328] Переносит изменения из #95 с небольшими доработками -- исправляет замечания IDE по ActionUpdateThread

* [MOB-39328] Переносит изменения из #96 с небольшими доработками -- исправляет компиляцию тестов Geminio

* [MOB-39328] Исправляет замечания detekt

* [MOB-39328] Переносит изменения из #110 с небольшими доработками -- позволяет менять sourceSet и название папки с кодом для поддержки создания модулей в KMP-проектах

* [MOB-39328] Исправляет множество IDE-замечаний по всему проекту

* [MOB-39328] Добавляет комментариев в changelog каждого плагина
  • Loading branch information
PStrelchenko authored Jun 17, 2024
1 parent 02bf395 commit 8f4e52c
Show file tree
Hide file tree
Showing 73 changed files with 920 additions and 800 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ on: [pull_request, workflow_call]

env:
# Link for Linux zip file from https://developer.android.com/studio/archive
ANDROID_STUDIO_URL: https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2023.3.1.18/android-studio-2023.3.1.18-linux.tar.gz
COMPILER_VERSION: 233.14808.21
ANDROID_STUDIO_URL: https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2024.1.1.11/android-studio-2024.1.1.11-linux.tar.gz
COMPILER_VERSION: 241.15989.15

jobs:
build:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ on:

env:
# Link for Linux zip file from https://developer.android.com/studio/archive
ANDROID_STUDIO_URL: https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2023.3.1.18/android-studio-2023.3.1.18-linux.tar.gz
COMPILER_VERSION: 233.14808.21
ANDROID_STUDIO_URL: https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2024.1.1.11/android-studio-2024.1.1.11-linux.tar.gz
COMPILER_VERSION: 241.15989.15

jobs:
build:
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ systemProp.kotlinVersion=1.9.21
systemProp.detektVersion=1.23.4

systemProp.androidStudioPath=/Applications/Android Studio.app/Contents
systemProp.androidStudioCompilerVersion=233.14808.21
systemProp.androidStudioCompilerVersion=241.15989.15
systemProp.androidStudioPluginsNames=org.jetbrains.android,org.jetbrains.kotlin,com.intellij.java,org.intellij.groovy,Git4Idea,org.intellij.intelliLang

# Opt-out flag for bundling Kotlin standard library -> https://plugins.jetbrains.com/docs/intellij/kotlin.html#kotlin-standard-library
Expand Down
19 changes: 19 additions & 0 deletions plugins/hh-carnival/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,24 @@
# Carnival

## [1.9.0]

### Added

- Support for Android Studio Koala | 2024.1.1

### Changed

- New versions of Carnival could be installed **only since Android Studio Koala**.
Previous versions support **was dropped**.
- Changed Carnival setup dialog UI internal implementation (thanks, @illarionov !) --
from https://github.com/hhru/android-multimodule-plugin/pull/89 .

### Fixed

- Fixes several IDE-warnings about project level services.
- Fixes several IDE-warnings about AnAction (thanks, @illarionov !) --
from https://github.com/hhru/android-multimodule-plugin/pull/95 .

## [1.8.0]
### Added
- Support for Android Studio Jellyfish | 2023.3.1
Expand Down
5 changes: 2 additions & 3 deletions plugins/hh-carnival/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
pluginVersion=1.8.0
pluginVersion=1.9.0

pluginGroup=ru.hh.plugins
pluginName=hh-carnival

pluginSinceBuild=212.5712.43

pluginSinceBuild=241.15989.15
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import com.intellij.openapi.components.Service
import com.intellij.openapi.components.service
import com.intellij.openapi.project.Project

@Service
@Service(Service.Level.PROJECT)
class GenerateFragmentViewModelTextFactory {

companion object {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ru.hh.android.plugin.actions.jira.merge_develop_to_portfolio

import com.intellij.openapi.actionSystem.ActionUpdateThread
import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnActionEvent
import ru.hh.android.plugin.extensions.checkInsidePortfolioBranch
Expand All @@ -9,6 +10,8 @@ import ru.hh.android.plugin.services.jira.JiraRestClientService

class JiraMergeDevelopToPortfolioAction : AnAction() {

override fun getActionUpdateThread(): ActionUpdateThread = ActionUpdateThread.EDT

override fun update(e: AnActionEvent) {
super.update(e)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package ru.hh.android.plugin.actions.modules.copy_module

import com.intellij.openapi.actionSystem.ActionUpdateThread
import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.application.runWriteAction
import com.intellij.openapi.command.executeCommand
import com.intellij.psi.PsiDirectory
import com.intellij.psi.PsiPlainTextFile
import org.jetbrains.kotlin.idea.util.application.runWriteAction
import ru.hh.android.plugin.CodeGeneratorConstants.ANDROID_MANIFEST_XML_FILE_NAME
import ru.hh.android.plugin.CodeGeneratorConstants.JAVA_SOURCE_FOLDER_NAME
import ru.hh.android.plugin.CodeGeneratorConstants.KOTLIN_SOURCE_FOLDER_NAME
Expand Down Expand Up @@ -45,6 +46,8 @@ import kotlin.system.measureTimeMillis
*/
class CopyAndroidModuleAction : AnAction() {

override fun getActionUpdateThread(): ActionUpdateThread = ActionUpdateThread.BGT

override fun update(e: AnActionEvent) {
super.update(e)

Expand Down Expand Up @@ -105,8 +108,6 @@ class CopyAndroidModuleAction : AnAction() {
}

private fun copyModule(params: NewModuleParams) {
val project = params.project

val moduleParentPsiDirectory = params.moduleToCopy.moduleParentPsiDirectory ?: return
val newModuleRootPsiDirectory = moduleParentPsiDirectory.createSubdirectory(params.newModuleName)
HHLogger.d("Parent directory for new module created [withName: ${params.newModuleName}]")
Expand Down Expand Up @@ -229,7 +230,6 @@ class CopyAndroidModuleAction : AnAction() {
)
}

val project = moduleToCopyMainPackagePsiDirectory.project
HHLogger.d("Success copying [time: $copyMainPackageTime ms]")
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,20 @@ package ru.hh.android.plugin.actions.modules.copy_module.view

import com.intellij.openapi.module.Module
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.ComboBox
import com.intellij.openapi.ui.DialogWrapper
import com.intellij.ui.CollectionComboBoxModel
import com.intellij.ui.layout.CCFlags
import com.intellij.ui.layout.panel
import com.intellij.ui.dsl.builder.COLUMNS_LARGE
import com.intellij.ui.dsl.builder.Cell
import com.intellij.ui.dsl.builder.LabelPosition
import com.intellij.ui.dsl.builder.columns
import com.intellij.ui.dsl.builder.panel
import ru.hh.android.plugin.PluginConstants.DEFAULT_GH_MODULE_PREFIX
import ru.hh.android.plugin.core.framework_ui.view.ModuleNamePanel
import ru.hh.android.plugin.extensions.toPackageNameFromModuleName
import ru.hh.android.plugin.utils.showErrorMessage
import ru.hh.plugins.extensions.openapi.getAndroidApplicationsModules
import java.awt.BorderLayout
import javax.swing.JComboBox
import javax.swing.JComponent
import javax.swing.JPanel

Expand All @@ -29,43 +32,33 @@ class CopyAndroidModuleActionDialog(
packageNameSectionLabel = "New module package name",
defaultModuleName = "$DEFAULT_GH_MODULE_PREFIX$moduleName",
defaultPackageName = "$DEFAULT_GH_MODULE_PREFIX$moduleName".toPackageNameFromModuleName(),
dialogDisposable = disposable,
onErrorAction = { hasError ->
this.isOKActionEnabled = hasError.not()
}
)

private var appModuleComboBox: JComboBox<Module>? = null
private var appModuleComboBox: Cell<ComboBox<Module>>? = null

init {
init()
title = "Copy module"
title = "Copy Module"
}

override fun createCenterPanel(): JComponent? = JPanel(BorderLayout())
override fun createCenterPanel(): JComponent = JPanel(BorderLayout())

override fun createNorthPanel(): JComponent? {
override fun createNorthPanel(): JComponent {
return panel {
row {
label(
text = "Copy selected module \"${moduleName}\" into...",
bold = true
)
label(text = "Copy selected module \"${moduleName}\" into...").bold()
}

moduleNamePanel.create(this)

titledRow("Application module") {
row {
cell {
val cellBuilder = comboBox(
model = appModuleComboBoxModel,
getter = { appModuleComboBoxModel.selected },
setter = { /* do nothing */ },
renderer = null
).also { appModuleComboBox = it.component }
cellBuilder.component(CCFlags.growX)
}
}
row {
appModuleComboBox = comboBox(model = appModuleComboBoxModel)
.columns(COLUMNS_LARGE)
.label("Application module:", LabelPosition.TOP)
}
}
}
Expand All @@ -74,15 +67,15 @@ class CopyAndroidModuleActionDialog(
if (appModuleComboBoxModel.selected != null) {
super.doOKAction()
} else {
appModuleComboBox?.let { comboBox ->
appModuleComboBox?.component?.let { comboBox ->
showErrorMessage(project, "Application module not selected!", comboBox)
}
}
}

fun getModuleName(): String = moduleNamePanel.getModuleName()
fun getModuleName(): String = moduleNamePanel.moduleName

fun getPackageName(): String = moduleNamePanel.getPackageName()
fun getPackageName(): String = moduleNamePanel.packageName

fun getSelectedModule(): Module = appModuleComboBoxModel.selected!!
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package ru.hh.android.plugin.config

import com.android.tools.idea.util.toIoFile
import com.intellij.openapi.components.PersistentStateComponent
import com.intellij.openapi.components.Service
import com.intellij.openapi.components.State
import com.intellij.openapi.components.service
import com.intellij.openapi.project.Project
Expand All @@ -12,12 +13,13 @@ import ru.hh.android.plugin.PluginConstants
import ru.hh.android.plugin.core.model.jira.JiraDevelopmentTeam
import ru.hh.plugins.extensions.EMPTY

@Service(Service.Level.PROJECT)
@State(name = "ru.hh.android.plugin.config.PluginConfig")
class PluginConfig : PersistentStateComponent<PluginConfig> {
class CarnivalPluginConfig : PersistentStateComponent<CarnivalPluginConfig> {

companion object {
fun getInstance(project: Project): PluginConfig {
return project.service<PluginConfig>().apply {
fun getInstance(project: Project): CarnivalPluginConfig {
return project.service<CarnivalPluginConfig>().apply {
if (project.isDefault.not() && pluginFolderDirPath.isBlank()) {
val projectPath = project.guessProjectDir()!!.toIoFile().absolutePath
pluginFolderDirPath = "$projectPath/${PluginConstants.DEFAULT_PLUGIN_CONFIG_FOLDER_NAME}"
Expand All @@ -35,11 +37,11 @@ class PluginConfig : PersistentStateComponent<PluginConfig> {
@Attribute
var jiraDevelopmentTeam: JiraDevelopmentTeam = JiraDevelopmentTeam.MOBILE_CORE

override fun getState(): PluginConfig? {
override fun getState(): CarnivalPluginConfig {
return this
}

override fun loadState(state: PluginConfig) {
override fun loadState(state: CarnivalPluginConfig) {
XmlSerializerUtil.copyBean(state, this)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package ru.hh.android.plugin.config

import com.intellij.util.text.CharArrayCharSequence
import ru.hh.android.plugin.core.model.jira.JiraDevelopmentTeam
import ru.hh.android.plugin.core.model.jira.JiraSettings

internal class CarnivalSettingsFormState(
var pluginFolderDirPath: String = "",
var enableDebugMode: Boolean = false,
var jiraHostname: String = "",
var jiraUsername: String = "",
var jiraPassword: ClearableCharArray,
var jiraDevelopmentTeam: JiraDevelopmentTeam = JiraDevelopmentTeam.MOBILE_CORE
) {

constructor(
pluginConfig: CarnivalPluginConfig,
jiraSettings: JiraSettings
) : this(
pluginFolderDirPath = pluginConfig.pluginFolderDirPath,
enableDebugMode = pluginConfig.isDebugEnabled,
jiraHostname = jiraSettings.hostName,
jiraUsername = jiraSettings.username,
jiraPassword = ClearableCharArray(jiraSettings.password),
jiraDevelopmentTeam = pluginConfig.jiraDevelopmentTeam
)

class ClearableCharArray(vararg chars: Char) : CharArrayCharSequence(*chars) {

constructor(chars: CharSequence) : this(
*CharArray(chars.length, chars::get)
)

fun clear() {
myChars.fill('\u0000', myStart, myEnd)
}

fun charsNewCopy(): CharArray = myChars.copyOf()

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.intellij.credentialStore.Credentials
import com.intellij.credentialStore.generateServiceName
import com.intellij.ide.passwordSafe.PasswordSafe
import com.intellij.openapi.components.PersistentStateComponent
import com.intellij.openapi.components.Service
import com.intellij.openapi.components.State
import com.intellij.openapi.components.service
import com.intellij.openapi.project.Project
Expand All @@ -15,6 +16,7 @@ import java.io.File
import java.io.FileReader
import java.io.FileWriter

@Service(Service.Level.PROJECT)
@State(name = "ru.hh.android.plugins.antiroutine.JiraSettingsConfig")
class JiraSettingsConfig : PersistentStateComponent<Credentials> {

Expand Down
Loading

0 comments on commit 8f4e52c

Please sign in to comment.