#!/bin/bash # Executed when the master branch of PokeAPI/pokeapi gets updated # Runs in CircleCI # Generates new data using the latest changes of PokeAPI/pokeapi in order to open a Pull Request towards PokeAPI/api-data set -o pipefail org='PokeAPI' data_repo='api-data' engine_repo='pokeapi' branch_name='staging' username='pokeapi-machine-user' email='pokeapi.co@gmail.com' # Exit the script notifying the user about its success cleanexit() { echo "Exiting" echo "$2" if [ "$1" -gt "0" ]; then notify_engine_pr "end_failed" else notify_engine_pr "end_success" fi exit $1 } # Create and use a personal folder prepare() { mkdir -p ./repositories cd repositories || cleanexit 1 "Failed to cd" } # Check and return the number of the Pull Request that started this job get_invokator_pr_number() { if ! [ -z "$CIRCLE_PULL_REQUEST" ]; then echo "${CIRCLE_PULL_REQUEST##*/}" else echo 'null' fi } # Clone the repository containing the static JSON files clone() { git clone "https://github.com/${org}/${data_repo}.git" "$data_repo" } # Configure git to use the supplied user when committing configure_git() { git config --global user.name "$username" git config --global user.email "$email" } pr_input_updater_start() { cat <
The staging branch will be deployed in our [staging environment](https://pokeapi-test-b6137.firebaseapp.com/api/v2/) and you will be able to review the entire API.

A Pull Request ([master](https://github.com/PokeAPI/api-data/tree/master)<-[staging](https://github.com/PokeAPI/api-data/tree/staging)) will be also created at [PokeAPI/api-data](https://github.com/PokeAPI/api-data/pulls) and assigned to the PokeAPI Core team to be reviewed. If approved and merged new data will soon be available worldwide at [pokeapi.co](https:/pokeapi.co)" } EOF } pr_input_updater_end_success() { cat <
You can see the Pull Request deployed at our [staging environment](https://pokeapi-test-b6137.firebaseapp.com/api/v2/) when [CircleCI deploy](https://app.circleci.com/pipelines/github/PokeAPI/deploy) will be finished (_check the started time of the last build_)" } EOF } pr_input_updater_end_failed() { cat <
The new data was generated using a copy of [${org}/${engine_repo}](https://github.com/${org}/${engine_repo}/commits/master) repository when the \`HEAD\` was pointing to \`${CIRCLE_SHA1}\`.

This Pull Request should have been deployed in our [staging environment](https://pokeapi-test-b6137.firebaseapp.com/api/v2/), check [here](https://app.circleci.com/pipelines/github/PokeAPI/deploy) for the lastest build timestamp and status code.", "head": "$branch_name", "base": "master", "assignees": [ "Naramsim" ], "labels": [ "api-data-update" ] } EOF } # Create a Pull Request to merge the branch recently pushed by the updater with the master branch create_pr() { engine_repo_pr_number=$(get_invokator_pr_number) data_repo_pr_number=$(curl -H "Authorization: token $MACHINE_USER_GITHUB_API_TOKEN" -X POST --data "$(pr_input_content "$engine_repo_pr_number")" "https://api.github.com/repos/$org/$data_repo/pulls" | jq '.number') if [[ "$data_repo_pr_number" = "null" ]]; then cleanexit 1 "Couldn't create the Pull Request" fi echo "$data_repo_pr_number" } pr_input_assignees_and_labels() { cat <