feature incremental api generator, small fix string generator #26
Open
sergey.vlasenko
wants to merge 4 commits from
incremental_api_generator into feature/MB-43110_incremental_api_generator
pull from: incremental_api_generator
merge into: TouchInstinct:feature/MB-43110_incremental_api_generator
TouchInstinct:master
TouchInstinct:feature/adhoc_apiKey
TouchInstinct:detached4
TouchInstinct:detached5
TouchInstinct:detached6
TouchInstinct:feature/REGRO_multimodules
TouchInstinct:gradle8_to_java17
TouchInstinct:MB-43443_with_fixed_naumen
TouchInstinct:fix/MIR-8222
TouchInstinct:add_nexus_links
TouchInstinct:feature/MIR-6740-nexus
TouchInstinct:dev-mir-stash
TouchInstinct:ubrir_api_module
TouchInstinct:feature/java_17_support
TouchInstinct:fix_build_issues
TouchInstinct:feature/incremental_api_generator
TouchInstinct:feature/MB-43110_incremental_api_generator
TouchInstinct:feature/MB-42563
TouchInstinct:detached
TouchInstinct:detached2
TouchInstinct:detached3
TouchInstinct:detekt_analysis
TouchInstinct:feature/gradle_8_support
TouchInstinct:gradle_8
TouchInstinct:feature/MIR-6740
TouchInstinct:lic-dev
TouchInstinct:feature/update_static
TouchInstinct:mir-dev
TouchInstinct:licard-dev
TouchInstinct:feature/kotlin_codestyle
TouchInstinct:feature/add_static_analysis_gradle
TouchInstinct:fix/script_link
TouchInstinct:temp_disable_android_linter
TouchInstinct:add_lint_report_check
TouchInstinct:feature/config_gen_flags
TouchInstinct:fix/makefile_identation
TouchInstinct:feature/makefile_shortcuts
TouchInstinct:fix/default_options
TouchInstinct:feature/api_key_configuring
TouchInstinct:feature/api_key_test
TouchInstinct:feature/detekt-server-support
TouchInstinct:fix/update-static-for-mir-build
TouchInstinct:swagger_api_generator_plugin
TouchInstinct:fix/api_codegen
TouchInstinct:fix/api_generator_wrong_last_commit_check
TouchInstinct:feature/verbose_pods
TouchInstinct:feature/api_gen_update
TouchInstinct:build_scripts_ubrr_android/disabled_cpd
TouchInstinct:ubrir_linters_fix
TouchInstinct:multiple_files
TouchInstinct:feature/support_inheritance_in_xcconfig_options
TouchInstinct:build_scripts_ubrr_android/detekt_update
TouchInstinct:fix/MIR-2348
TouchInstinct:setupLint_before_evaluate
TouchInstinct:feature/config_generator_abstract_target_support
TouchInstinct:update_detekt
TouchInstinct:fix/codegen_fixes
TouchInstinct:feature/openapi_generator
TouchInstinct:feature/fastlane_run_tests
TouchInstinct:vuzbank
TouchInstinct:feature/SwiftLint_0.45.1_adaptation
TouchInstinct:feature/api_generator_fix
TouchInstinct:feature/check_copypaste
TouchInstinct:fix/gym
TouchInstinct:feature/final-class-rule-for-configurable-view-or-cell
TouchInstinct:feature/output_swiftlint_rule
TouchInstinct:feature/remove_feature_generation
TouchInstinct:feature/aplink_piker
TouchInstinct:MB_15836_bugfix
TouchInstinct:MB_18143_fix_navigation_back
TouchInstinct:MB_18493_fix_phantom_click
TouchInstinct:MB_18578_handle_bki_advert_deeplink_
TouchInstinct:MB_18949_fix_chash_in_hand
TouchInstinct:MB_18991_fix_payment_screen_crush
TouchInstinct:MB_19224_add_creditproduct_applink_deeplinkl
TouchInstinct:MB_19340_fix_dialog_crush
TouchInstinct:MB_19381_fix_keybooard_appearance
TouchInstinct:fix/skip_version_check
TouchInstinct:fix/path_to_envsubst
TouchInstinct:feature/toggles
TouchInstinct:new_api_gen_version
TouchInstinct:feature/strong_self
TouchInstinct:feature/indentation_width
TouchInstinct:feature/build_number_without_agvtool
TouchInstinct:feature/android_kotlin_api_generator
TouchInstinct:remove_kaspersky_rules
TouchInstinct:transfer/api-gen
TouchInstinct:bange
TouchInstinct:screenshots
TouchInstinct:screenshots_with_parameters
TouchInstinct:feature/new_buildscripts
TouchInstinct:feature/kotlin_dsl
TouchInstinct:feature/iosStrings
TouchInstinct:feature/JET-233
TouchInstinct:rzd_logan
No reviewers
Labels
Clear labels
No items
No Label
Milestone
Clear milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
Clear assignees
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.
No due date set.
Dependencies
No dependencies set.
Reference: TouchInstinct/BuildScripts#26
Reference in New Issue
No description provided.
Delete Branch "incremental_api_generator"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
[Android] Инкрементальная генерация моделей API
Сделал инкрементальной генерацию моделей апи.
Общий механизм такой: запускается таска
apiGenerator(классApiGeneratorTask), которая на вход получает список изменений в директории спеки апи (см. доку грейдл).Если файл в спеке апи был удалён, то ищется его джава/котлин класс и удаляется тоже. Все изменённые файлы сохраняются в список. Этот список передаётся в
ApiModelsDependencyResolver.getDependenciesFromFiles, который возвращает список всех зависимостей (файлов) для переданного списка моделей. Происходит это с помощьюFileParser().getAllTypeNamesFromJson, который из файла получает список используемых в модели названий типов, которые затем и ищутся в спеке апи.Затем общий список файлов (изменнёных и их зависимостей) копируется во временную директорию, которая и передаётся в апи генератор.
@ -0,0 +50,4 @@val value = jsonEntry.valueval newTypes: Set<String> = when {(value as? Collection<Map<String, Any?>>) != null -> {Из-за дженерика обычный приведение типов через
isне работает@ -0,0 +94,4 @@inputChanges.getFileChanges(inputFiles).filter { it.fileType == FileType.FILE }.forEach { change ->change ->
file ->
@ -0,0 +16,4 @@private val fileParser: FileParser) {// Мапа для хранения и быстрого поиска типа модельки по файлам, т.к. не всегда имя файла совпадает с типом модельки.c -- у тебя на латинице
@ -0,0 +65,4 @@foundDependencies} else {foundDependencies + newDependencies}files.fold(files) { foundDependencies, file ->
val newDependencies = getFileDependencies(file)
такой же код есть в getDependenciesFromFiles
@ -0,0 +68,4 @@foundTypes} else {foundTypes + newTypes}а зачем вообще конструкция
if (newTypes.isEmpty()) {
foundTypes
} else {
foundTypes + newTypes
}
если newTypes пустой, то foundTypes + newTypes как раз будет равен foundTypes
Разве нет?
@ -0,0 +90,4 @@}is MapType -> {newTypeNames.addAll(type.getSubTypeNames())во всех остальных случая дубль кода
Step 1:
From your project repository, check out a new branch and test the changes.Step 2:
Merge the changes and update on Gitea.