Last active
September 5, 2021 16:52
-
-
Save GMetaxakis/3e4cb1ffb850445757c3e72406809480 to your computer and use it in GitHub Desktop.
Phrase Push
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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