1{"version":3,"file":"Version.js","names":["withVersion","config","withAppBuildGradle","modResults","language","contents","setVersionCode","setVersionName","addWarningAndroid","withBuildScriptExtMinimumVersion","props","withProjectBuildGradle","setMinBuildScriptExtVersion","buildGradle","name","minVersion","regex","RegExp","currentVersion","match","currentVersionNum","Number","replace","Math","max","getVersionName","version","versionName","pattern","getVersionCode","android","versionCode"],"sources":["../../src/android/Version.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withAppBuildGradle, withProjectBuildGradle } from '../plugins/android-plugins';\nimport { addWarningAndroid } from '../utils/warnings';\n\nexport const withVersion: ConfigPlugin = (config) => {\n  return withAppBuildGradle(config, (config) => {\n    if (config.modResults.language === 'groovy') {\n      config.modResults.contents = setVersionCode(config, config.modResults.contents);\n      config.modResults.contents = setVersionName(config, config.modResults.contents);\n    } else {\n      addWarningAndroid(\n        'android.versionCode',\n        `Cannot automatically configure app build.gradle if it's not groovy`\n      );\n    }\n    return config;\n  });\n};\n\n/** Sets a numeric version for a value in the project.gradle buildscript.ext object to be at least the provided props.minVersion, if the existing value is greater then no change will be made. */\nexport const withBuildScriptExtMinimumVersion: ConfigPlugin<{\n  name: string;\n  minVersion: number;\n}> = (config, props) => {\n  return withProjectBuildGradle(config, (config) => {\n    if (config.modResults.language === 'groovy') {\n      config.modResults.contents = setMinBuildScriptExtVersion(config.modResults.contents, props);\n    } else {\n      addWarningAndroid(\n        'withBuildScriptExtVersion',\n        `Cannot automatically configure project build.gradle if it's not groovy`\n      );\n    }\n    return config;\n  });\n};\n\nexport function setMinBuildScriptExtVersion(\n  buildGradle: string,\n  { name, minVersion }: { name: string; minVersion: number }\n) {\n  const regex = new RegExp(`(${name}\\\\s?=\\\\s?)(\\\\d+(?:\\\\.\\\\d+)?)`);\n  const currentVersion = buildGradle.match(regex)?.[2];\n  if (!currentVersion) {\n    addWarningAndroid(\n      'withBuildScriptExtVersion',\n      `Cannot set minimum buildscript.ext.${name} version because the property \"${name}\" cannot be found or does not have a numeric value.`\n    );\n    // TODO: Maybe just add the property...\n    return buildGradle;\n  }\n\n  const currentVersionNum = Number(currentVersion);\n  return buildGradle.replace(regex, `$1${Math.max(minVersion, currentVersionNum)}`);\n}\n\nexport function getVersionName(config: Pick<ExpoConfig, 'version'>) {\n  return config.version ?? null;\n}\n\nexport function setVersionName(config: Pick<ExpoConfig, 'version'>, buildGradle: string) {\n  const versionName = getVersionName(config);\n  if (versionName === null) {\n    return buildGradle;\n  }\n\n  const pattern = new RegExp(`versionName \".*\"`);\n  return buildGradle.replace(pattern, `versionName \"${versionName}\"`);\n}\n\nexport function getVersionCode(config: Pick<ExpoConfig, 'android'>) {\n  return config.android?.versionCode ?? 1;\n}\n\nexport function setVersionCode(config: Pick<ExpoConfig, 'android'>, buildGradle: string) {\n  const versionCode = getVersionCode(config);\n  if (versionCode === null) {\n    return buildGradle;\n  }\n\n  const pattern = new RegExp(`versionCode.*`);\n  return buildGradle.replace(pattern, `versionCode ${versionCode}`);\n}\n"],"mappings":"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"}