## Overview
#
# This reusable GitHub Actions workflow provides a comprehensive Continuous Integration (CI) pipeline
# for multi-platform mobile and desktop applications, specifically designed for projects using Gradle and Java/Kotlin.
#
### Key Features
# - Automated code quality checks
# - Dependency management and verification
# - Cross-platform desktop application builds (Windows, Linux, MacOS)
# - Android APK build generation
# - Artifact generation and storage
#
### Workflow Jobs
# 1. **Setup**: Prepares the build environment
#   - Checks out repository code
#   - Sets up Java (configurable; defaults to 17)
#   - Configures Gradle
#   - Manages dependency caching
#
# 2. **Code Quality Checks**:
#   - Build logic verification
#   - Code formatting checks (Spotless)
#   - Static code analysis (Detekt)
#
# 3. **Dependency Guard**:
#   - Verifies dependencies against baseline
#   - Prevents unauthorized dependency changes
#   - Supports automatic baseline updates
#
# 4. **Android App Build**:
#   - Builds debug APK for demo flavor
#   - Uploads APK artifacts
#
# 5. **Desktop App Build**:
#   - Builds applications for Windows, Linux, and MacOS
#   - Generates platform-specific executables and packages
#
### Prerequisites
#   - Java (configurable; default 17)
#   - Gradle
#   - Configured build scripts for:
#       - Android module
#       - Desktop module
#   - Installed Gradle plugins:
#       - Spotless
#       - Detekt
#       - Dependency Guard
#
### Configuration Parameters
# The workflow requires two input parameters:
#
#   |         Parameter      |              Description           |  Type  | Required  |
#   |------------------------|------------------------------------|--------|-----------|
#   | `android_package_name` | Name of the Android project module | String |    Yes    |
#   | `desktop_package_name` | Name of the Desktop project module | String |    Yes    |
#   |`web_package_name`      | Name of the Web (Kotlin/JS) project/module | String | No|
#   |`ios_package_name`      | Name of the iOS project/module	| String |	No	       |
#   |`build_ios`	         | Build iOS targets as part of PR checks |	Boolean	| No   |
#   |`use_cocoapods`         | Use CocoaPods for iOS integration	| Boolean	| No   |
#   |`shared_module	         | Path of the shared KMP module  |	String	| (required when build_ios=true) |
#   |`java-version	         | Java version to use (configurable; defaults to 17)| No  |
#

# https://github.com/openMF/mifos-x-actionhub/blob/main/.github/workflows/pr-check.yaml

# ##############################################################################
#                 DON'T EDIT THIS FILE UNLESS NECESSARY                        #
# ##############################################################################


name: PR Checks

# Trigger conditions for the workflow
on:
  push:
    branches: [ dev ]  # Runs on pushes to dev branch
  pull_request:       # Runs on all pull requests

# Concurrency settings to prevent multiple simultaneous workflow runs
concurrency:
  group: pr-${{ github.ref }}
  cancel-in-progress: true  # Cancels previous runs if a new one is triggered

permissions:
  contents: write

jobs:
  pr_checks:
    name: PR Checks
    uses: openMF/mifos-x-actionhub/.github/workflows/pr-check.yaml@v1.0.7
    secrets: inherit
    with:
      android_package_name: 'cmp-android' # <-- Change Your Android Package Name
      desktop_package_name: 'cmp-desktop' # <-- Change Your Desktop Package Name
      web_package_name: 'cmp-web' # <-- Change Your Web Package Name
      ios_package_name: 'cmp-ios' # <-- Change Your iOS Package Name
      build_ios: true
      use_cocoapods: true
      shared_module: ':cmp-shared'
      java-version: '21'
