Skip to content

Instantly share code, notes, and snippets.

@GMetaxakis
Last active September 5, 2021 16:52
Show Gist options
  • Save GMetaxakis/3e4cb1ffb850445757c3e72406809480 to your computer and use it in GitHub Desktop.
Save GMetaxakis/3e4cb1ffb850445757c3e72406809480 to your computer and use it in GitHub Desktop.
Phrase Push
name: "Phrase push"
on:
pull_request:
types: [ closed ]
branches: [ develop ]
jobs:
phrase_push_create_job:
if: github.event.action == 'closed' && github.event.pull_request.merged == true
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: get phrase cli
run: |
echo "Downloading phrase from "...
- name: use phrase cli to push
run: |
./phrase push --wait
- id: get_tags
run: |
./phrase uploads list \
--project_id ${{ secrets.PHRASE_PROJECT_ID }} \
-t ${{ secrets.PHRASE_ACCESS_TOKEN }} \
> uploads.json
- id: save_uploads_as_var
run: |
content=`cat uploads.json`
# the following lines are only required for multi line json
content="${content//'%'/'%25'}"
content="${content//$'\n'/'%0A'}"
content="${content//$'\r'/'%0D'}"
# end of optional handling for multi line json
echo "::set-output name=json_uploads::$content"
- id: set_uploads_vars
run: |
content=${{fromJson(steps.save_uploads_as_var.outputs.json_uploads)[0].tag}}
echo "::set-output name=LAST_UPLOAD_TAG::$content"
content=${{fromJson(steps.save_uploads_as_var.outputs.JSON_UPLOADS)[0].summary.translation_keys_created>0}}
echo "::set-output name=LAST_UPLOAD_HAS_NEW_KEYS::$content"
content=${{fromJson(steps.save_uploads_as_var.outputs.JSON_UPLOADS)[0].id}}
echo "::set-output name=LAST_UPLOAD_ID::$content"
- id: upload_cleanup
run: |
./phrase uploads cleanup \
--id ${{ steps.set_uploads_vars.outputs.LAST_UPLOAD_ID }} -y
- name: Get dates
id: date
run: |
echo "::set-output name=due_date::$(date -d 'now ${{ secrets.PHRASE_DUE_DAYS }} days' +'%Y-%m-%d')"
- name: Get details
id: details
run: |
echo "::set-output name=name::$( echo -e "${{ github.event.pull_request.title }}" )"
echo "::set-output name=figma_url::$(echo -e "${{ github.event.pull_request.body }}"| grep -zEo "https://www.figma[^ >]+" |head -1)"
- id: create_job
name: create a phrase job for tag
if: steps.set_uploads_vars.outputs.LAST_UPLOAD_HAS_NEW_KEYS == 'true'
run: |
./phrase jobs create \
--project_id ${{ secrets.PHRASE_PROJECT_ID }} \
--data '{ "name":"${{steps.details.outputs.name}}", "briefing":"Figma url : ${{steps.details.outputs.figma_url}}", "due_date":"${{steps.date.outputs.due_date}}T00:00:00Z", "tags":["${{steps.set_uploads_vars.outputs.LAST_UPLOAD_TAG}}"]}' \
-t ${{ secrets.PHRASE_ACCESS_TOKEN }} \
> job.json
- id: save_job_as_var
if: steps.set_uploads_vars.outputs.LAST_UPLOAD_HAS_NEW_KEYS == 'true'
run: |
content=`cat job.json`
# the following lines are only required for multi line json
content="${content//'%'/'%25'}"
content="${content//$'\n'/'%0A'}"
content="${content//$'\r'/'%0D'}"
# end of optional handling for multi line json
echo "::set-output name=jobJson::$content"
- id: set_jobs_vars
if: steps.set_uploads_vars.outputs.LAST_UPLOAD_HAS_NEW_KEYS == 'true'
run: |
content=${{fromJson(steps.save_job_as_var.outputs.jobJson).id}}
echo "::set-output name=JOB_ID::$content"
- id: add_fr
if: steps.set_uploads_vars.outputs.LAST_UPLOAD_HAS_NEW_KEYS == 'true'
name: add in new job fr locale
run: |
./phrase job_locales create \
--project_id ${{ secrets.PHRASE_PROJECT_ID }} \
--job_id ${{steps.set_jobs_vars.outputs.JOB_ID}} \
--data '{"locale_id": "${{ secrets.PHRASE_LOCALE_ID_FR }}", "user_ids":["${{ secrets.PHRASE_TRANSLATOR_USER_ID_FR }}"] }' \
-t ${{ secrets.PHRASE_ACCESS_TOKEN }}
- id: add_es
if: steps.set_uploads_vars.outputs.LAST_UPLOAD_HAS_NEW_KEYS == 'true'
name: add in new job es locale
run: |
./phrase job_locales create \
--project_id ${{ secrets.PHRASE_PROJECT_ID }} \
--job_id ${{steps.set_jobs_vars.outputs.JOB_ID}} \
--data '{"locale_id": "${{ secrets.PHRASE_LOCALE_ID_ES }}", "user_ids":["${{ secrets.PHRASE_TRANSLATOR_USER_ID_ES }}"] }' \
-t ${{ secrets.PHRASE_ACCESS_TOKEN }}
- id: start_job
if: steps.set_uploads_vars.outputs.LAST_UPLOAD_HAS_NEW_KEYS == 'true'
name: Start job with locales
run: |
./phrase jobs start \
--project_id ${{ secrets.PHRASE_PROJECT_ID }} \
--id ${{steps.set_jobs_vars.outputs.JOB_ID}} \
--data '{}' \
-t ${{ secrets.PHRASE_ACCESS_TOKEN }}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment