// Brightcove Android Player Samples — capability-bucketed multi-module build.
// Each top-level folder is a capability bucket; every sample ships a `-java` and a
// `-kotlin` variant. A module's Gradle path mirrors its folder (e.g. the project
// ':Player:BasicSampleApp-java' lives in Player/BasicSampleApp-java).

// Player — core playback
include ':Player:BasicSampleApp-java'
include ':Player:BasicSampleApp-kotlin'
include ':Player:AppCompatSampleApp-java'
include ':Player:AppCompatSampleApp-kotlin'
include ':Player:VideoListSampleApp-java'
include ':Player:VideoListSampleApp-kotlin'
include ':Player:AudioOnlySampleApp-java'
include ':Player:AudioOnlySampleApp-kotlin'
include ':Player:LiveSampleApp-java'
include ':Player:LiveSampleApp-kotlin'
include ':Player:PictureInPictureSampleApp-java'
include ':Player:PictureInPictureSampleApp-kotlin'
include ':Player:ThumbnailScrubberSampleApp-java'
include ':Player:ThumbnailScrubberSampleApp-kotlin'
include ':Player:360VideoSampleApp-java'
include ':Player:360VideoSampleApp-kotlin'
include ':Player:TextureViewSampleApp-java'
include ':Player:TextureViewSampleApp-kotlin'
include ':Player:BumperSampleApp-java'
include ':Player:BumperSampleApp-kotlin'

// PlayerUI — Brightcove player controls customization
include ':PlayerUI:CustomizedControlsSampleApp-java'
include ':PlayerUI:CustomizedControlsSampleApp-kotlin'
include ':PlayerUI:StyledControlsSampleApp-java'
include ':PlayerUI:StyledControlsSampleApp-kotlin'
include ':PlayerUI:RewindSampleApp-java'
include ':PlayerUI:RewindSampleApp-kotlin'
include ':PlayerUI:SeekBarColorsSampleApp-java'
include ':PlayerUI:SeekBarColorsSampleApp-kotlin'

// IMA — Google Interactive Media Ads (client-side)
include ':IMA:AdRulesIMASampleApp-java'
include ':IMA:AdRulesIMASampleApp-kotlin'
include ':IMA:BasicIMAVASTSampleApp-java'
include ':IMA:BasicIMAVASTSampleApp-kotlin'
include ':IMA:VideoListAdRulesIMASampleApp-java'
include ':IMA:VideoListAdRulesIMASampleApp-kotlin'
include ':IMA:AdRulesIMAWidevineModularSampleApp-java'
include ':IMA:AdRulesIMAWidevineModularSampleApp-kotlin'

// DAI — Google Dynamic Ad Insertion
include ':DAI:BasicDAISampleApp-java'
include ':DAI:BasicDAISampleApp-kotlin'

// SSAI — Brightcove Server-Side Ad Insertion (incl. PAL nonce)
include ':SSAI:BasicSsaiSampleApp-java'
include ':SSAI:BasicSsaiSampleApp-kotlin'
include ':SSAI:BasicSsaiPALSampleApp-java'
include ':SSAI:BasicSsaiPALSampleApp-kotlin'

// DRM — Widevine Modular
include ':DRM:WidevineModularSampleApp-java'
include ':DRM:WidevineModularSampleApp-kotlin'
include ':DRM:HdcpFallbackSampleApp-java'
include ':DRM:HdcpFallbackSampleApp-kotlin'

// Cast — Google Cast (Brightcove receiver)
include ':Cast:BasicCastBrightcoveReceiverSampleApp-java'
include ':Cast:BasicCastBrightcoveReceiverSampleApp-kotlin'

// Offline — downloaded playback
include ':Offline:OfflinePlaybackSampleApp-java'
include ':Offline:OfflinePlaybackSampleApp-kotlin'

// FreeWheel — the Kotlin samples build unconditionally.
include ':FreeWheel:FreeWheelSampleApp-kotlin'
include ':FreeWheel:FreeWheelWidevineModularSampleApp-kotlin'

// The FreeWheel Java samples require AdManager.aar v6.28.0 in the libs folder
// under your home directory. This aar archive must be acquired from FreeWheel by you.
if (freewheelDependenciesAreSatisfied()) {
    include ':FreeWheel:FreeWheelSampleApp-java'
    include ':FreeWheel:FreeWheelWidevineModularSampleApp-java'
}

// The Pulse samples require Pulse.aar in the libs folder under your home directory.
if (pulseDependenciesAreSatisfied()) {
    include ':Pulse:PulseSampleApp-java'
    include ':Pulse:PulseSampleApp-kotlin'
}

boolean freewheelDependenciesAreSatisfied() {
    File dep = file("${System.getProperty("user.home")}/libs/AdManager.aar")
    return dep.exists()
}

boolean pulseDependenciesAreSatisfied() {
    File dep = file("${System.getProperty("user.home")}/libs/Pulse.aar")
    return dep.exists()
}

// Local SDK development support
// Set anpVersion to:
//   - Normal version: "10.2.2" (uses published artifacts)
//   - Local with default path: "LOCAL" (uses ../videocloud_android-native-player)
//   - Local with custom path: "LOCAL:/path/to/sdk" (uses specified path)

def localSdkPath = null
def useLocalSdk = false

if (anpVersion.startsWith('LOCAL')) {
    useLocalSdk = true
    if (anpVersion.contains(':')) {
        // LOCAL:/path/to/sdk format
        localSdkPath = anpVersion.substring(anpVersion.indexOf(':') + 1)
    } else {
        // Just "LOCAL" - use default path
        localSdkPath = '../videocloud_android-native-player'
    }
}

if (useLocalSdk) {
    if (file(localSdkPath).exists()) {
        println "Found local SDK at ${localSdkPath} - enabling composite build for seamless development"

        includeBuild(localSdkPath) {
            dependencySubstitution {
                substitute module('com.brightcove.player:android-sdk') using project(':sdk')
                substitute module('com.brightcove.player:exoplayer2') using project(':players:exoplayer2')
                substitute module('com.brightcove.player:android-ima-plugin') using project(':plugins:ima')
                substitute module('com.brightcove.player:android-dai-plugin') using project(':plugins:ima-dai')
                substitute module('com.brightcove.player:android-ssai-plugin') using project(':plugins:ssai')
                substitute module('com.brightcove.player:android-cast-plugin') using project(':plugins:cast')
                substitute module('com.brightcove.player:android-freewheel-plugin') using project(':plugins:freewheel')
                substitute module('com.brightcove.player:android-pulse-plugin') using project(':plugins:pulse')
                substitute module('com.brightcove.player:android-omniture-plugin') using project(':plugins:omniture')
                substitute module('com.brightcove.player:android-appcompat-plugin') using project(':plugins:appcompat')
                substitute module('com.brightcove.player:android-thumbnail-plugin') using project(':plugins:thumbnail')
                substitute module('com.brightcove.player:offline-playback') using project(':plugins:offline-playback')
                substitute module('com.brightcove.player:android-playback-notification-plugin') using project(':plugins:playback-notification')
            }
        }
    } else {
        throw new GradleException("Local SDK not found at ${localSdkPath}. Please check the path or use a published version instead.")
    }
} else {
    println "Using published Maven artifacts version: ${anpVersion}"
}
