/**
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @format
 * @noflow
 */

/*
 * This script is used to update the android/build.gradle.kts file
 * with the versions from the libs.versions.toml file.
 *
 * This is needed because this package is consumed from source from
 * external users and we don't want to have several SDK version around to
 * maintain.
 *
 * It's invoked as a prepublish script for this package.
 */

function extractVersion(tomlContent, regex) {
  const match = tomlContent.match(regex);
  return match && match[1] ? match[1] : null;
}

const fs = require('fs');

const buildGradleKtsPath = 'android/build.gradle.kts';
const libsVersionsTomlPath = '../react-native/gradle/libs.versions.toml';

console.log(
  `Updating ${buildGradleKtsPath} with versions from ${libsVersionsTomlPath}...`,
);

let gradleContent = fs.readFileSync(buildGradleKtsPath, 'utf8');
const tomlContent = fs.readFileSync(libsVersionsTomlPath, 'utf8');

const compileSdk = extractVersion(tomlContent, /compileSdk\s*=\s*"(\d+)"/);
const minSdk = extractVersion(tomlContent, /minSdk\s*=\s*"(\d+)"/);
const buildTools = extractVersion(tomlContent, /buildTools\s*=\s*"([\d.]+)"/);

gradleContent = gradleContent
  .replace('libs.versions.compileSdk.get().toInt()', compileSdk)
  .replace('libs.versions.minSdk.get().toInt()', minSdk)
  .replace('libs.versions.buildTools.get()', `"${buildTools}"`)
  .replace(
    'project(":packages:react-native:ReactAndroid")',
    '"com.facebook.react:react-android"',
  );

fs.writeFileSync(buildGradleKtsPath, gradleContent);

console.log('Done!');
