[
  {
    "path": ".circleci/config.yml",
    "content": "version: 2.1\nsetup: true\norbs:\n  orb-tools: circleci/orb-tools@12.0\n  shellcheck: circleci/shellcheck@3.1\n\nfilters: &filters\n  tags:\n    only: /.*/\n\nworkflows:\n  lint-pack:\n    jobs:\n      - orb-tools/lint:\n          filters: *filters\n      - orb-tools/pack:\n          filters: *filters\n      - orb-tools/review:\n          exclude: RC002,RC005,RC009\n          filters: *filters\n      - shellcheck/check:\n          filters: *filters\n      - orb-tools/continue:\n          pipeline_number: << pipeline.number >>\n          vcs_type: << pipeline.project.type >>\n          orb_name: react-native\n          requires: [orb-tools/lint, orb-tools/pack, orb-tools/review, shellcheck/check]\n          filters: *filters\n"
  },
  {
    "path": ".circleci/test-deploy.yml",
    "content": "version: 2.1\norbs:\n  orb-tools: circleci/orb-tools@12.0\n  node: circleci/node@5.2.0\n  # The orb definition is intentionally not included here. It will be injected into the pipeline.\n  react-native: {}\n\nfilters: &filters\n  tags:\n    only: /.*/\n\n# Filter for release tags.\nrelease-filters: &release-filters\n  branches:\n    ignore: /.*/\n  tags:\n    only: /^v[0-9]+\\.[0-9]+\\.[0-9]+$/\n\njobs:\n  command-test:\n    docker:\n      - image: cimg/node:current\n    steps:\n      - checkout\n      - react-native/yarn_install\n\nworkflows:\n  test-deploy:\n    jobs:\n      - command-test:\n          filters: *filters\n\n      - node/run:\n          yarn-run: semantic-release\n          version: \"20.11\"\n          pkg-manager: yarn\n          requires:\n            - command-test\n          filters:\n            branches:\n              only: main\n\n      - orb-tools/pack:\n          filters: *release-filters\n\n      - orb-tools/publish:\n          orb_name: react-native-community/react-native\n          vcs_type: << pipeline.project.type >>\n          pub_type: production\n          requires:\n            - orb-tools/pack\n            - command-test\n          context: orb-publishing\n          filters: *release-filters\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: \"Bug report\"\nabout: Create a report to help improve the project\nlabels: bug\n\n---\n\n### Orb version\n\n<!---\n  e.g., 1.0.0\n  find this information in your config.yml file;\n  if the version is @volatile, check the top of your CircleCI-generated,\n  expanded configuration file, viewable from the \"Configuration\" tab of\n  any job page, for the orb's specific semantic version number\n-->\n\n### What happened\n\n<!---\n  please include any relevant links to CircleCI workflows or jobs\n  where you saw this behavior\n-->\n\n### Expected behavior\n\n<!--- what should happen, ideally? -->\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "content": "---\nname: \"Feature request\"\nabout: Suggest an idea that will improve the project\nlabels: enhancement\n\n---\n\n## What would you like to be added\n\n<!---\n  please describe the idea you have and the problem you are trying to solve\n-->\n\n## Why is this needed\n\n<!---\n  please explain why is this feature needed and how it improves the project\n-->\n"
  },
  {
    "path": ".gitignore",
    "content": "\n# Created by https://www.gitignore.io/api/macos,windows,linux,node\n\n### Linux ###\n*~\n\n# temporary files which can be created if a process still has a handle open of a deleted file\n.fuse_hidden*\n\n# KDE directory preferences\n.directory\n\n# Linux trash folder which might appear on any partition or disk\n.Trash-*\n\n# .nfs files are created when an open file is removed but is still being accessed\n.nfs*\n\n### macOS ###\n*.DS_Store\n.AppleDouble\n.LSOverride\n\n# Icon must end with two \\r\nIcon\n\n# Thumbnails\n._*\n\n# Files that might appear in the root of a volume\n.DocumentRevisions-V100\n.fseventsd\n.Spotlight-V100\n.TemporaryItems\n.Trashes\n.VolumeIcon.icns\n.com.apple.timemachine.donotpresent\n\n# Directories potentially created on remote AFP share\n.AppleDB\n.AppleDesktop\nNetwork Trash Folder\nTemporary Items\n.apdisk\n\n### Node ###\n# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (http://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# Typescript v1 declaration files\ntypings/\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# Yarn Integrity file\n.yarn-integrity\n\n# dotenv environment variables file\n.env\n\n\n### Windows ###\n# Windows thumbnail cache files\nThumbs.db\nehthumbs.db\nehthumbs_vista.db\n\n# Folder config file\nDesktop.ini\n\n# Recycle Bin used on file shares\n$RECYCLE.BIN/\n\n# Windows Installer files\n*.cab\n*.msi\n*.msm\n*.msp\n\n# Windows shortcuts\n*.lnk\n\n# End of https://www.gitignore.io/api/macos,windows,linux,node\n"
  },
  {
    "path": ".releaserc",
    "content": "{\n  \"branches\": [\"main\"],\n  \"plugins\": [\n    \"@semantic-release/commit-analyzer\",\n    \"@semantic-release/release-notes-generator\",\n    \"@semantic-release/changelog\",\n    [\n      \"@semantic-release/npm\",\n      {\n        \"npmPublish\": false\n      }\n    ],\n    \"@semantic-release/github\",\n    [\n      \"@semantic-release/git\",\n      {\n        \"assets\": [\"CHANGELOG.md\", \"package.json\"],\n        \"message\": \"chore(release): ${nextRelease.version} [skip ci] \\n\\n${nextRelease.notes}\"\n      }\n    ]\n  ]\n}\n"
  },
  {
    "path": ".yamllint",
    "content": "extends: relaxed\n\nrules:\n    line-length:\n        max: 200\n        allow-non-breakable-inline-mappings: true\n\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "## [8.0.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v8.0.0...v8.0.1) (2024-12-29)\n\n\n### Bug Fixes\n\n* remove pod_install command cache fallback ([06b0432](https://github.com/react-native-community/react-native-circleci-orb/commit/06b0432))\n\n# [8.0.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v7.4.0...v8.0.0) (2024-05-23)\n\n\n### Bug Fixes\n\n* remove _JAVA_OPTIONS parameter & environment (closes [#171](https://github.com/react-native-community/react-native-circleci-orb/issues/171)) ([d737af9](https://github.com/react-native-community/react-native-circleci-orb/commit/d737af9))\n\n\n* Merge pull request #172 from devnev/no-java-options-env ([a7d373e](https://github.com/react-native-community/react-native-circleci-orb/commit/a7d373e)), closes [#172](https://github.com/react-native-community/react-native-circleci-orb/issues/172)\n\n\n### BREAKING CHANGES\n\n* The java_options parameter has been removed. Specify your JVM options in the gradle.properties file or in the gradle_options with -Dorg.gradle.jvmargs= instead.\n\n# [7.4.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v7.3.0...v7.4.0) (2024-02-12)\n\n\n### Features\n\n* support a custom pod install command ([d15769f](https://github.com/react-native-community/react-native-circleci-orb/commit/d15769f))\n\n# [7.3.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v7.2.0...v7.3.0) (2023-07-12)\n\n\n### Bug Fixes\n\n* yaml parsing build_image_version default as double ([df23a73](https://github.com/react-native-community/react-native-circleci-orb/commit/df23a73))\n* yaml parsing build_image_version default as double ([#170](https://github.com/react-native-community/react-native-circleci-orb/issues/170)) ([3c8cb0f](https://github.com/react-native-community/react-native-circleci-orb/commit/3c8cb0f))\n\n\n### Features\n\n* allow specifying build image version for android build & executor ([ee50537](https://github.com/react-native-community/react-native-circleci-orb/commit/ee50537))\n\n# [7.2.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v7.1.1...v7.2.0) (2023-07-11)\n\n\n### Features\n\n* Skip Detox setup in ios_build job ([3fc5c53](https://github.com/react-native-community/react-native-circleci-orb/commit/3fc5c53))\n\n## [7.1.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v7.1.0...v7.1.1) (2022-08-03)\n\n\n### Bug Fixes\n\n* update XCode version to 12.5.1 ([#158](https://github.com/react-native-community/react-native-circleci-orb/issues/158)) ([4bbdb75](https://github.com/react-native-community/react-native-circleci-orb/commit/4bbdb75))\n\n# [7.1.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v7.0.1...v7.1.0) (2022-06-18)\n\n\n### Bug Fixes\n\n* **android_test:** node v12 to v16 ([a9956b7](https://github.com/react-native-community/react-native-circleci-orb/commit/a9956b7))\n* **ios_build:** node v12 to v16 ([f0ea6b4](https://github.com/react-native-community/react-native-circleci-orb/commit/f0ea6b4))\n* **ios_build_and_test:** node v12 to v16 ([6347597](https://github.com/react-native-community/react-native-circleci-orb/commit/6347597))\n* **setup_macos_executor:** bump node v12 to v16 ([a34ccec](https://github.com/react-native-community/react-native-circleci-orb/commit/a34ccec))\n\n\n### Features\n\n* **node:** bump from node 12 to node 16 default ([0acc6f9](https://github.com/react-native-community/react-native-circleci-orb/commit/0acc6f9))\n\n## [7.0.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v7.0.0...v7.0.1) (2022-06-10)\n\n\n### Bug Fixes\n\n* 'an unexpected storage error occurred' on multiline keys ([b9fb1bb](https://github.com/react-native-community/react-native-circleci-orb/commit/b9fb1bb))\n\n# [7.0.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v6.8.1...v7.0.0) (2022-04-26)\n\n\n### Bug Fixes\n\n* removing old yarn version from PATH which hopefully fixes the issue ([cc25fff](https://github.com/react-native-community/react-native-circleci-orb/commit/cc25fff))\n\n\n* fix!: using supported Node version with cimg/node and updating comments ([1186c41](https://github.com/react-native-community/react-native-circleci-orb/commit/1186c41))\n\n\n### BREAKING CHANGES\n\n* cimg/node doesn't support major Node version aliases the same way circleci/node did\n\n## [6.8.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v6.8.0...v6.8.1) (2022-02-27)\n\n\n### Bug Fixes\n\n* add missing CACHE_VERSION in pod_install ([b6c7e99](https://github.com/react-native-community/react-native-circleci-orb/commit/b6c7e99))\n* quote cache keys that start with special characters ([b217d8c](https://github.com/react-native-community/react-native-circleci-orb/commit/b217d8c))\n\n# [6.8.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v6.7.0...v6.8.0) (2022-02-15)\n\n\n### Features\n\n* allow passing executor parameters to test jobs ([#141](https://github.com/react-native-community/react-native-circleci-orb/issues/141)) ([eea6098](https://github.com/react-native-community/react-native-circleci-orb/commit/eea6098)), closes [#112](https://github.com/react-native-community/react-native-circleci-orb/issues/112)\n\n# [6.7.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v6.6.0...v6.7.0) (2022-02-15)\n\n\n### Features\n\n* add pod_cache param to ios_build job ([#140](https://github.com/react-native-community/react-native-circleci-orb/issues/140)) ([f18183f](https://github.com/react-native-community/react-native-circleci-orb/commit/f18183f))\n\n# [6.6.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v6.5.0...v6.6.0) (2022-02-14)\n\n\n### Features\n\n* allow passing executor parameters to jobs ([#133](https://github.com/react-native-community/react-native-circleci-orb/issues/133)) ([4a199fd](https://github.com/react-native-community/react-native-circleci-orb/commit/4a199fd))\n\n# [6.5.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v6.4.0...v6.5.0) (2022-02-14)\n\n\n### Features\n\n* allow passing pod_install_directory during ios_build job ([#136](https://github.com/react-native-community/react-native-circleci-orb/issues/136)) ([faa7a01](https://github.com/react-native-community/react-native-circleci-orb/commit/faa7a01))\n\n# [6.4.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v6.3.0...v6.4.0) (2022-02-14)\n\n\n### Features\n\n* pass through pod cache param from job to command ([#138](https://github.com/react-native-community/react-native-circleci-orb/issues/138)) ([b156c1b](https://github.com/react-native-community/react-native-circleci-orb/commit/b156c1b))\n\n# [6.3.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v6.2.2...v6.3.0) (2022-01-30)\n\n\n### Features\n\n* add homebrew_update parameter to toggle brew update ([#131](https://github.com/react-native-community/react-native-circleci-orb/issues/131)) ([6a7d635](https://github.com/react-native-community/react-native-circleci-orb/commit/6a7d635))\n\n## [6.2.2](https://github.com/react-native-community/react-native-circleci-orb/compare/v6.2.1...v6.2.2) (2022-01-28)\n\n\n### Bug Fixes\n\n* **android:** fix gradle build cache key ([#130](https://github.com/react-native-community/react-native-circleci-orb/issues/130) by [@fotos](https://github.com/fotos)) ([acadf02](https://github.com/react-native-community/react-native-circleci-orb/commit/acadf02))\n\n## [6.2.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v6.2.0...v6.2.1) (2022-01-27)\n\n\n### Bug Fixes\n\n* **ios:** update default ios device to iPhone 11 ([#127](https://github.com/react-native-community/react-native-circleci-orb/issues/127)) ([2e3b1e0](https://github.com/react-native-community/react-native-circleci-orb/commit/2e3b1e0))\n\n# [6.2.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v6.1.0...v6.2.0) (2022-01-17)\n\n\n### Features\n\n* **ios:** control if simulator starts in background ([#126](https://github.com/react-native-community/react-native-circleci-orb/issues/126)) ([08338f9](https://github.com/react-native-community/react-native-circleci-orb/commit/08338f9))\n\n# [6.1.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v6.0.1...v6.1.0) (2022-01-04)\n\n\n### Features\n\n* add optional yarn_install_directory parameter ([#124](https://github.com/react-native-community/react-native-circleci-orb/issues/124)) ([3c659f9](https://github.com/react-native-community/react-native-circleci-orb/commit/3c659f9))\n\n## [6.0.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v6.0.0...v6.0.1) (2021-11-19)\n\n\n### Bug Fixes\n\n* **android:** move docker android pin to JDK11 version ([#123](https://github.com/react-native-community/react-native-circleci-orb/issues/123)) ([d74d427](https://github.com/react-native-community/react-native-circleci-orb/commit/d74d427)), closes [#122](https://github.com/react-native-community/react-native-circleci-orb/issues/122)\n\n# [6.0.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v5.6.2...v6.0.0) (2021-11-19)\n\n\n### Bug Fixes\n\n* **android:** use JDK11 compatible JVM options ([#122](https://github.com/react-native-community/react-native-circleci-orb/issues/122)) ([1923bcd](https://github.com/react-native-community/react-native-circleci-orb/commit/1923bcd)), closes [#120](https://github.com/react-native-community/react-native-circleci-orb/issues/120)\n\n\n### BREAKING CHANGES\n\n* **android:** this orb is now using JDK11\n\nSee JDK8-->JDK11 migration notes here:\nhttps://discuss.circleci.com/t/android-convenience-image-moving-to-java-v11-on-august-17th/36601/4\n\n## [5.6.2](https://github.com/react-native-community/react-native-circleci-orb/compare/v5.6.1...v5.6.2) (2021-11-19)\n\n\n### Bug Fixes\n\n* **android:** pin docker image to 4.2 for JDK8 ([#121](https://github.com/react-native-community/react-native-circleci-orb/issues/121)) ([fe2898a](https://github.com/react-native-community/react-native-circleci-orb/commit/fe2898a)), closes [#120](https://github.com/react-native-community/react-native-circleci-orb/issues/120)\n\n## [5.6.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v5.6.0...v5.6.1) (2021-11-19)\n\n\n### Bug Fixes\n\n* do not cache /usr/local/Homebrew ([#119](https://github.com/react-native-community/react-native-circleci-orb/issues/119)) ([597e597](https://github.com/react-native-community/react-native-circleci-orb/commit/597e597))\n\n# [5.6.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v5.5.1...v5.6.0) (2021-10-22)\n\n\n### Features\n\n* **android:** Pass through the `assemble_android_test` parameter from the `android_build` job to the command ([#109](https://github.com/react-native-community/react-native-circleci-orb/issues/109) by [@ronwsmith](https://github.com/ronwsmith)) ([9f2e7fa](https://github.com/react-native-community/react-native-circleci-orb/commit/9f2e7fa))\n\n## [5.5.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v5.5.0...v5.5.1) (2021-10-22)\n\n\n### Bug Fixes\n\n* **android:** Added new Android Command Line Tools for MacOS 12+ and Java 9, 10, 11 ([#114](https://github.com/react-native-community/react-native-circleci-orb/issues/114) by [@lukebrandonfarrell](https://github.com/lukebrandonfarrell)) ([aeb45fe](https://github.com/react-native-community/react-native-circleci-orb/commit/aeb45fe))\n\n# [5.5.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v5.4.0...v5.5.0) (2021-07-28)\n\n\n### Features\n\n* **Android:** Add optional command-running step after the emulator starts ([#110](https://github.com/react-native-community/react-native-circleci-orb/issues/110) by [@ronwsmith](https://github.com/ronwsmith)) ([5ee8a30](https://github.com/react-native-community/react-native-circleci-orb/commit/5ee8a30))\n\n# [5.4.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v5.3.0...v5.4.0) (2021-07-13)\n\n\n### Features\n\n* Make yarn cache folder configurable ([#103](https://github.com/react-native-community/react-native-circleci-orb/issues/103) by [@ronwsmith](https://github.com/ronwsmith)) ([c6ccaa1](https://github.com/react-native-community/react-native-circleci-orb/commit/c6ccaa1))\n\n# [5.3.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v5.2.0...v5.3.0) (2021-06-02)\n\n\n### Features\n\n* **android:** Add command to update the NDK to a given version ([#91](https://github.com/react-native-community/react-native-circleci-orb/issues/91) by @CHNB128) ([64eac35](https://github.com/react-native-community/react-native-circleci-orb/commit/64eac35))\n* **android:** Add hombrew cache param to android test job ([#96](https://github.com/react-native-community/react-native-circleci-orb/issues/96) by @Kyonru) ([8314b6e](https://github.com/react-native-community/react-native-circleci-orb/commit/8314b6e))\n\n# [5.2.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v5.1.0...v5.2.0) (2021-06-02)\n\n\n### Features\n\n* add parameter to allow configuring the android tests on build ([0569d66](https://github.com/react-native-community/react-native-circleci-orb/commit/0569d66))\n\n# [5.1.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v5.0.0...v5.1.0) (2021-03-24)\n\n\n### Features\n\n* Add parameters to disable caching ([ad81e99](https://github.com/react-native-community/react-native-circleci-orb/commit/ad81e99))\n\n# [5.0.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.5.3...v5.0.0) (2021-03-18)\n\n\n### Features\n\n* Update default dependencies to meet React Native 0.64 requirements ([34ca501](https://github.com/react-native-community/react-native-circleci-orb/commit/34ca501))\n\n\n### BREAKING CHANGES\n\n* The default dependencies used are now Xcode 12, CocoaPods 1.10.1, Node.js 12\n\n## [4.5.3](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.5.2...v4.5.3) (2021-03-18)\n\n\n### Bug Fixes\n\n* Remove Deprecated CircleCI Spec Repo Cache ([#82](https://github.com/react-native-community/react-native-circleci-orb/issues/82) by @BytesGuy) ([f45fcfe](https://github.com/react-native-community/react-native-circleci-orb/commit/f45fcfe))\n\n## [4.5.2](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.5.1...v4.5.2) (2021-03-18)\n\n\n### Bug Fixes\n\n* **android:** Fix Permission denied issues when running gradlew ([#72](https://github.com/react-native-community/react-native-circleci-orb/issues/72) by [@zpd106](https://github.com/zpd106)) ([0e22ef8](https://github.com/react-native-community/react-native-circleci-orb/commit/0e22ef8))\n\n## [4.5.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.5.0...v4.5.1) (2021-03-18)\n\n\n### Bug Fixes\n\n* Remove deprecated cask usage from brew install ([#85](https://github.com/react-native-community/react-native-circleci-orb/issues/85) by @CHNB128) ([de4ef76](https://github.com/react-native-community/react-native-circleci-orb/commit/de4ef76))\n\n# [4.5.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.4.2...v4.5.0) (2021-03-18)\n\n\n### Bug Fixes\n\n* duplicated on_after_initialize  param ([#78](https://github.com/react-native-community/react-native-circleci-orb/issues/78)) ([33ffc6b](https://github.com/react-native-community/react-native-circleci-orb/commit/33ffc6b))\n\n\n### Features\n\n* Add pod cache ([#67](https://github.com/react-native-community/react-native-circleci-orb/issues/67)) ([96b0f3f](https://github.com/react-native-community/react-native-circleci-orb/commit/96b0f3f))\n\n## [4.4.2](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.4.1...v4.4.2) (2020-05-18)\n\n\n### Bug Fixes\n\n* **android:** Ensure the Android emulator looks correct ([#65](https://github.com/react-native-community/react-native-circleci-orb/issues/65) by [@vonovak](https://github.com/vonovak)) ([57744a4](https://github.com/react-native-community/react-native-circleci-orb/commit/57744a4))\n\n## [4.4.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.4.0...v4.4.1) (2020-05-18)\n\n\n### Bug Fixes\n\n* **android:** Update android_emulator_start.yml to use the new  emulator ([#64](https://github.com/react-native-community/react-native-circleci-orb/issues/64) by [@vonovak](https://github.com/vonovak)) ([73d27e2](https://github.com/react-native-community/react-native-circleci-orb/commit/73d27e2))\n\n# [4.4.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.3.0...v4.4.0) (2020-05-09)\n\n\n### Features\n\n* Add a `store_artifact_path` to the Android and iOS test jobs which allow storing artifacts after a job runs ([#54](https://github.com/react-native-community/react-native-circleci-orb/issues/54) by @MateusAndrade) ([19edf8a](https://github.com/react-native-community/react-native-circleci-orb/commit/19edf8a))\n\n# [4.3.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.2.3...v4.3.0) (2020-05-09)\n\n\n### Features\n\n* follow emulator best practices ([a5765a2](https://github.com/react-native-community/react-native-circleci-orb/commit/a5765a2))\n* follow emulator best practices ([#62](https://github.com/react-native-community/react-native-circleci-orb/issues/62)) ([ac709c1](https://github.com/react-native-community/react-native-circleci-orb/commit/ac709c1))\n\n## [4.2.3](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.2.2...v4.2.3) (2020-05-09)\n\n\n### Bug Fixes\n\n* **android:** fix JAVA_HOME path ([#61](https://github.com/react-native-community/react-native-circleci-orb/issues/61) by [@vonovak](https://github.com/vonovak)) ([e4fa01f](https://github.com/react-native-community/react-native-circleci-orb/commit/e4fa01f))\n* **android:** fix path to emulator ([#60](https://github.com/react-native-community/react-native-circleci-orb/issues/60) by [@vonovak](https://github.com/vonovak)) ([8621ec9](https://github.com/react-native-community/react-native-circleci-orb/commit/8621ec9))\n* Move cache directory to the system temp folder to avoid permission issues ([#59](https://github.com/react-native-community/react-native-circleci-orb/issues/59) by @Naturalclar) ([15f0d90](https://github.com/react-native-community/react-native-circleci-orb/commit/15f0d90))\n\n## [4.2.2](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.2.1...v4.2.2) (2020-04-23)\n\n\n### Bug Fixes\n\n* **ios:** Revert changes from 4.2.0 ([2c3fa5e](https://github.com/react-native-community/react-native-circleci-orb/commit/2c3fa5e))\n\n## [4.2.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.2.0...v4.2.1) (2020-04-22)\n\n\n### Bug Fixes\n\n* **ios:** Fix syntax errors ([aff9136](https://github.com/react-native-community/react-native-circleci-orb/commit/aff9136))\n\n# [4.2.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.1.1...v4.2.0) (2020-04-21)\n\n\n### Features\n\n* **ios:** Ensure a simulator with the latest iOS version exists for the given name when testing ([2d614fa](https://github.com/react-native-community/react-native-circleci-orb/commit/2d614fa))\n\n## [4.1.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.1.0...v4.1.1) (2020-04-20)\n\n\n### Bug Fixes\n\n* **ios:** Possible fix for the NVM node version not carrying over between steps ([#51](https://github.com/react-native-community/react-native-circleci-orb/issues/51)) ([ae71c53](https://github.com/react-native-community/react-native-circleci-orb/commit/ae71c53))\n\n# [4.1.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.0.4...v4.1.0) (2020-04-03)\n\n\n### Features\n\n* **ios:** Add Cocoapods Install Command ([#48](https://github.com/react-native-community/react-native-circleci-orb/issues/48) by [@vonovak](https://github.com/vonovak)) ([a743bbc](https://github.com/react-native-community/react-native-circleci-orb/commit/a743bbc))\n\n## [4.0.4](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.0.3...v4.0.4) (2020-04-03)\n\n\n### Bug Fixes\n\n* Mac node install ([#47](https://github.com/react-native-community/react-native-circleci-orb/issues/47) by [@vonovak](https://github.com/vonovak)) ([4a4b619](https://github.com/react-native-community/react-native-circleci-orb/commit/4a4b619))\n\n## [4.0.3](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.0.2...v4.0.3) (2020-04-02)\n\n\n### Bug Fixes\n\n* Ensure that the publish steps works correctly ([7e6c289](https://github.com/react-native-community/react-native-circleci-orb/commit/7e6c289))\n\n## [4.0.2](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.0.1...v4.0.2) (2020-04-02)\n\n\n### Bug Fixes\n\n* Ensure the CI works correctly ([51d7f49](https://github.com/react-native-community/react-native-circleci-orb/commit/51d7f49))\n\n## [4.0.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v4.0.0...v4.0.1) (2020-04-02)\n\n\n### Bug Fixes\n\n* **android:** Define a max heap size for linux_android ([#46](https://github.com/react-native-community/react-native-circleci-orb/issues/46) by [@vabanagas](https://github.com/vabanagas)) ([d029e0b](https://github.com/react-native-community/react-native-circleci-orb/commit/d029e0b))\n\n# [4.0.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v3.0.1...v4.0.0) (2020-03-31)\n\n\n### Features\n\n* **ios:** Upgrading Xcode to 11.0 ([#45](https://github.com/react-native-community/react-native-circleci-orb/issues/45) by [@springcoil](https://github.com/springcoil)) ([78aad72](https://github.com/react-native-community/react-native-circleci-orb/commit/78aad72))\n\n\n### BREAKING CHANGES\n\n* **ios:** You should confirm that your app is able to build on Xcode 11 before upgrade, however, most app will already support this.\n\n## [3.0.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v3.0.0...v3.0.1) (2020-02-03)\n\n\n### Bug Fixes\n\n* Fix errors when installing NodeJS on MacOS executor ([#40](https://github.com/react-native-community/react-native-circleci-orb/issues/40) by [@roni-castro](https://github.com/roni-castro)) ([19ac8f7](https://github.com/react-native-community/react-native-circleci-orb/commit/19ac8f7))\n\n# [3.0.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v2.0.1...v3.0.0) (2020-01-26)\n\n\n### Features\n\n* Use Node 10 by default ([#37](https://github.com/react-native-community/react-native-circleci-orb/issues/37) by [@roni-castro](https://github.com/roni-castro)) ([3e7efc6](https://github.com/react-native-community/react-native-circleci-orb/commit/3e7efc6))\n\n\n### BREAKING CHANGES\n\n* Node 10 is now the default version. The previous default of Node 8 is now end-of-life. Most users will have no issues with upgrading unless they use modules which rely on Node 8 behaviour. You can also now use the `node_version` parameter to set the Node version you require.\n\n## [2.0.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v2.0.0...v2.0.1) (2020-01-04)\n\n\n### Bug Fixes\n\n* Removed the unused `build_threads` parameter in the `linux_android` executor ([97720b9](https://github.com/react-native-community/react-native-circleci-orb/commit/97720b9)), closes [#19](https://github.com/react-native-community/react-native-circleci-orb/issues/19)\n\n# [2.0.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v1.5.0...v2.0.0) (2020-01-04)\n\n\n### Features\n\n* Added the `--frozen-lockfile` flag to the `yarn_install` command ([e4676c4](https://github.com/react-native-community/react-native-circleci-orb/commit/e4676c4)), closes [#28](https://github.com/react-native-community/react-native-circleci-orb/issues/28)\n\n\n### BREAKING CHANGES\n\n* The `yarn_install` command will now fail if there need to be changes made to your `yarn.lock` file. See [the Yarn documentation](https://yarnpkg.com/en/docs/cli/install#toc-yarn-install-frozen-lockfile) for details on this flag.\n\n# [1.5.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v1.4.0...v1.5.0) (2020-01-04)\n\n\n### Features\n\n* Add `on_after_initialize` parameter to the jobs ([#26](https://github.com/react-native-community/react-native-circleci-orb/issues/26) by [@compojoom](https://github.com/compojoom)) ([0ff6621](https://github.com/react-native-community/react-native-circleci-orb/commit/0ff6621))\n* Add a `bundle` command ([#8](https://github.com/react-native-community/react-native-circleci-orb/issues/8) by [@sunilchalla](https://github.com/sunilchalla)) ([464d661](https://github.com/react-native-community/react-native-circleci-orb/commit/464d661))\n\n# [1.4.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v1.3.0...v1.4.0) (2020-01-04)\n\n\n### Features\n\n* **ios:** Added an `ios_build` job ([#30](https://github.com/react-native-community/react-native-circleci-orb/issues/30) by [@roni-castro](https://github.com/roni-castro)) ([b607782](https://github.com/react-native-community/react-native-circleci-orb/commit/b607782))\n\n# [1.3.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v1.2.1...v1.3.0) (2019-11-20)\n\n\n### Bug Fixes\n\n* **android:** Update gradle cache keys to match on save and restore ([#17](https://github.com/react-native-community/react-native-circleci-orb/issues/17)) ([6e52052](https://github.com/react-native-community/react-native-circleci-orb/commit/6e52052))\n* **docs:** include the code repo link in the orb description ([6d97ca9](https://github.com/react-native-community/react-native-circleci-orb/commit/6d97ca9))\n* Remove FBSimulatorControl ([#24](https://github.com/react-native-community/react-native-circleci-orb/issues/24) by [@compojoom](https://github.com/compojoom)) ([7c5b51a](https://github.com/react-native-community/react-native-circleci-orb/commit/7c5b51a))\n* remove haxm the lack hardware acceleration support causes a crash ([9d0bb42](https://github.com/react-native-community/react-native-circleci-orb/commit/9d0bb42))\n* remove haxm the lack hardware acceleration support causes a crash ([38ef88e](https://github.com/react-native-community/react-native-circleci-orb/commit/38ef88e)), closes [#3](https://github.com/react-native-community/react-native-circleci-orb/issues/3)\n\n\n### Features\n\n* Minor release ([5f401d7](https://github.com/react-native-community/react-native-circleci-orb/commit/5f401d7))\n\n## [1.2.2](https://github.com/react-native-community/react-native-circleci-orb/compare/v1.2.1...v1.2.2) (2019-10-25)\n\n\n### Bug Fixes\n\n* remove haxm the lack hardware acceleration support causes a crash ([9d0bb42](https://github.com/react-native-community/react-native-circleci-orb/commit/9d0bb42))\n* remove haxm the lack hardware acceleration support causes a crash ([38ef88e](https://github.com/react-native-community/react-native-circleci-orb/commit/38ef88e)), closes [#3](https://github.com/react-native-community/react-native-circleci-orb/issues/3)\n\n## [1.2.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v1.2.0...v1.2.1) (2019-06-03)\n\n\n### Bug Fixes\n\n* Use project_type in ios_build_and_test job ([25c7948](https://github.com/react-native-community/react-native-circleci-orb/commit/25c7948))\n\n# [1.2.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v1.1.2...v1.2.0) (2019-05-14)\n\n\n### Features\n\n* Allow the metro packager to be started from the test jobs ([68846df](https://github.com/react-native-community/react-native-circleci-orb/commit/68846df))\n\n## [1.1.2](https://github.com/react-native-community/react-native-circleci-orb/compare/v1.1.1...v1.1.2) (2019-05-14)\n\n\n### Bug Fixes\n\n* Correct the Android java environment variables ([917129a](https://github.com/react-native-community/react-native-circleci-orb/commit/917129a))\n\n## [1.1.1](https://github.com/react-native-community/react-native-circleci-orb/compare/v1.1.0...v1.1.1) (2019-05-14)\n\n\n### Bug Fixes\n\n* Increase the amount of memory for Android builds ([22e8279](https://github.com/react-native-community/react-native-circleci-orb/commit/22e8279))\n\n# [1.1.0](https://github.com/react-native-community/react-native-circleci-orb/compare/v1.0.0...v1.1.0) (2019-04-25)\n\n\n### Features\n\n* Add parameters to configure the executors ([7c044cb](https://github.com/react-native-community/react-native-circleci-orb/commit/7c044cb))\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2019-present\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# React Native CircleCI Orb\n\n[![CircleCI Orb][orb-version-badge]][orb-page]\n\nA [CircleCI Orb](https://circleci.com/orbs/) to simplify testing your React Native app.\n\n## Why?\nSetting up CircleCI to test your React Native app correctly is hard. You need to consider using the correct machine type, installing the correct dependencies, running the correct commands, and correctly setting up caching to speed up builds. All of this is complicated and involves a lot of trial and error.\n\nWith this Orb we provide simple reusable building blocks which you can use to do the right thing easily.\n\n## Overview\nFirst, we recommend reading the [Using Orbs](https://circleci.com/docs/2.0/using-orbs/) guide from the CircleCI documentation to get an overview of how to use Orbs.\n\nThis Orb provides three different categories of tools to help you build and test your React Native app on CircleCI:\n\n* **Executors**: Machines which are configured for use with React Native.\n* **Commands**: Individual tasks which you can piece together in your own jobs to perform tasks like installing dependencies, building an APK, or running Detox tests.\n* **Jobs**: Groups of commands which are typically used together as a stage in a pipeline.\n\n## Setup\nFirstly, as this is a 3rd Party Orb, you need to go into your organisations settings, press on \"Security\", and enable usage of 3rd Party Orbs.\n\nYou will also need to ensure that you have a MacOS plan enabled if you want to build and test your iOS app, or if you want to test your Android app. Open Source projects can contact CircleCI to ask them to enable it and private projects need to select a payment plan.\n\n## Documentation\n[You can read the full documentation here](https://circleci.com/orbs/registry/orb/react-native-community/react-native).\n\n## Android\n\nAdd this task in your <example>/app/build.gradle\n\n```gradle\ntask downloadDependencies() {\n  description 'Download all dependencies to the Gradle cache'\n  doLast {\n    configurations.findAll().each { config ->\n      if (config.name.contains(\"minReactNative\") && config.canBeResolved) {\n        print config.name\n        print '\\n'\n        config.files\n      }\n    }\n  }\n}\n```\n\n## Example\n\nHere is a full example of how the Orb can be used in a CircleCI workflow to build and test a React Native app:\n\n```yaml\n# Orb support is from version >= 2.1\nversion: 2.1\n\n# Make sure you use the latest version of the Orb!\norbs:\n  rn: react-native-community/react-native@7.1.0\n\n# Custom jobs which are not part of the Orb\njobs:\n  checkout_code:\n    executor: rn/linux_js\n    steps:\n      - checkout\n      - persist_to_workspace:\n          root: .\n          paths: .\n  analyse_js:\n    executor: rn/linux_js\n    steps:\n      - attach_workspace:\n          at: .\n      - rn/yarn_install\n      - run:\n          name: Run ESLint\n          command: yarn eslint\n      - run:\n          name: Flow\n          command: yarn flow\n      - run:\n          name: Jest\n          command: yarn jest\n\nworkflows:\n  test:\n    jobs:\n      # Checkout the code and persist to the Workspace\n      # Note: This is a job which is defined above and not part of the Orb\n      - checkout_code\n\n      # Analyze the Javascript using ESLint, Flow, and Jest\n      # Note: This is a job which is defined above and not part of the Orb\n      - analyse_js:\n          requires:\n            - checkout_code\n\n      # Build the Android app in debug mode\n      - rn/android_build:\n          name: build_android_debug\n          project_path: \"android\"\n          build_type: debug\n          requires:\n            - analyse_js\n\n      # Build and test the Android app in release mode\n      # Note: We split these into seperate jobs because we can build the Android app on a Linux machine and preserve the expensive MacOS executor minutes for when it's required\n      - rn/android_build:\n          name: build_android_release\n          project_path: \"android\"\n          build_type: release\n          requires:\n            - analyse_js\n      - rn/android_test:\n          detox_configuration: \"android.emu.release\"\n          requires:\n            - build_android_release\n\n\n      # Build the iOS app in release mode and do not run tests\n      - rn/ios_build:\n          name: build_ios_release\n          project_path: ios/Example.xcodeproj\n          device: \"iPhone 11\"\n          build_configuration: Release\n          scheme: Example\n          requires:\n            - analyse_js\n\n      # Build and test the iOS app in release mode\n      - rn/ios_build_and_test:\n          project_path: \"ios/Example.xcodeproj\"\n          device: \"iPhone 11\"\n          build_configuration: \"Release\"\n          scheme: \"Example\"\n          detox_configuration: \"ios.sim.release\"\n          requires:\n            - analyse_js\n```\n\nThis is what the final workflow will look like:\n\n![Example React Native CircleCI Orb Workflow](.github/example_workflow.png)\n\n## License\nThe Orb is released under the MIT license. For more information see [`LICENSE`](https://github.com/react-native-community/react-native-circleci-orb/blob/main/LICENSE).\n\n[orb-version-badge]:https://badges.circleci.com/orbs/react-native-community/react-native.svg\n[orb-page]:https://circleci.com/orbs/registry/orb/react-native-community/react-native\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"@react-native-community/circleci-orb\",\n  \"version\": \"8.0.1\",\n  \"private\": true,\n  \"description\": \"A CircleCI Orb which can be used to simplify building and testing React Native apps.\",\n  \"scripts\": {\n    \"semantic-release\": \"semantic-release\"\n  },\n  \"devDependencies\": {\n    \"@semantic-release/changelog\": \"^6.0.3\",\n    \"@semantic-release/git\": \"^10.0.1\",\n    \"semantic-release\": \"^19.0.3\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/react-native-community/react-native-circleci-orb.git\"\n  },\n  \"author\": \"Matt Oakes <hello@mattoakes.net>\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/react-native-community/react-native-circleci-orb/issues\"\n  },\n  \"homepage\": \"https://github.com/react-native-community/react-native-circleci-orb#readme\"\n}\n"
  },
  {
    "path": "src/@orb.yml",
    "content": "version: 2.1\n\ndescription: |\n  Orb for building and testing React Native projects.\n\ndisplay:\n  source_url: \"https://github.com/react-native-community/react-native-circleci-orb\"\n"
  },
  {
    "path": "src/commands/android_build.yml",
    "content": "description: Builds the Android app at the given path with the given build types. This should be run only after installing dependencies.\n\nparameters:\n  project_path:\n    description: The path to the root of the Android project you want to build, relative to the root of the repository.\n    type: string\n    default: \"./android\"\n  build_type:\n    description: The build type to build. This is normally either \"debug\" or \"release\" but you may have custom build types configured for your app.\n    type: string\n    default: \"debug\"\n  cache:\n    description: Save and restore the caches? Defaults to true\n    type: boolean\n    default: true\n  assemble_android_test:\n    description: Configure the android tests to run. Defaults to assembleAndroidTest but you might want to set to app:assembleAndroidTest if that works for your project\n    type: string\n    default: assembleAndroidTest\n\nsteps:\n  - when:\n      condition: <<parameters.cache>>\n      steps:\n        - run:\n            name: Create cache checksum files\n            command: |\n              mkdir -p ~/.tmp/checksumfiles\n              find . -type f -name 'build.gradle' -not -path \"*node_modules*\" -exec cat {} + >> ~/.tmp/checksumfiles/build.gradle\n              find . -type f -name 'settings.gradle' -not -path \"*node_modules*\" -exec cat {} + >> ~/.tmp/checksumfiles/settings.gradle\n\n        - restore_cache:\n            keys:\n              - gradle-wrapper-{{ arch }}-{{ checksum \"<<parameters.project_path>>/gradle/wrapper/gradle-wrapper.properties\" }}-{{ .Environment.CACHE_VERSION }}\n\n        - restore_cache:\n            keys:\n              - gradle-home-cache-{{ arch }}-{{ checksum \"~/.tmp/checksumfiles/build.gradle\" }}-{{ checksum \"~/.tmp/checksumfiles/settings.gradle\" }}-{{ .Environment.CACHE_VERSION }}\n\n        - restore_cache:\n            name: Restoring Gradle Build caches\n            keys:\n              - gradle-build-cache-{{ .Revision }}\n\n  - run:\n      name: Dispersing Gradle Build caches for restoring\n      command: |\n        [ -d ~/gradle-build-caches ] &&\n          [ -n \"$(ls -A ~/gradle-build-caches)\" ] &&\n          rm -rf ~/.gradle/caches/build-cache-* &&\n          mkdir -p ~/.gradle/caches/ &&\n          mv ~/gradle-build-caches/* ~/.gradle/caches/ || true\n\n  # download and cache dependencies and Gradle\n  - run:\n      name: Downloading Gradle Dependencies\n      command: \"cd <<parameters.project_path>> && chmod +x gradlew && ./gradlew --max-workers 2 downloadDependencies\"\n\n  - when:\n      condition: <<parameters.cache>>\n      steps:\n        - save_cache:\n            name: Saving Gradle wrapper cache\n            paths:\n              - ~/.gradle/wrapper/\n            key: gradle-wrapper-{{ arch }}-{{ checksum \"<<parameters.project_path>>/gradle/wrapper/gradle-wrapper.properties\" }}-{{ .Environment.CACHE_VERSION }}\n\n        - save_cache:\n            name: Saving Gradle home cache\n            paths:\n              - ~/.gradle/caches/\n            key: gradle-home-cache-{{ arch }}-{{ checksum \"~/.tmp/checksumfiles/build.gradle\" }}-{{ checksum \"~/.tmp/checksumfiles/settings.gradle\" }}-{{ .Environment.CACHE_VERSION }}\n\n  - run:\n      name: Build Android APK\n      command: \"cd <<parameters.project_path>> && chmod +x gradlew && ./gradlew --build-cache --max-workers 2 --continue assemble<<parameters.build_type>> <<parameters.assemble_android_test>> -DtestBuildType=<<parameters.build_type>> --stacktrace\"\n\n  - when:\n      condition: <<parameters.cache>>\n      steps:\n        - run:\n            name: Collecting Gradle Build caches for saving\n            command: |\n              mkdir -p ~/gradle-build-caches\n              [ -d ~/.gradle/caches ] &&\n                [ -n \"$(ls -Ad ~/.gradle/caches/build-cache-* 2>/dev/null)\" ] &&\n                rm -rf ~/gradle-build-caches/* &&\n                mv ~/.gradle/caches/build-cache-* ~/gradle-build-caches || true\n            when: always\n\n        - save_cache:\n            name: Saving Gradle Build caches\n            paths:\n              - ~/gradle-build-caches\n            key: gradle-build-cache-{{ .Revision }}\n            when: always\n"
  },
  {
    "path": "src/commands/android_emulator_start.yml",
    "content": "description: Installs and starts an Android emulator with the given version and name.\n\nparameters:\n  device_name:\n    description: The name of the AVD. You use this name to tell which device to run tests on.\n    type: string\n    default: \"TestingAVD\"\n  platform_version:\n    description: The version of android to run on the emulator. Usually in the form of \"android-28\".\n    type: string\n    default: \"android-28\"\n  build_tools_version:\n    description: The version of the Android build tools to install.\n    type: string\n    default: \"28.0.3\"\n  logcat_grep:\n    description: ADB logs will be shown in the \"Start Android Emulator\" commands, but we filter it using grep to avoid noise. You can specify additional strings to grep for. Make sure you escape special characters.\n    type: string\n    default: \"com.reactnativecommunity\"\n\nsteps:\n  - run:\n      name: Install Android Emulator\n      shell: /bin/bash -e\n      command: |\n        yes | sdkmanager \"platform-tools\" \"tools\" >/dev/null\n        yes | sdkmanager \"platforms;<<parameters.platform_version>>\" \"system-images;<<parameters.platform_version>>;default;x86_64\" >/dev/null\n        yes | sdkmanager \"emulator\" --channel=3 >/dev/null\n        yes | sdkmanager \"build-tools;<<parameters.build_tools_version>>\" >/dev/null\n        yes | sdkmanager --licenses >/dev/null\n        yes | sdkmanager --list\n\n  # to force ssh key generation for emulators\n  - run:\n      name: ADB Start Stop\n      command: |\n        adb start-server\n        adb devices\n        adb kill-server\n        ls -la ~/.android\n\n  - run:\n      name: Create Android Emulator\n      command:\n        avdmanager create avd --force --name <<parameters.device_name>> --package\n        \"system-images;<<parameters.platform_version>>;default;x86_64\" --tag\n        default --device pixel\n\n  - run:\n      name: Start Android Emulator (background)\n      command: |\n        $ANDROID_HOME/emulator/emulator @<<parameters.device_name>> -version\n        $ANDROID_HOME/emulator/emulator @<<parameters.device_name>> -cores 1 -gpu auto -accel on -memory 1024 -no-audio -no-snapshot -no-boot-anim -no-window -logcat *:W | grep -i 'ReactNative\\|<<parameters.logcat_grep>>'\n      background: true\n\n  - run:\n      name: Wait for AVD to be ready\n      no_output_timeout: \"5m\"\n      command: |\n        export BOOT=\"\"\n        echo \"Waiting for AVD to finish booting\"\n        export PATH=$(dirname $(dirname $(command -v android)))/platform-tools:$PATH\n        until [[ \"$BOOT\" =~ \"1\" ]]; do\n          sleep 5\n          export BOOT=$(adb -e shell getprop sys.boot_completed 2>&1)\n        done\n        sleep 15\n        adb shell settings put global window_animation_scale 0\n        adb shell settings put global transition_animation_scale 0\n        adb shell settings put global animator_duration_scale 0\n        echo \"Android Virtual Device is now ready.\"\n"
  },
  {
    "path": "src/commands/bundle.yml",
    "content": "description: Bundles all JS files.\n\nparameters:\n  platform:\n    description: The platform to build for. Usually one of \"ios\" or \"android\".\n    type: string\n  bundle_output:\n    description: The location to output the bundle to.\n    type: string\n  asset_dest:\n    description: The location to output assets to.\n    type: string\n  entry_file:\n    description: The entry file for the bundle. Defaults to \"index.js\".\n    type: string\n    default: \"index.js\"\n  dev:\n    description: If we should bundle in dev mode. Defaults to \"false\"\n    type: boolean\n    default: false\n\nsteps:\n  - run:\n      name: Bundle React Native JS\n      command: react-native bundle --platform <<parameters.platform>> --bundle-output <<parameters.bundle_output>> --assets-dest <<parameters.asset_dest>> --entry-file <<parameters.entry_file>> --dev <<parameters.dev>>\n"
  },
  {
    "path": "src/commands/detox_build.yml",
    "content": "description: Builds the app with the given Detox configuration, as specified in package.json.\n\nparameters:\n  configuration:\n    description: The Detox configuration to build.\n    type: string\n\nsteps:\n  - run:\n      name: Detox Build\n      command: detox build -c <<parameters.configuration>>\n"
  },
  {
    "path": "src/commands/detox_test.yml",
    "content": "description: Tests the app with the given Detox configuration, as specified in package.json.\n\nparameters:\n  configuration:\n    description: The Detox configuration to test.\n    type: string\n  loglevel:\n    description: The Detox logging level to use. Must be one of \"fatal\", \"error\", \"warn\", \"info\", \"verbose\", or \"trace\".\n    type: enum\n    enum: [\"fatal\", \"error\", \"warn\", \"info\", \"verbose\", \"trace\"]\n    default: warn\n\nsteps:\n  - run:\n      name: Detox Test\n      command: detox test -c <<parameters.configuration>> -l <<parameters.loglevel>> --headless\n"
  },
  {
    "path": "src/commands/ios_build.yml",
    "content": "description: Builds the iOS app at the given path with the given build scheme and configuration. This should be run only after installing NPM dependencies.\n\nparameters:\n  project_type:\n    description: If the iOS app is built using a project file (*.xcodeproj) or a workspace.\n    type: enum\n    enum: [\"project\", \"workspace\"]\n    default: \"project\"\n  project_path:\n    description: The path to the Xcode project (*.xcodeproj) or the Xcode workspace (*.xcworkspace) that you want to build, relative to the root of the repository.\n    type: string\n  build_configuration:\n    description: The build configuration to use. This is normally either \"Debug\" or \"Release\" but you may have custom build configuration configured for your app.\n    type: string\n    default: \"Debug\"\n  derived_data_path:\n    description: The path to the directory to place the derived data, relative to the root of the repository.\n    type: string\n    default: \"ios/build\"\n  device:\n    description: The name of device you want to build for.\n    type: string\n    default: \"iPhone 11\"\n  device_id:\n    description: UUID of device you want to build for.\n    type: string\n    default: \"\"\n  device_os:\n    description: OS of device you want to build for, e.g 18.5.\n    type: string\n    default: \"\"\n  scheme:\n    description: The scheme to use.\n    type: string\n  cache:\n    description: Save and restore the build cache? Defaults to true\n    type: boolean\n    default: true\n\nsteps:\n  - when:\n      condition: <<parameters.cache>>\n      steps:\n        - restore_cache:\n            name: Restoring iOS Build caches\n            keys:\n              - ios-build-cache-{{ arch }}-{{ checksum \"~/.tmp/checksumfiles/package.json\" }}-{{ .Environment.CACHE_VERSION }}\n\n  - run:\n      name: Build iOS App\n      command: |\n        DESTINATION=\"platform=iOS Simulator,name=<<parameters.device>>\"\n        if [ \"<<parameters.device_id>>\" != \"\" ]; then\n          DESTINATION=\"${DESTINATION},id=<<parameters.device_id>>\"\n        fi\n        if [ \"<<parameters.device_os>>\" != \"\" ]; then\n          DESTINATION=\"${DESTINATION},OS=<<parameters.device_os>>\"\n        fi\n        export RCT_NO_LAUNCH_PACKAGER=true\n        xcodebuild -<<parameters.project_type>> <<parameters.project_path>> -destination \"${DESTINATION}\" -scheme '<<parameters.scheme>>' -parallelizeTargets -configuration <<parameters.build_configuration>> -derivedDataPath <<parameters.derived_data_path>> -UseModernBuildSystem=YES | xcpretty -k\n\n  - when:\n      condition: <<parameters.cache>>\n      steps:\n        - save_cache:\n            name: Saving iOS Build Cache\n            paths:\n              - <<parameters.derived_data_path>>/Build\n            key: ios-build-cache-{{ arch }}-{{ checksum \"~/.tmp/checksumfiles/package.json\" }}-{{ .Environment.CACHE_VERSION }}\n            when: always\n"
  },
  {
    "path": "src/commands/ios_simulator_start.yml",
    "content": "description: Starts an iOS simulator with the given name.\n\nparameters:\n  device:\n    description: The type of device you want to start.\n    type: string\n    default: \"iPhone 11\"\n  background:\n    default: true\n    description: Should ios simulator boot in background?\n    type: boolean\n\nsteps:\n  - run:\n      name: Start iOS simulator (background)\n      background: <<parameters.background>>\n      command: xcrun simctl boot \"<<parameters.device>>\" || true\n"
  },
  {
    "path": "src/commands/metro_start.yml",
    "content": "description: Starts the Metro packager.\n\nsteps:\n  - run:\n      name: Start Metro Packager (Background)\n      background: true\n      command: react-native start\n"
  },
  {
    "path": "src/commands/ndk_update.yml",
    "content": "description: Update Android NDK\n\nparameters:\n  version:\n    type: string\n    default: 22.1.7171670\n\nsteps:\n  - run:\n      name: Update Android NDK\n      command: sdkmanager \"ndk;<<parameters.version>>\"\n"
  },
  {
    "path": "src/commands/pod_install.yml",
    "content": "description: install pods\n\n# note: do not use the --project-directory pod param because many example\n# projects in the rn community repos rely on pod install to be run from ios directory\n# instead cd into the folder and then back\n\nparameters:\n  pod_install_directory:\n    type: string\n    default: \"ios\"\n    description: The location of the \"ios\" directory\n  pod_install_command:\n    type: string\n    default: \"pod install\"\n    description: The command to run to install pods\n  cache:\n    description: Save and restore the cache? Defaults to true\n    type: boolean\n    default: true\n\nsteps:\n  - when:\n      condition: <<parameters.cache>>\n      steps:\n        - restore_cache:\n            keys:\n              - '{{ .Environment.CACHE_VERSION }}-cache-pods-{{ checksum \"<<parameters.pod_install_directory>>/Podfile.lock\" }}'\n  - run:\n      name: Install CocoaPods\n      command: |\n        cd <<parameters.pod_install_directory>> && eval <<parameters.pod_install_command>> && cd -\n  - when:\n      condition: <<parameters.cache>>\n      steps:\n        - save_cache:\n            paths:\n              - <<parameters.pod_install_directory>>/Pods\n            key: '{{ .Environment.CACHE_VERSION }}-cache-pods-{{ checksum \"<<parameters.pod_install_directory>>/Podfile.lock\" }}'\n"
  },
  {
    "path": "src/commands/setup_macos_executor.yml",
    "content": "description: Installs the required packages to build and test Android and iOS applications on the MacOS executor. You need to run this before running any other command on those executors.\n\nparameters:\n  node_version:\n    description: The version of Node to use. This can be either a major version (\"8\"), a major and minor (\"8.4\"), or a fully qualified version (\"8.4.1\").\n    type: string\n    default: \"16\"\n  homebrew_cache:\n    description: Should we cache after brew install? Defaults to true\n    type: boolean\n    default: true\n  homebrew_update:\n    description: Should we run brew update? Defaults to true\n    type: boolean\n    default: true\n  android:\n    description: Should we set up the Android build environment? Defaults to true\n    type: boolean\n    default: true\n  detox:\n    description: Should we set up Detox? Defaults to true\n    type: boolean\n    default: true\n\nsteps:\n  - run:\n      name: Configure Environment Variables\n      command: |\n        echo 'export PATH=\"$PATH:/usr/local/opt/node@<<parameters.node_version>>/bin:~/.yarn/bin:~/project/node_modules/.bin:~/project/example/node_modules/.bin\"' >> $BASH_ENV\n        echo 'export ANDROID_HOME=\"/usr/local/share/android-commandlinetools\"' >> $BASH_ENV\n        echo 'export ANDROID_SDK_ROOT=\"/usr/local/share/android-commandlinetools\"' >> $BASH_ENV\n        echo 'export PATH=\"$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:$PATH\"' >> $BASH_ENV\n        echo 'export QEMU_AUDIO_DRV=none' >> $BASH_ENV\n        echo 'export JAVA_HOME=$(/usr/libexec/java_home)' >> $BASH_ENV\n        source $BASH_ENV\n\n  - when:\n      condition: <<parameters.homebrew_cache>>\n      steps:\n        - restore_cache:\n            key: brew-cache-{{ arch }}-{{ .Environment.CACHE_VERSION }}\n\n  - run:\n      name: Install node@<<parameters.node_version>>\n      # after `curl`, bashrc contains the script to load nvm, we need to source it to use it\n      command: |\n        set +e\n        curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.3/install.sh | bash\n        echo 'export NVM_DIR=$HOME/.nvm' >> $BASH_ENV\n        echo 'source $NVM_DIR/nvm.sh' >> $BASH_ENV\n        source ~/.bashrc\n        command -v nvm\n        nvm install <<parameters.node_version>>\n        nvm alias default <<parameters.node_version>>\n  - run:\n      name: Verify node version\n      command: node --version\n\n  - when:\n      condition: <<parameters.homebrew_update>>\n      steps:\n        - run:\n            name: Update brew\n            command: brew update >/dev/null\n\n  - when:\n      condition: <<parameters.android>>\n      steps:\n        run:\n          name: Configure Android Build Environment\n          command: |\n            HOMEBREW_NO_AUTO_UPDATE=1 brew tap homebrew/cask >/dev/null\n            HOMEBREW_NO_AUTO_UPDATE=1 brew install android-commandlinetools >/dev/null\n\n  - when:\n      condition: <<parameters.detox>>\n      steps:\n        run:\n          name: Configure Detox Environment\n          command: |\n            HOMEBREW_NO_AUTO_UPDATE=1 brew tap wix/brew >/dev/null\n            HOMEBREW_NO_AUTO_UPDATE=1 brew install applesimutils >/dev/null\n\n  - when:\n      condition: <<parameters.homebrew_cache>>\n      steps:\n        - save_cache:\n            paths:\n              - ~/Library/Caches/Homebrew\n            key: brew-cache-{{ arch }}-{{ .Environment.CACHE_VERSION }}\n"
  },
  {
    "path": "src/commands/yarn_install.yml",
    "content": "description: Install Javascript dependencies using Yarn. This command correctly configures the cache for any number of package.json and yarn.lock files.\n\nparameters:\n  cache:\n    description: Save and restore the build cache? Defaults to true\n    type: boolean\n    default: true\n  cache_folder:\n    description: The path to the yarn cache folder.  Defaults to /tmp/yarn\n    type: string\n    default: \"/tmp/yarn\"\n  yarn_install_directory:\n    description: The working directory to run install at. Defaults to yarn's current working directory\n    type: string\n    default: \"\"\n\nsteps:\n  - when:\n      condition: <<parameters.cache>>\n      steps:\n        - run:\n            name: Create cache checksum file\n            command: |\n              mkdir -p ~/.tmp/checksumfiles\n              find . -type f -name 'package.json' -not -path \"*node_modules*\" -exec cat {} + >> ~/.tmp/checksumfiles/package.json\n              find . -type f -name 'yarn.lock' -not -path \"*node_modules*\" -exec cat {} + >> ~/.tmp/checksumfiles/yarn.lock\n        - restore_cache:\n            keys:\n              - yarn-cache-{{ arch }}-{{ checksum \"~/.tmp/checksumfiles/package.json\" }}-{{ checksum \"~/.tmp/checksumfiles/yarn.lock\" }}-{{ .Environment.CACHE_VERSION }}\n  - when:\n      condition:\n        equal: [\"\", <<parameters.yarn_install_directory>>]\n      steps:\n        - run:\n            name: Yarn Install\n            command: \"yarn install --frozen-lockfile --non-interactive --cache-folder <<parameters.cache_folder>>\"\n  - unless:\n      condition:\n        equal: [\"\", <<parameters.yarn_install_directory>>]\n      steps:\n        - run:\n            name: Yarn Install (<<parameters.yarn_install_directory>>)\n            command: \"yarn --cwd <<parameters.yarn_install_directory>> install --frozen-lockfile --non-interactive --cache-folder <<parameters.cache_folder>>\"\n  - when:\n      condition: <<parameters.cache>>\n      steps:\n        - save_cache:\n            paths:\n              - <<parameters.cache_folder>>\n            key: yarn-cache-{{ arch }}-{{ checksum \"~/.tmp/checksumfiles/package.json\" }}-{{ checksum \"~/.tmp/checksumfiles/yarn.lock\" }}-{{ .Environment.CACHE_VERSION }}\n"
  },
  {
    "path": "src/examples/android.yml",
    "content": "description: 'An example of how to build, test, and release the Android app'\nusage:\n  # Orb support is from version >= 2.1\n  version: 2.1\n\n  # Make sure you use the latest version of the Orb\n  orbs:\n    rn: react-native-community/react-native@1.0.0\n\n  # Custom jobs which are not part of the Orb\n  jobs:\n    # A job to checkout and persist the code to the workspace\n    checkout_code:\n      executor: rn/linux_js\n      steps:\n        - checkout\n        - persist_to_workspace:\n            root: .\n            paths: .\n    # A job to test the JavaScript part of the app\n    analyse_js:\n      executor: rn/linux_js\n      steps:\n        - attach_workspace:\n            at: .\n        - rn/yarn_install\n        - run:\n            name: Run ESLint\n            command: yarn eslint\n        - run:\n            name: Flow\n            command: yarn flow\n        - run:\n            name: Jest\n            command: yarn jest\n    # A job to release the app through Fastlane\n    fastlane_release:\n      executor: rn/linux_js\n      steps:\n        - attach_workspace:\n            at: .\n        - rn/yarn_install\n        - run:\n            name: Run Fastlane\n            # Your Fastlane command goes here\n            command: bundle exec fastlane android release\n\n  workflows:\n    test:\n      jobs:\n        # Checkout the code and persist to the Workspace\n        # Note: This is a job which is defined above and not part of the Orb\n        - checkout_code\n\n        # Analyze the Javascript using ESLint, Flow, and Jest\n        # Note: This is a job which is defined above and not part of the Orb\n        - analyse_js:\n            requires:\n              - checkout_code\n\n        # Build and test the Android app in release mode\n        # Note: We split these into seperate jobs because we can build the Android app on a Linux machine and preserve the expensive MacOS executor minutes for when it's required\n        - rn/android_build:\n            build_type: release\n            requires:\n              - analyse_js\n        - rn/android_test:\n            requires:\n              - rn/android_build\n\n        # Release the app using our Fastlane job\n        # Note: This is a job which is defined above and not part of the Orb\n        - fastlane_release:\n            requires:\n              - rn/android_test\n"
  },
  {
    "path": "src/examples/full.yml",
    "content": "description: 'A full setup with a Javascript test job, leading to Detox build and test jobs, and finally releasing the apps using a Fastlane command'\nusage:\n  # Orb support is from version >= 2.1\n  version: 2.1\n\n  # Make sure you use the latest version of the Orb\n  orbs:\n    rn: react-native-community/react-native@1.0.0\n\n  # Custom jobs which are not part of the Orb\n  jobs:\n    checkout_code:\n      executor:\n        name: rn/linux_js\n        node_version: '16'\n      steps:\n        - checkout\n        - persist_to_workspace:\n            root: .\n            paths: .\n    analyse_js:\n      executor: rn/linux_js\n      steps:\n        - attach_workspace:\n            at: .\n        - rn/yarn_install\n        - run:\n            name: Run ESLint\n            command: yarn eslint\n        - run:\n            name: Flow\n            command: yarn flow\n        - run:\n            name: Jest\n            command: yarn jest\n    fastlane_android_release:\n      executor: rn/linux_js\n      steps:\n        - attach_workspace:\n            at: .\n        - rn/yarn_install\n        - run:\n            name: Run Fastlane\n            command: echo # Your Fastlane command goes here\n    fastlane_ios_release:\n      executor: rn/linux_js\n      steps:\n        - attach_workspace:\n            at: .\n        - rn/yarn_install\n        - run:\n            name: Run Fastlane\n            command: echo 1 # Your Fastlane command goes here\n\n  workflows:\n    test:\n      jobs:\n        # Checkout the code and persist to the Workspace\n        # Note: This is a job which is defined above and not part of the Orb\n        - checkout_code\n\n        # Analyze the Javascript using ESLint, Flow, and Jest\n        # Note: This is a job which is defined above and not part of the Orb\n        - analyse_js:\n            requires:\n              - checkout_code\n\n        # Build the Android app in debug mode\n        - rn/android_build:\n            name: build_android_debug\n            project_path: \"android\"\n            build_type: debug\n            requires:\n              - analyse_js\n\n        # Build and test the Android app in release mode\n        # Note: We split these into seperate jobs because we can build the Android app on a Linux machine and preserve the expensive MacOS executor minutes for when it's required\n        - rn/android_build:\n            name: build_android_release\n            project_path: \"android\"\n            build_type: release\n            requires:\n              - analyse_js\n        - rn/android_test:\n            detox_configuration: \"android.emu.release\"\n            requires:\n              - build_android_release\n\n        # Build the iOS app in release mode and do not run tests\n        - rn/ios_build:\n            name: build_ios_release\n            node_version: '12'\n            project_path: ios/Example.xcodeproj\n            device: \"iPhone 11\"\n            build_configuration: Release\n            scheme: Example\n            requires:\n              - analyse_js\n\n        # Build and test the iOS app in release mode\n        - rn/ios_build_and_test:\n            node_version: '12'\n            project_path: \"ios/Example.xcodeproj\"\n            device: \"iPhone 11\"\n            build_configuration: \"Release\"\n            scheme: \"Example\"\n            detox_configuration: \"ios.sim.release\"\n            requires:\n              - analyse_js\n\n        # Release the app on Android & iOS\n        - fastlane_android_release:\n            requires:\n              - rn/android_test\n        - fastlane_ios_release:\n            requires:\n              - rn/ios_build_and_test\n"
  },
  {
    "path": "src/examples/ios.yml",
    "content": "description: 'An example of how to build, test, and release the iOS app'\nusage:\n  # Orb support is from version >= 2.1\n  version: 2.1\n\n  # Make sure you use the latest version of the Orb\n  orbs:\n    rn: react-native-community/react-native@1.0.0\n\n  # Custom jobs which are not part of the Orb\n  jobs:\n    # A job to checkout and persist the code to the workspace\n    checkout_code:\n      executor: rn/linux_js\n      steps:\n        - checkout\n        - persist_to_workspace:\n            root: .\n            paths: .\n    # A job to test the JavaScript part of the app\n    analyse_js:\n      executor: rn/linux_js\n      steps:\n        - attach_workspace:\n            at: .\n        - rn/yarn_install\n        - run:\n            name: Run ESLint\n            command: yarn eslint\n        - run:\n            name: Flow\n            command: yarn flow\n        - run:\n            name: Jest\n            command: yarn jest\n    # A job to release the app through Fastlane\n    fastlane_release:\n      executor: rn/linux_js\n      steps:\n        - attach_workspace:\n            at: .\n        - rn/yarn_install\n        - run:\n            name: Run Fastlane\n            # Your Fastlane command goes here\n            command: bundle exec fastlane ios release\n\n  workflows:\n    test:\n      jobs:\n        # Checkout the code and persist to the Workspace\n        # Note: This is a job which is defined above and not part of the Orb\n        - checkout_code\n\n        # Analyze the Javascript using ESLint, Flow, and Jest\n        # Note: This is a job which is defined above and not part of the Orb\n        - analyse_js:\n            requires:\n              - checkout_code\n\n        # Build the iOS app in release mode and do not run tests\n        - rn/ios_build:\n            name: build_ios_release\n            project_path: ios/Example.xcodeproj\n            device: \"iPhone 11\"\n            build_configuration: Release\n            scheme: Example\n            requires:\n              - analyse_js\n\n        # Build and test the iOS app in release mode\n        - rn/ios_build_and_test:\n            project_path: \"ios/Example.xcodeproj\"\n            device: \"iPhone 11\"\n            build_configuration: \"Release\"\n            scheme: \"Example\"\n            detox_configuration: \"ios.sim.release\"\n            requires:\n              - analyse_js\n\n        # Release the app using our Fastlane job\n        # Note: This is a job which is defined above and not part of the Orb\n        - fastlane_release:\n            requires:\n              - rn/ios_build_and_test\n"
  },
  {
    "path": "src/executors/linux_android.yml",
    "content": "parameters:\n  gradle_options:\n    description: Gradle command options. Note that setting this will override the default options so you might need to supply those as well.\n    type: string\n    default: '-Xmx2014m -Dorg.gradle.daemon=false -Dorg.gradle.jvmargs=\"-XX:+UnlockExperimentalVMOptions -XX:+HeapDumpOnOutOfMemoryError\"'\n  build_image_version:\n    description: React Native Android build image version. For available veresions, see https://hub.docker.com/r/reactnativecommunity/react-native-android/tags\n    type: string\n    default: '5.1'\n  resource_class:\n    description: Changes the resource class of the executor. Requires a support request to enable the resource_class parameter. See https://circleci.com/docs/2.0/configuration-reference/#resource_class\n    type: string\n    default: medium\ndocker:\n  - image: reactnativecommunity/react-native-android:<<parameters.build_image_version>>\nresource_class: <<parameters.resource_class>>\nenvironment:\n  - GRADLE_OPTS: <<parameters.gradle_options>>\n"
  },
  {
    "path": "src/executors/linux_js.yml",
    "content": "parameters:\n  node_version:\n    description: The version of Node to use. This can be a full SemVer point release (such as 16.15.2), or just the minor release (such as 18.2), or a version alias. See https://circleci.com/developer/images/image/cimg/node#image-tags\n    type: string\n    default: '16.15'\n  resource_class:\n    description: Changes the resource class of the executor. Requires a support request to enable the resource_class parameter. See https://circleci.com/docs/2.0/configuration-reference/#resource_class\n    type: string\n    default: medium\ndocker:\n  - image: cimg/node:<<parameters.node_version>>\nresource_class: <<parameters.resource_class>>\n"
  },
  {
    "path": "src/executors/macos.yml",
    "content": "parameters:\n  xcode_version:\n    description: The version of Xcode to use. See here for the list of supported versions https://circleci.com/docs/2.0/testing-ios/#supported-xcode-versions\n    type: string\n    default: \"12.5.1\"\n  resource_class:\n    description: Changes the resource class of the executor. Requires a support request to enable the resource_class parameter. See https://circleci.com/docs/2.0/configuration-reference/#resource_class\n    type: string\n    default: medium\nmacos:\n  xcode: <<parameters.xcode_version>>\nresource_class: <<parameters.resource_class>>\n"
  },
  {
    "path": "src/jobs/android_build.yml",
    "content": "description: Builds the Android app at the given path with the given build types.\n\nparameters:\n  # For this job\n  checkout:\n    description: Boolean for whether or not to checkout as a first step. Default is false.\n    type: boolean\n    default: false\n  attach_workspace:\n    description: Boolean for whether or not to attach to an existing workspace. Default is true.\n    type: boolean\n    default: true\n  workspace_root:\n    description: Workspace root path that is either an absolute path or a path relative to the working directory. Defaults to '.' (the working directory).\n    type: string\n    default: .\n  persist_to_workspace:\n    description: Should this job persist files to a workspace? Defaults to true\n    type: boolean\n    default: true\n  store_artifacts:\n    description: Store this job store files as job artifacts? Defaults to true\n    type: boolean\n    default: true\n  yarn_cache:\n    description: Should we cache after yarn install? Defaults to true\n    type: boolean\n    default: true\n  on_after_initialize:\n    description: A custom command to run right after yarn install.\n    type: string\n    default: \"\"\n  # For the build command\n  project_path:\n    description: The path to the root of the Android project you want to build, relative to the root of the repository.\n    type: string\n    default: \"./android\"\n  build_type:\n    description: The build type to build. This is normally either \"debug\" or \"release\" but you may have custom build types configured for your app.\n    type: string\n    default: \"debug\"\n  build_cache:\n    description: Should we cache after Gradle build? Defaults to true\n    type: boolean\n    default: true\n  assemble_android_test:\n    description: Configure the android tests to run. Defaults to assembleAndroidTest\n    type: string\n    default: assembleAndroidTest\n  gradle_options:\n    description: Gradle command options. Note that setting this will override the default options so you might need to supply those as well.\n    type: string\n    default: '-Xmx2014m -Dorg.gradle.daemon=false -Dorg.gradle.jvmargs=\"-XX:+UnlockExperimentalVMOptions -XX:+HeapDumpOnOutOfMemoryError\"'\n  build_image_version:\n    description: React Native Android build image version. For available veresions, see https://hub.docker.com/r/reactnativecommunity/react-native-android/tags\n    type: string\n    default: '5.1'\n  resource_class:\n    description: Changes the resource class of the executor. Requires a support request to enable the resource_class parameter. See https://circleci.com/docs/2.0/configuration-reference/#resource_class\n    type: string\n    default: medium\n\nexecutor:\n  name: linux_android\n  gradle_options: <<parameters.gradle_options>>\n  build_image_version: <<parameters.build_image_version>>\n  resource_class: <<parameters.resource_class>>\n\nsteps:\n  - when:\n      condition: <<parameters.checkout>>\n      steps:\n        - checkout\n  - when:\n      condition: <<parameters.attach_workspace>>\n      steps:\n        - attach_workspace:\n            at: <<parameters.workspace_root>>\n  - yarn_install:\n      cache: <<parameters.yarn_cache>>\n  - when:\n      condition: <<parameters.on_after_initialize>>\n      steps:\n        - run:\n            name: \"on_after_initialize\"\n            command: <<parameters.on_after_initialize>>\n  - android_build:\n      project_path: <<parameters.project_path>>\n      build_type: <<parameters.build_type>>\n      cache: <<parameters.build_cache>>\n      assemble_android_test: <<parameters.assemble_android_test>>\n  - when:\n      condition: <<parameters.persist_to_workspace>>\n      steps:\n        - persist_to_workspace:\n            root: .\n            paths:\n              - <<parameters.project_path>>/app/build/outputs/apk\n  - when:\n      condition: <<parameters.store_artifacts>>\n      steps:\n        - store_artifacts:\n            path: <<parameters.project_path>>/app/build/outputs/apk\n"
  },
  {
    "path": "src/jobs/android_test.yml",
    "content": "description: Tests the Android app on the given device, with the given Detox configuration. You should have already built the correct Android APK (including the androidTest APK) and have both persisted to the worksapce.\n\nparameters:\n  # For this job\n  workspace_root:\n    description: Workspace root path that is either an absolute path or a path relative to the working directory. Defaults to '.' (the working directory).\n    type: string\n    default: .\n  start_metro:\n    description: If we should start the Metro packager in the background for this job.\n    type: boolean\n    default: false\n  yarn_cache:\n    description: Should we cache after yarn install? Defaults to true\n    type: boolean\n    default: true\n  # For the start emulator command\n  device_name:\n    description: The name of the AVD. You use this name to tell which device to run tests on. Defaults to 'TestingAVD'.\n    type: string\n    default: \"TestingAVD\"\n  platform_version:\n    description: The version of android to run on the emulator. Defaults to 'android-28'.\n    type: string\n    default: \"android-28\"\n  build_tools_version:\n    description: The version of the Android build tools to install. Defaults to '28.0.3'.\n    type: string\n    default: \"28.0.3\"\n  logcat_grep:\n    description: ADB logs will be shown in the \"Start Android Emulator\" commands, but we filter it using grep to avoid noise. You can specify additional strings to grep for. Make sure you escape special characters. Defaults to 'com.reactnativecommunity'.\n    type: string\n    default: \"com.reactnativecommunity\"\n  # For the detox command\n  detox_configuration:\n    description: The Detox configuration to test. Defaults to 'android.emu.release'.\n    type: string\n    default: \"android.emu.release\"\n  detox_loglevel:\n    description: The Detox logging level to use. Must be one of \"fatal\", \"error\", \"warn\", \"info\", \"verbose\", or \"trace\".\n    type: enum\n    enum: [\"fatal\", \"error\", \"warn\", \"info\", \"verbose\", \"trace\"]\n    default: warn\n  store_artifact_path:\n    description: Stores detox artifacts at CircleCI\n    type: string\n    default: \"\"\n  should_on_after_initialize:\n    description: Set this to true if you want to run a custom shell command right after yarn install. Provide the command in on_after_initialize command.\n    type: boolean\n    default: false\n  on_after_initialize:\n    description: A custom command to run right after yarn install.\n    type: string\n    default: \"\"\n  should_on_after_emulator_start:\n    description: Set this to true if you want to run a custom shell command right after the android emulator starts. Provide the command in on_after_emulator_start command.\n    type: boolean\n    default: false\n  on_after_emulator_start:\n    description: A custom command to run right after the android emulator starts.\n    type: string\n    default: \"\"\n  # For macos executor\n  node_version:\n    description: The version of Node to use. This can be either a major version (\"8\"), a major and minor (\"8.4\"), or a fully qualified version (\"8.4.1\").\n    type: string\n    default: \"16\"\n  homebrew_cache:\n    description: Should we cache after brew install? Defaults to true\n    type: boolean\n    default: true\n  homebrew_update:\n    description: Should we run brew update? Defaults to true\n    type: boolean\n    default: true\n  xcode_version:\n    description: The version of Xcode to use. See here for the list of supported versions https://circleci.com/docs/2.0/testing-ios/#supported-xcode-versions\n    type: string\n    default: \"12.5.1\"\n  resource_class:\n    description: Changes the resource class of the executor. Requires a support request to enable the resource_class parameter. See https://circleci.com/docs/2.0/configuration-reference/#resource_class\n    type: string\n    default: medium\n\nexecutor:\n  name: macos\n  xcode_version: <<parameters.xcode_version>>\n  resource_class: <<parameters.resource_class>>\n\nsteps:\n  - attach_workspace:\n      at: <<parameters.workspace_root>>\n  - setup_macos_executor:\n      node_version: <<parameters.node_version>>\n      homebrew_cache: <<parameters.homebrew_cache>>\n      homebrew_update: <<parameters.homebrew_update>>\n  - yarn_install:\n      cache: <<parameters.yarn_cache>>\n  - when:\n      condition: <<parameters.should_on_after_initialize>>\n      steps:\n        - run:\n            name: \"on_after_initialize\"\n            command: <<parameters.on_after_initialize>>\n  - when:\n      condition: <<parameters.start_metro>>\n      steps:\n        - metro_start\n  - android_emulator_start:\n      device_name: <<parameters.device_name>>\n      platform_version: <<parameters.platform_version>>\n      build_tools_version: <<parameters.build_tools_version>>\n      logcat_grep: <<parameters.logcat_grep>>\n  - when:\n      condition: <<parameters.should_on_after_emulator_start>>\n      steps:\n        - run:\n            name: \"on_after_emulator_start\"\n            command: <<parameters.on_after_emulator_start>>\n  - detox_test:\n      configuration: <<parameters.detox_configuration>>\n      loglevel: <<parameters.detox_loglevel>>\n  - when:\n      condition: <<parameters.store_artifact_path>>\n      steps:\n        - store_artifacts:\n            path: <<parameters.store_artifact_path>>\n"
  },
  {
    "path": "src/jobs/ios_build.yml",
    "content": "description: Builds the iOS app at the given path with the given build scheme\n\nparameters:\n  # For this job\n  checkout:\n    description: Boolean for whether or not to checkout as a first step. Default is false.\n    type: boolean\n    default: false\n  attach_workspace:\n    description: Boolean for whether or not to attach to an existing workspace. Default is true.\n    type: boolean\n    default: true\n  workspace_root:\n    description: Workspace root path that is either an absolute path or a path relative to the working directory. Defaults to '.' (the working directory).\n    type: string\n    default: .\n  start_metro:\n    description: If we should start the Metro packager in the background for this job.\n    type: boolean\n    default: false\n  pod_install_directory:\n    type: string\n    default: \"\"\n    description: The location of the \"ios\" directory for `pod install`. Will skip `pod install` if missing.\n  pod_cache:\n    description: Save and restore the CocoaPods cache? Defaults to true\n    type: boolean\n    default: true\n  yarn_cache:\n    description: Should we cache after yarn install? Defaults to true\n    type: boolean\n    default: true\n  yarn_cache_folder:\n    description: The path to the yarn cache folder\n    type: string\n    default: \"/tmp/yarn\"\n  # For the iOS build command\n  project_type:\n    description: If the iOS app is built using a project file (*.xcodeproj) or a workspace.\n    type: enum\n    enum: [\"project\", \"workspace\"]\n    default: \"project\"\n  project_path:\n    description: The path to the Xcode project (*.xcodeproj) or the Xcode workspace (*.xcworkspace) that you want to build, relative to the root of the repository.\n    type: string\n  build_configuration:\n    description: The build configuration to use. This is normally either \"Debug\" or \"Release\" but you may have custom build configuration configured for your app.\n    type: string\n    default: \"Debug\"\n  derived_data_path:\n    description: The path to the directory to place the derived data, relative to the root of the repository.\n    type: string\n    default: \"ios/build\"\n  device:\n    description: The type of device you want to build for.\n    type: string\n    default: \"iPhone 11\"\n  device_id:\n    description: UUID of device you want to build for.\n    type: string\n    default: \"\"\n  device_os:\n    description: OS of device you want to build for, e.g 18.5.\n    type: string\n    default: \"\"\n  scheme:\n    description: The scheme to use.\n    type: string\n  on_after_initialize:\n    description: A custom command to run right after yarn install.\n    type: string\n    default: \"\"\n  xcodebuild_cache:\n    description: Should we cache after Xcode build? Defaults to true\n    type: boolean\n    default: true\n  # For macos executor\n  node_version:\n    description: The version of Node to use. This can be either a major version (\"8\"), a major and minor (\"8.4\"), or a fully qualified version (\"8.4.1\").\n    type: string\n    default: \"16\"\n  homebrew_cache:\n    description: Should we cache after brew install? Defaults to true\n    type: boolean\n    default: true\n  homebrew_update:\n    description: Should we run brew update? Defaults to true\n    type: boolean\n    default: true\n  xcode_version:\n    description: The version of Xcode to use. See here for the list of supported versions https://circleci.com/docs/2.0/testing-ios/#supported-xcode-versions\n    type: string\n    default: \"12.5.1\"\n  resource_class:\n    description: Changes the resource class of the executor. Requires a support request to enable the resource_class parameter. See https://circleci.com/docs/2.0/configuration-reference/#resource_class\n    type: string\n    default: medium\n\nexecutor:\n  name: macos\n  xcode_version: <<parameters.xcode_version>>\n  resource_class: <<parameters.resource_class>>\n\nsteps:\n  - when:\n      condition: <<parameters.checkout>>\n      steps:\n        - checkout\n  - when:\n      condition: <<parameters.attach_workspace>>\n      steps:\n        - attach_workspace:\n            at: <<parameters.workspace_root>>\n  - setup_macos_executor:\n      node_version: <<parameters.node_version>>\n      homebrew_cache: <<parameters.homebrew_cache>>\n      homebrew_update: <<parameters.homebrew_update>>\n      android: false\n      detox: false\n  - yarn_install:\n      cache: <<parameters.yarn_cache>>\n      cache_folder: <<parameters.yarn_cache_folder>>\n  - when:\n      condition: <<parameters.on_after_initialize>>\n      steps:\n        - run:\n            name: \"on_after_initialize\"\n            command: <<parameters.on_after_initialize>>\n  - when:\n      condition: <<parameters.start_metro>>\n      steps:\n        - metro_start\n  - when:\n      condition: <<parameters.pod_install_directory>>\n      steps:\n        - pod_install:\n            pod_install_directory: <<parameters.pod_install_directory>>\n            cache: <<parameters.pod_cache>>\n  - ios_build:\n      project_path: <<parameters.project_path>>\n      derived_data_path: <<parameters.derived_data_path>>\n      device: <<parameters.device>>\n      device_id: <<parameters.device_id>>\n      device_os: <<parameters.device_os>>\n      build_configuration: <<parameters.build_configuration>>\n      scheme: <<parameters.scheme>>\n      project_type: <<parameters.project_type>>\n      cache: <<parameters.xcodebuild_cache>>\n"
  },
  {
    "path": "src/jobs/ios_build_and_test.yml",
    "content": "description: Builds the iOS app at the given path with the given build scheme and configuration and then runs the tests with the Detox configuration given.\n\nparameters:\n  # For this job\n  checkout:\n    description: Boolean for whether or not to checkout as a first step. Default is false.\n    type: boolean\n    default: false\n  attach_workspace:\n    description: Boolean for whether or not to attach to an existing workspace. Default is true.\n    type: boolean\n    default: true\n  workspace_root:\n    description: Workspace root path that is either an absolute path or a path relative to the working directory. Defaults to '.' (the working directory).\n    type: string\n    default: .\n  start_metro:\n    description: If we should start the Metro packager in the background for this job.\n    type: boolean\n    default: false\n  pod_install_directory:\n    type: string\n    default: \"\"\n    description: The location of the \"ios\" directory for `pod install`. Will skip `pod install` if missing.\n  pod_cache:\n    description: Save and restore the CocoaPods cache? Defaults to true\n    type: boolean\n    default: true\n  yarn_cache:\n    description: Should we cache after yarn install? Defaults to true\n    type: boolean\n    default: true\n  yarn_cache_folder:\n    description: The path to the yarn cache folder\n    type: string\n    default: \"/tmp/yarn\"\n  # For the iOS build command\n  project_type:\n    description: If the iOS app is built using a project file (*.xcodeproj) or a workspace.\n    type: enum\n    enum: [\"project\", \"workspace\"]\n    default: \"project\"\n  project_path:\n    description: The path to the Xcode project (*.xcodeproj) or the Xcode workspace (*.xcworkspace) that you want to build, relative to the root of the repository.\n    type: string\n  build_configuration:\n    description: The build configuration to use. This is normally either \"Debug\" or \"Release\" but you may have custom build configuration configured for your app.\n    type: string\n    default: \"Debug\"\n  derived_data_path:\n    description: The path to the directory to place the derived data, relative to the root of the repository.\n    type: string\n    default: \"ios/build\"\n  device:\n    description: The type of device you want to build for.\n    type: string\n    default: \"iPhone 11\"\n  scheme:\n    description: The scheme to use.\n    type: string\n  xcodebuild_cache:\n    description: Should we cache after Xcode build? Defaults to true\n    type: boolean\n    default: true\n  # For the Detox test command\n  detox_configuration:\n    description: The Detox configuration to test.\n    type: string\n    default: \"ios.sim.release\"\n  detox_loglevel:\n    description: The Detox logging level to use. Must be one of \"fatal\", \"error\", \"warn\", \"info\", \"verbose\", or \"trace\".\n    type: enum\n    enum: [\"fatal\", \"error\", \"warn\", \"info\", \"verbose\", \"trace\"]\n    default: warn\n  store_artifact_path:\n    description: Stores detox artifacts at CircleCI\n    type: string\n    default: \"\"\n  on_after_initialize:\n    description: A custom command to run right after yarn install.\n    type: string\n    default: \"\"\n  # For macos executor\n  node_version:\n    description: The version of Node to use. This can be either a major version (\"8\"), a major and minor (\"8.4\"), or a fully qualified version (\"8.4.1\").\n    type: string\n    default: \"16\"\n  homebrew_cache:\n    description: Should we cache after brew install? Defaults to true\n    type: boolean\n    default: true\n  homebrew_update:\n    description: Should we run brew update? Defaults to true\n    type: boolean\n    default: true\n  xcode_version:\n    description: The version of Xcode to use. See here for the list of supported versions https://circleci.com/docs/2.0/testing-ios/#supported-xcode-versions\n    type: string\n    default: \"12.5.1\"\n  resource_class:\n    description: Changes the resource class of the executor. Requires a support request to enable the resource_class parameter. See https://circleci.com/docs/2.0/configuration-reference/#resource_class\n    type: string\n    default: medium\n\nexecutor:\n  name: macos\n  xcode_version: <<parameters.xcode_version>>\n  resource_class: <<parameters.resource_class>>\n\nsteps:\n  - when:\n      condition: <<parameters.checkout>>\n      steps:\n        - checkout\n  - when:\n      condition: <<parameters.attach_workspace>>\n      steps:\n        - attach_workspace:\n            at: <<parameters.workspace_root>>\n  - setup_macos_executor:\n      node_version: <<parameters.node_version>>\n      homebrew_cache: <<parameters.homebrew_cache>>\n      homebrew_update: <<parameters.homebrew_update>>\n      android: false\n  - ios_simulator_start:\n      device: <<parameters.device>>\n  - yarn_install:\n      cache: <<parameters.yarn_cache>>\n      cache_folder: <<parameters.yarn_cache_folder>>\n  - when:\n      condition: <<parameters.on_after_initialize>>\n      steps:\n        - run:\n            name: \"on_after_initialize\"\n            command: <<parameters.on_after_initialize>>\n  - when:\n      condition: <<parameters.start_metro>>\n      steps:\n        - metro_start\n  - when:\n      condition: <<parameters.pod_install_directory>>\n      steps:\n        - pod_install:\n            pod_install_directory: <<parameters.pod_install_directory>>\n            cache: <<parameters.pod_cache>>\n  - ios_build:\n      project_path: <<parameters.project_path>>\n      derived_data_path: <<parameters.derived_data_path>>\n      device: <<parameters.device>>\n      build_configuration: <<parameters.build_configuration>>\n      scheme: <<parameters.scheme>>\n      project_type: <<parameters.project_type>>\n      cache: <<parameters.xcodebuild_cache>>\n  - detox_test:\n      configuration: <<parameters.detox_configuration>>\n      loglevel: <<parameters.detox_loglevel>>\n  - when:\n      condition: <<parameters.store_artifact_path>>\n      steps:\n        - store_artifacts:\n            path: <<parameters.store_artifact_path>>\n"
  }
]