hhru / android-multimodule-plugin

MIT License
157 stars 20 forks source link

Unknown parameter type при попытке добавить файлы #25

Closed dend90 closed 3 years ago

dend90 commented 3 years ago

Здравствуйте. Решил перенести свои шаблоны используя ваш плагин.

optionalParams: 
  revision: 1
  category: fragment
  constraints:
    - kotlin
  screens:
    - menu_entry
  minApi: 7
  minBuildApi: 8

widgets:
  - stringParameter:
      id: moduleName
      name: Module Name
      help: The name of the module to create
      constraints:
        - class 
        - nonempty 
        - unique
      default: Blank

  - booleanParameter:
      id: includeInteractor
      name: Create Interactor
      help: Generate a interactor for the module
      default: true

  - booleanParameter:
      id: includeRouter
      name: Create Router
      help: Generate a router for the module
      default: true

  - booleanParameter:
      id: includeFactory
      name: Include fragment factory method
      help: Generate static fragment factory method for easy instantiation
      default: true

  - booleanParameter:
      id: includeDi
      name: Create DI classes
      help: Generate classes for DI
      default: true

  - booleanParameter:
      id: includeLayout
      name: Create Fragment layout file
      help: Generate layout xml file for module fragment class
      default: false

recipe:
  - mkdirs:
      - ${srcOut}:
        - predicate:
            validIf: ${includeDi}
            commands: 
              - di
        - predicate:
            validIf: ${includeInteractor}
            commands:
              - interactor
        - predicate:
            validIf: ${includeRouter}
            commands:
              - router  
  - predicate:
    validIf: ${includeInteractor}
    commands:
      - instantiateAndOpen:
          from: root/src/app_package/interactor/BlankInteractor.kt.ftl
          to: ${srcOut}/${moduleName?lower_case}/interactor/${moduleName}Interactor.kt
      - instantiateAndOpen:
          from: root/src/app_package/interactor/BlankInteractorImpl.kt.ftl
          to: ${srcOut}/${moduleName?lower_case}/interactor/${moduleName}InteractorImpl.kt
  - predicate:
    validIf: ${includeDi}
    commands:
      - instantiateAndOpen:
          from: root/src/app_package/di/BlankComponent.kt.ftl
          to: ${srcOut}/${moduleName?lower_case}/di/${moduleName}Component.kt
      - instantiateAndOpen:
          from: root/src/app_package/di/BlankModule.kt.ftl
          to: ${srcOut}/${moduleName?lower_case}/interactor/${moduleName}Module.kt
  - predicate:
      validIf: ${includeRouter}
      commands:
        - instantiateAndOpen:
            from: root/src/app_package/router/BlankRouter.kt.ftl
            to: ${srcOut}/${moduleName?lower_case}/router/${moduleName}Router.kt
        - instantiateAndOpen:
           from: root/src/app_package/router/BlankRouterImpl.kt.ftl
          to: ${srcOut}/${moduleName?lower_case}/router/${moduleName}RouterImpl.kt
  - predicate:
      validIf: ${includeLayout}
      commands:
         - instantiateAndOpen:
              from: root/res/layout/fragment_blank.xml.ftl
              to: ${resOut}/layout/fragment_${moduleName?lower_case}.xml
  - instantiateAndOpen:
      from: root/src/app_package/BlankFragment.kt.ftl
      to: ${srcOut}/${moduleName?lower_case}/${moduleName}Fragment.kt
  - instantiateAndOpen:
      from: root/src/app_package/BlankPresnter.kt.ftl
      to: ${srcOut}/${moduleName?lower_case}/${moduleName}Presenter.kt
  - instantiateAndOpen:
      from: root/src/app_package/BlankView.kt.ftl
      to: ${srcOut}/${moduleName?lower_case}/${moduleName}View.kt

При попытке добавить файлы получаю ошибку.

java.lang.IllegalArgumentException: Unknown parameter type
    at ru.hh.plugins.geminio.model.yaml.GeminioRecipeReader.toRecipeCommand(GeminioRecipeReader.kt:187)
    at ru.hh.plugins.geminio.model.yaml.GeminioRecipeReader.extractRecipeCommands(GeminioRecipeReader.kt:173)
    at ru.hh.plugins.geminio.model.yaml.GeminioRecipeReader.parse(GeminioRecipeReader.kt:74)
    at ru.hh.plugins.geminio.actions.ExecuteGeminioTemplateAction.actionPerformed(ExecuteGeminioTemplateAction.kt:74)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:280)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.lambda$actionPerformed$0(ActionMenuItem.java:296)
    at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:281)
    at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:77)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:285)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$fireActionPerformed$0(ActionMenuItem.java:112)
    at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:94)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:112)
    at com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:517)
    at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:36)
    at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:539)
    at java.awt.Component.processMouseEvent(Component.java:6550)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3325)
    at java.awt.Component.processEvent(Component.java:6315)
    at java.awt.Container.processEvent(Container.java:2239)
    at java.awt.Component.dispatchEventImpl(Component.java:4899)
    at java.awt.Container.dispatchEventImpl(Container.java:2297)
    at java.awt.Component.dispatchEvent(Component.java:4721)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
    at java.awt.Container.dispatchEventImpl(Container.java:2283)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4721)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:766)
    at java.awt.EventQueue.access$500(EventQueue.java:98)
    at java.awt.EventQueue$3.run(EventQueue.java:715)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
    at java.awt.EventQueue$4.run(EventQueue.java:739)
    at java.awt.EventQueue$4.run(EventQueue.java:737)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:736)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:974)
    at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:912)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:844)
    at com.intellij.ide.IdeEventQueue.lambda$null$8(IdeEventQueue.java:449)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:741)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:448)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:502)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 

При этом шаблоны нормально работали до Android Studio 4.1. Возможно проблема в файле recipe.yaml. Если это так то прошу указать на мою ошибку. Заранее спасибо.

PStrelchenko commented 3 years ago

Привет!

1 - укажите, пожалуйста, свою версию плагина; похоже, что она не последняя. Нужна минимум 1.1.0, её дистрибутив лежит вот тут

2 - модификатор ?lower_case в Geminio не поддерживается, вот тут можно глянуть список доступных функций над строковыми выражениями

3 - если версия плагина не последняя, то команда mkDirs тоже может не сработать =/

PStrelchenko commented 3 years ago

Закрываю за отсутствием активности.