From ed7e15066de90555261249b50350ebca7c18f29c Mon Sep 17 00:00:00 2001 From: jhudsl-robot Date: Fri, 6 Jun 2025 19:39:46 +0000 Subject: [PATCH 1/5] =?UTF-8?q?=F0=9F=94=84=20Synced=20local=20'.github/wo?= =?UTF-8?q?rkflows/'=20with=20remote=20'.github/workflows/'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit release-renderAction --- .github/workflows/check-url-2.yml | 121 +++++++++++++++++ .github/workflows/check-url.yml | 17 ++- .github/workflows/pull_request.yml | 202 +++++++---------------------- .github/workflows/render-all.yml | 114 +++++----------- 4 files changed, 207 insertions(+), 247 deletions(-) create mode 100644 .github/workflows/check-url-2.yml diff --git a/.github/workflows/check-url-2.yml b/.github/workflows/check-url-2.yml new file mode 100644 index 0000000..1ff5987 --- /dev/null +++ b/.github/workflows/check-url-2.yml @@ -0,0 +1,121 @@ +name: Periodic URL Check 2 + + +on: + workflow_dispatch: + schedule: + - cron: '0 0 1 * *' + +jobs: + set-up: + name: Load user automation choices + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + # Use the yaml-env-action action. + - name: Load environment from YAML + uses: doughepi/yaml-env-action@v1.0.0 + with: + files: config_automation.yml # Pass a space-separated list of configuration files. Rightmost files take precedence. + outputs: + toggle_url_check_periodically: "${{ env.URL_CHECK_PERIODICALLY }}" + + url-check: + name: Check URLs + needs: set-up + if: ${{needs.set-up.outputs.toggle_url_check_periodically == 'true'}} + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + # Delete the branch if this has been run before + - name: Delete branch locally and remotely + run: git push origin --delete preview-spell-error || echo "No branch to delete" + + # Make the branch fresh + - name: Make the branch fresh + run: | + git config --global --add safe.directory $GITHUB_WORKSPACE + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' + + echo branch doesnt exist + git checkout -b preview-spell-error || echo branch exists + git push --set-upstream origin preview-spell-error || echo echo branch exists remotely + shell: bash + + - name: Run the check + uses: ottrproject/ottr-reports@main + id: check_results + continue-on-error: true + with: + check_spelling: false + spelling_error_min: 1 + check_urls: true + url_error_min: 1 + check_quiz_form: false + quiz_error_min: 1 + sort_dictionary: false + + - name: Declare file path and time + id: check-report + run: | + error_num=$(cat check_reports/url_checks.tsv | wc -l) + error_num="$((error_num-1))" + echo "error_num=$error_num" >> $GITHUB_OUTPUT + echo "error_url=https://github.com/${GITHUB_REPOSITORY}/blob/preview-spell-error/check_reports/url_checks.tsv" >> $GITHUB_OUTPUT + shell: bash + + - name: Stop if failure + if: steps.check_results.outcome == 'failure' + run: exit 1 + + - name: Print out error variables + run: | + echo ${{ steps.check-report.outputs.error_url }} + echo ${{ steps.check-report.outputs.error_num }} + + # Commit file + - name: Commit tocless bookdown files + if: ${{ steps.check-report.outputs.error_num >= 1 }} + env: + GH_PAT: ${{ secrets.GH_PAT }} + run: | + git add --force check_reports/url_checks.tsv + git commit -m 'Add spell check file' || echo "No changes to commit" + git push --set-upstream origin preview-spell-error || echo echo branch exists remotely + + - name: Find issues + id: find-issue + env: + GH_PAT: ${{ secrets.GH_PAT }} + run: | + echo "$GITHUB_REPOSITORY" + curl -o find_issue.R https://raw.githubusercontent.com/ottrproject/ottr-reports/main/scripts/find_issue.R + issue_exists=$(Rscript --vanilla find_issue.R --repo $GITHUB_REPOSITORY --git_pat $GH_PAT) + echo URL issue exists: $issue_exists + echo "issue_existence=$issue_exists" >> $GITHUB_OUTPUT + + - name: If too many URL errors, then make an issue + if: ${{ steps.check-report.outputs.error_num >= 1 && steps.find-issue.outputs.issue_existence == 0}} + uses: JasonEtco/create-an-issue@v2 + with: + filename: .github/ISSUE_TEMPLATE/url-error.md + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + FILE_URL: ${{ steps.check-report.outputs.error_url }} + ERROR_NUM: ${{ steps.check-report.outputs.error_num }} + + - name: If no URL errors than delete the branch we made + if: ${{ steps.check-report.outputs.error_num < 1 }} + run: | + git config --system --add safe.directory "$GITHUB_WORKSPACE" + git push origin --delete preview-spell-error || echo "No branch to delete" diff --git a/.github/workflows/check-url.yml b/.github/workflows/check-url.yml index 090f12f..6cfef1a 100644 --- a/.github/workflows/check-url.yml +++ b/.github/workflows/check-url.yml @@ -26,7 +26,7 @@ jobs: url-check: name: Check URLs needs: set-up - if: ${{needs.set-up.outputs.toggle_url_check_periodically == 'yes'}} + if: ${{needs.set-up.outputs.toggle_url_check_periodically == 'true'}} runs-on: ubuntu-latest container: image: jhudsl/base_ottr:main @@ -54,12 +54,17 @@ jobs: shell: bash - name: Run the check - uses: jhudsl/ottr-reports@main + uses: ottrproject/ottr-reports@main id: check_results continue-on-error: true with: - check_type: urls - error_min: 1 + check_spelling: false + spelling_error_min: 1 + check_urls: true + url_error_min: 1 + check_quiz_form: false + quiz_error_min: 1 + sort_dictionary: false - name: Declare file path and time id: check-report @@ -78,7 +83,7 @@ jobs: run: | echo ${{ steps.check-report.outputs.error_url }} echo ${{ steps.check-report.outputs.error_num }} - + # Commit file - name: Commit tocless bookdown files if: ${{ steps.check-report.outputs.error_num >= 1 }} @@ -95,7 +100,7 @@ jobs: GH_PAT: ${{ secrets.GH_PAT }} run: | echo "$GITHUB_REPOSITORY" - curl -o find_issue.R https://raw.githubusercontent.com/jhudsl/ottr-reports/main/scripts/find_issue.R + curl -o find_issue.R https://raw.githubusercontent.com/ottrproject/ottr-reports/main/scripts/find_issue.R issue_exists=$(Rscript --vanilla find_issue.R --repo $GITHUB_REPOSITORY --git_pat $GH_PAT) echo URL issue exists: $issue_exists echo "issue_existence=$issue_exists" >> $GITHUB_OUTPUT diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 26aa87a..9b3ece7 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -1,5 +1,5 @@ # Candace Savonen 2021 -# Updated May 2024 +# Updated May 2025 name: Pull Request @@ -45,57 +45,51 @@ jobs: outputs: toggle_website: "${{ env.RENDER_WEBSITE }}" toggle_spell_check: "${{ env.SPELL_CHECK }}" + spell_error_min: "${{ env.SPELL_ERROR_MIN }}" toggle_style_code: "${{ env.STYLE_CODE }}" toggle_url_check: "${{ env.URL_CHECKER }}" + url_error_min: "${{ env.URL_ERROR_MIN }}" toggle_quiz_check: "${{ env.CHECK_QUIZZES }}" + quiz_error_min: "${{ env.QUIZ_ERROR_MIN }}" toggle_md_linter: "${{ env.MARKDOWN_LINTER }}" toggle_readability: "${{ env.READABILITY_REPORT }}" toggle_render_preview: "${{ env.RENDER_PREVIEW }}" + toggle_dictionary_sort: "${{ env.DICTIONARY_SORT }}" rendering_docker_image: "${{ env.RENDERING_DOCKER_IMAGE }}" ########################## Make the error reports ############################## - spell-check: - name: Check spelling + ottr-reports: + name: Run Reports needs: yaml-check - if: ${{needs.yaml-check.outputs.toggle_spell_check == 'yes'}} - uses: jhudsl/ottr-reports/.github/workflows/report-maker.yml@main - with: - check_type: spelling - error_min: 3 - branch_name: ${GITHUB_HEAD_REF} - secrets: - gh_pat: ${{ secrets.GH_PAT }} - - url-check: - name: Check URLs - needs: yaml-check - if: ${{needs.yaml-check.outputs.toggle_url_check == 'yes'}} - uses: jhudsl/ottr-reports/.github/workflows/report-maker.yml@main - with: - check_type: urls - error_min: 0 - branch_name: ${GITHUB_HEAD_REF} - secrets: - gh_pat: ${{ secrets.GH_PAT }} + if: ${{needs.yaml-check.outputs.toggle_spell_check == 'true' || needs.yaml-check.outputs.toggle_url_check == 'true' || needs.yaml-check.outputs.toggle_quiz_check == 'true'}} + runs-on: ubuntu-latest + permissions: + pull-requests: write - quiz-check: - name: Check quiz formatting - if: ${{needs.yaml-check.outputs.toggle_quiz_check == 'yes'}} - needs: yaml-check - uses: jhudsl/ottr-reports/.github/workflows/report-maker.yml@main - with: - check_type: quiz_format - error_min: 0 - branch_name: ${GITHUB_HEAD_REF} - secrets: - gh_pat: ${{ secrets.GH_PAT }} + steps: + - name: Checkout Actions Repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Run Reports + id: run-reports + uses: ottrproject/ottr-reports@main + with: + check_spelling: ${{needs.yaml-check.outputs.toggle_spell_check}} + spelling_error_min: ${{needs.yaml-check.outputs.spell_error_min}} + check_urls: ${{needs.yaml-check.outputs.toggle_url_check}} + url_error_min: ${{needs.yaml-check.outputs.url_error_min}} + check_quiz_form: ${{needs.yaml-check.outputs.toggle_quiz_check}} + quiz_error_min: ${{needs.yaml-check.outputs.quiz_error_min}} + sort_dictionary: ${{needs.yaml-check.outputs.toggle_dictionary_sort}} ############################# Style the code ################################### style-code: name: Style code needs: yaml-check runs-on: ubuntu-latest - if: ${{needs.yaml-check.outputs.toggle_style_code == 'yes'}} + if: ${{needs.yaml-check.outputs.toggle_style_code == 'true'}} container: image: jhudsl/base_ottr:main @@ -121,7 +115,7 @@ jobs: name: Readability report needs: yaml-check runs-on: ubuntu-latest - if: ${{needs.yaml-check.outputs.toggle_readability == 'yes'}} + if: ${{needs.yaml-check.outputs.toggle_readability == 'true'}} steps: - name: Checkout repo @@ -136,131 +130,23 @@ jobs: glob: '**/*.md' ############################# Render Preview ################################### - render-preview: name: Render preview needs: yaml-check runs-on: ubuntu-latest - container: - image: ${{needs.yaml-check.outputs.rendering_docker_image}} - if: ${{needs.yaml-check.outputs.toggle_render_preview == 'yes'}} + if: ${{needs.yaml-check.outputs.toggle_render_preview == 'true'}} + permissions: + pull-requests: write + contents: write steps: - - name: Checkout files - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - # Set up git checkout - - name: Set up git checkout - run: | - git config --global --add safe.directory $GITHUB_WORKSPACE - git config --global user.name 'github-actions[bot]' - git config --global user.email 'github-actions[bot]@users.noreply.github.com' - - branch_name='preview-${{ github.event.pull_request.number }}' - git fetch --all - git checkout $branch_name - git merge -s recursive --strategy-option=theirs origin/${{ github.head_ref }} --allow-unrelated-histories - quarto --version - quarto check - shell: bash - - # Run bookdown rendering - - name: Run bookdown render - id: bookdown - if: ${{needs.yaml-check.outputs.toggle_website == 'rmd' }} - run: Rscript -e "bookdown::render_book('index.Rmd', output_format = 'all')" - - # Run quarto rendering - - name: Render quarto version - id: quarto - if: ${{needs.yaml-check.outputs.toggle_website == 'quarto' }} - run: | - quarto::quarto_render('.') - shell: Rscript {0} - - # This checks on the steps before it and makes sure that they completed. - # If the renders didn't complete we don't want to commit the file changes - - name: Check on Rmd render steps - if: ${{needs.yaml-check.outputs.toggle_website == 'rmd' }} - run: | - echo Bookdown status ${{steps.bookdown.outcome}} - if [${{steps.bookdown.outcome}} != 'success']; then - exit 1 - fi - - - name: Check on quarto render steps - if: ${{needs.yaml-check.outputs.toggle_website == 'quarto' }} - run: | - echo Quarto status ${{steps.quarto.outcome}} - if [${{steps.quarto.outcome}} != 'success']; then - exit 1 - fi - - - name: Website preview for download - run: zip website-preview.zip docs/* -r - - # Commit the rendered bookdown files - - name: Commit rendered bookdown files to preview branch - id: commit - run: | - branch_name='preview-${{ github.event.pull_request.number }}' - git diff origin/main -- docs >/dev/null && changes=true || changes=false - echo "changes=$changes" >> $GITHUB_OUTPUT - git add . --force - git commit -m 'Render preview' || echo "No changes to commit" - git pull --rebase --set-upstream origin $branch_name --allow-unrelated-histories --strategy-option=ours - git push --force || echo "No changes to commit" - shell: bash - - - name: Find Comment - uses: peter-evans/find-comment@v2 - id: fc - with: - issue-number: ${{ github.event.pull_request.number }} - comment-author: 'github-actions[bot]' - body-includes: latest commit - - - name: Build components of the comment - id: build-components - run: | - course_name=$(head -n 1 _bookdown.yml | cut -d'"' -f 2| tr " " "-") - bookdown_link=$(echo "https://htmlpreview.github.io/?https://raw.githubusercontent.com/$GITHUB_REPOSITORY/preview-${{ github.event.pull_request.number }}/docs/index.html") - docx_link=$(echo "https://github.com/$GITHUB_REPOSITORY/raw/preview-${{ github.event.pull_request.number }}/docs/$course_name.docx") - zip_link=$(echo "https://github.com/$GITHUB_REPOSITORY/raw/preview-${{ github.event.pull_request.number }}/website-preview.zip") - echo "zip_link=$zip_link" >> $GITHUB_OUTPUT - echo "bookdown_link=$bookdown_link" >> $GITHUB_OUTPUT - echo "docx_link=$docx_link" >> $GITHUB_OUTPUT - echo "time=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT - echo "commit_id=$GITHUB_SHA" >> $GITHUB_OUTPUT - echo ${{steps.commit.outputs.changes}} - - - name: Create or update comment - if: steps.commit.outputs.changes == 'true' - uses: peter-evans/create-or-update-comment@v2 - with: - comment-id: ${{ steps.fc.outputs.comment-id }} - issue-number: ${{ github.event.pull_request.number }} - body: | - Re-rendered previews from the latest commit: - - :eyes: Quick [preview of course website here](${{ steps.build-components.outputs.bookdown_link }}) \* - - :microscope: Comprehensive [download of the course website here](${{ steps.build-components.outputs.zip_link }}) - - Download the [.docx file](${{ steps.build-components.outputs.docx_link }}) - - \* note not all html features will be properly displayed in the "quick preview" but it will give you a rough idea. - - _Updated at ${{ steps.build-components.outputs.time }} with changes from the latest commit ${{ steps.build-components.outputs.commit_id }}_ - edit-mode: replace - - - name: Comment if no changes - if: steps.commit.outputs.changes == 'false' - uses: peter-evans/create-or-update-comment@v2 - with: - comment-id: ${{ steps.fc.outputs.comment-id }} - issue-number: ${{ github.event.pull_request.number }} - body: | - The latest commit did not produce rendering changes. - - _Updated at ${{ steps.build-components.outputs.time }} with changes from ${{ steps.build-components.outputs.commit_id }}_ - edit-mode: replace + - name: Checkout repo + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Run render + uses: ottrproject/ottr-preview@main + with: + toggle_website: ${{needs.yaml-check.outputs.toggle_website}} + docker_image: ${{needs.yaml-check.outputs.rendering_docker_image}} diff --git a/.github/workflows/render-all.yml b/.github/workflows/render-all.yml index 56dffb7..e404e09 100644 --- a/.github/workflows/render-all.yml +++ b/.github/workflows/render-all.yml @@ -1,5 +1,5 @@ # Candace Savonen 2021 -# Updated May 2024 +# Updated April 2025 name: Render all output courses @@ -39,8 +39,6 @@ jobs: name: Render course preview needs: yaml-check runs-on: ubuntu-latest - container: - image: ${{needs.yaml-check.outputs.rendering_docker_image}} steps: - name: checkout @@ -49,60 +47,14 @@ jobs: fetch-depth: 0 token: ${{ secrets.GH_PAT }} - - name: Login as github actions bot - run: | - git config --global --add safe.directory $GITHUB_WORKSPACE - git config --global user.name 'github-actions[bot]' - git config --global user.email 'github-actions[bot]@users.noreply.github.com' - - # We want a fresh run of the renders each time - - name: Delete old docs/* - run: | - git remote set-url origin https://${GH_PAT}@github.com/${GITHUB_REPOSITORY} - git fetch origin - git pull --rebase --allow-unrelated-histories --strategy-option=ours - - # Run Rmd rendering - - name: Run bookdown render - id: bookdown - if: ${{needs.yaml-check.outputs.toggle_website == 'rmd' }} - run: | - rm -rf docs/* - Rscript -e "bookdown::render_book('index.Rmd', output_format = 'all'); - file.copy(from = 'assets', to = 'docs/assets', overwrite = TRUE)" - - - name: Render quarto version - id: quarto - if: ${{needs.yaml-check.outputs.toggle_website == 'quarto' }} - run: Rscript -e "quarto::quarto_render('.')" - - # This checks on the steps before it and makes sure that they completed. - # If the renders didn't complete we don't want to commit the file changes - - name: Check on Rmd render steps - if: ${{needs.yaml-check.outputs.toggle_website == 'rmd' }} - run: | - echo Bookdown status ${{steps.bookdown.outcome}} - if [${{steps.bookdown.outcome}} != 'success']; then - exit 1 - fi - - - name: Check on quarto render steps - if: ${{needs.yaml-check.outputs.toggle_website == 'quarto' }} - run: | - echo Quarto status ${{steps.quarto.outcome}} - if [${{steps.quarto.outcome}} != 'success']; then - exit 1 - fi - - # Commit the rendered course files - - name: Commit rendered course files - env: - GH_PAT: ${{ secrets.GH_PAT }} - run: | - git add --force docs/* - git commit -m 'Render course' || echo "No changes to commit" - git status docs/* - git push --force -u origin main || echo "No changes to push" + - name: Run render + id: render + uses: ottrproject/ottr-preview@main + with: + toggle_website: ${{needs.yaml-check.outputs.toggle_website}} + preview: false + token: ${{ secrets.GH_PAT }} + docker_image: ${{needs.yaml-check.outputs.rendering_docker_image}} render-tocless: name: Render TOC-less version for Leanpub or Coursera @@ -110,7 +62,7 @@ jobs: runs-on: ubuntu-latest container: image: ${{needs.yaml-check.outputs.rendering_docker_image}} - if: ${{needs.yaml-check.outputs.toggle_coursera == 'yes' || needs.yaml-check.outputs.toggle_leanpub == 'yes'}} + if: ${{needs.yaml-check.outputs.toggle_coursera == 'true' || needs.yaml-check.outputs.toggle_leanpub == 'true'}} steps: - name: checkout @@ -157,8 +109,8 @@ jobs: needs: [yaml-check, render-tocless] runs-on: ubuntu-latest container: - image: jhudsl/ottrpal - if: ${{needs.yaml-check.outputs.toggle_leanpub == 'yes'}} + image: jhudsl/base_ottr:dev + if: ${{needs.yaml-check.outputs.toggle_leanpub == 'true'}} steps: - name: checkout @@ -184,12 +136,12 @@ jobs: rm -rf resources/chapt_screen_images # Make new screenshots - curl -o make_screenshots.R https://raw.githubusercontent.com/jhudsl/ottr-reports/main/scripts/make_screenshots.R - chapt_urls=$(Rscript --vanilla make_screenshots.R \ - --git_pat ${{ secrets.GH_PAT }} \ - --repo $GITHUB_REPOSITORY \ - --output_dir resources/chapt_screen_images) - rm make_screenshots.R + chapt_urls=$(Rscript -e " \ + Sys.setenv(CHROMOTE_CHROME = '/usr/bin/vivaldi'); \ + ottrpal::make_screenshots( \ + token = '${{ secrets.GH_PAT }}', \ + repo = '$GITHUB_REPOSITORY' )" \ + ) # We want a fresh run of the renders each time - name: Delete manuscript/ @@ -201,34 +153,31 @@ jobs: git commit -m 'Delete manuscript folder' || echo "No changes to commit" git push -u origin main || echo "No changes to push" - - name: Run ottrpal::bookdown_to_embed_leanpub - if: ${{ needs.yaml-check.outputs.toggle_quiz_check == 'no'}} + - name: Run ottrpal::bookdown_to_embed_leanpub -- No Quiz + if: ${{ needs.yaml-check.outputs.toggle_quiz_check != 'true'}} run: | - echo needs.yaml-check.outputs.toggle_make_book_txt == 'yes' - echo needs.yaml-check.outputs.toggle_make_book_txt - Rscript -e "ottrpal::bookdown_to_embed_leanpub( + Rscript -e "ottrpal::website_to_embed_leanpub( render = FALSE, \ chapt_img_key = 'resources/chapt_screen_images/chapter_urls.tsv', \ - make_book_txt = as.logical('${{needs.yaml-check.outputs.make_book_txt == 'yes'}}'), \ + make_book_txt = as.logical('${{needs.yaml-check.outputs.make_book_txt == 'true'}}'), \ quiz_dir = NULL)" - - name: Run ottrpal::bookdown_to_embed_leanpub - if: ${{ needs.yaml-check.outputs.toggle_quiz_check == 'yes'}} + - name: Run ottrpal::bookdown_to_embed_leanpub -- with Quiz + if: ${{ needs.yaml-check.outputs.toggle_quiz_check == 'true'}} run: | - Rscript -e "ottrpal::bookdown_to_embed_leanpub( + Rscript -e "ottrpal::website_to_embed_leanpub( render = FALSE, \ chapt_img_key = 'resources/chapt_screen_images/chapter_urls.tsv', \ - make_book_txt = as.logical('${{needs.yaml-check.outputs.make_book_txt == 'yes'}}'))" + make_book_txt = as.logical('${{needs.yaml-check.outputs.make_book_txt == 'true'}}'))" # Commit the rendered Leanpub files - name: Commit rendered Leanpub files env: GH_PAT: ${{ secrets.GH_PAT }} run: | - mkdir -p manuscript - git add --force manuscript/* - git add --force resources/* - git add --force docs/* + git add --force manuscript/* || "No files to add" + git add --force resources/* || "No files to add" + git add --force docs/* || "No files to add" git commit -m 'Render Leanpub' || echo "No changes to commit" git status docs/* git pull --rebase --allow-unrelated-histories --strategy-option=ours --autostash @@ -240,7 +189,7 @@ jobs: runs-on: ubuntu-latest container: image: ${{needs.yaml-check.outputs.rendering_docker_image}} - if: ${{needs.yaml-check.outputs.toggle_coursera == 'yes'}} + if: ${{needs.yaml-check.outputs.toggle_coursera == 'true'}} steps: - name: checkout @@ -260,7 +209,7 @@ jobs: # Run Coursera version - name: Convert Leanpub quizzes to Coursera - if: needs.yaml-check.outputs.toggle_leanpub == 'yes' && needs.yaml-check.outputs.toggle_quiz_check == 'yes' + if: needs.yaml-check.outputs.toggle_leanpub == 'true' && needs.yaml-check.outputs.toggle_quiz_check == 'true' id: coursera run: Rscript -e "ottrpal::convert_coursera_quizzes()" @@ -273,7 +222,6 @@ jobs: if [ -d 'coursera_quizzes' ]; then git add --force coursera_quizzes/* fi - git add --force manuscript/* git add --force resources/* git add --force docs/* git commit -m 'Render Coursera quizzes' || echo "No changes to commit" From f1178d4904639a94b522ece3d1cc911b7c9aead5 Mon Sep 17 00:00:00 2001 From: jhudsl-robot Date: Fri, 6 Jun 2025 19:39:46 +0000 Subject: [PATCH 2/5] =?UTF-8?q?=F0=9F=94=84=20Created=20local=20'assets/bo?= =?UTF-8?q?x=5Fimages/'=20from=20remote=20'assets/box=5Fimages/'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit release-renderAction --- assets/box_images/dictionary.png | Bin 0 -> 1051 bytes assets/box_images/github.png | Bin 0 -> 2782 bytes assets/box_images/note.png | Bin 0 -> 2771 bytes assets/box_images/thinking_face.png | Bin 0 -> 47033 bytes assets/box_images/under_construction.png | Bin 0 -> 27647 bytes assets/box_images/warning.png | Bin 0 -> 3216 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/box_images/dictionary.png create mode 100644 assets/box_images/github.png create mode 100644 assets/box_images/note.png create mode 100644 assets/box_images/thinking_face.png create mode 100644 assets/box_images/under_construction.png create mode 100644 assets/box_images/warning.png diff --git a/assets/box_images/dictionary.png b/assets/box_images/dictionary.png new file mode 100644 index 0000000000000000000000000000000000000000..75ddac77d07113d6950e24ac046296ba982fbeb3 GIT binary patch literal 1051 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 Z{vSh`gTzs=&b9ym002ovPDHLkV1oVzN)rG8 literal 0 HcmV?d00001 diff --git a/assets/box_images/thinking_face.png b/assets/box_images/thinking_face.png new file mode 100644 index 0000000000000000000000000000000000000000..c2c279ac9b0045c315c8f8e91db301ca0248ce74 GIT binary patch literal 47033 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 ATL1t6 literal 0 HcmV?d00001 diff --git a/assets/box_images/under_construction.png b/assets/box_images/under_construction.png new file mode 100644 index 0000000000000000000000000000000000000000..a67bd5c1442387153aec259183a864b00d63b3de GIT binary patch literal 27647 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 Date: Fri, 6 Jun 2025 19:39:46 +0000 Subject: [PATCH 3/5] =?UTF-8?q?=F0=9F=94=84=20Created=20local=20'assets/st?= =?UTF-8?q?yle.css'=20from=20remote=20'assets/style.css'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit release-renderAction --- assets/style.css | 441 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 441 insertions(+) create mode 100755 assets/style.css diff --git a/assets/style.css b/assets/style.css new file mode 100755 index 0000000..587dd94 --- /dev/null +++ b/assets/style.css @@ -0,0 +1,441 @@ +/* variables are set in style_config_default.css */ + +@import url('https://fonts.googleapis.com/css?family=Abril+Fatface|Karla:400,400i,700,700i|Lora:400,400i,700,700i&display=swap'); + +p.caption { + color: var(--caption-color); + margin-top: 10px; +} +p code { + white-space: inherit; +} +pre { + word-break: normal; + word-wrap: normal; +} +pre code { + white-space: inherit; +} + +/*---------------Hero Image------------------*/ + +/* next 3 rules are for setting large image at top of each page and pushing down the book content to appear beneath the image */ + +.hero-image-container { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 200px; + /*background-image: url("images/books.jpg");*/ + /*background-color: #193a5c;*/ +} + +.hero-image { + width: 100%; + height: 80%; + /*object-fit: cover;*/ +} + +.page-inner { + padding-top: 140px !important; +} + + +/* ------------Links------------------ */ + +.book .book-body .page-wrapper .page-inner section.normal a { + color: var(--link-color); + text-decoration: underline; +} + + +/*------------- Body and header text---------------- */ + +.book.font-family-1 { + font-family: 'Karla', arial, sans-serif; +} + +h1, h2, h3, h4 { + font-family: 'Lora', arial, sans-serif; +} + + +.book .book-body .page-wrapper .page-inner section.normal h1, +.book .book-body .page-wrapper .page-inner section.normal h2, +.book .book-body .page-wrapper .page-inner section.normal h3, +.book .book-body .page-wrapper .page-inner section.normal h4, +.book .book-body .page-wrapper .page-inner section.normal h5, +.book .book-body .page-wrapper .page-inner section.normal h6 { + margin-top: 2.275em; + margin-bottom: 1em; +} + +.title { + font-family: 'Lora'; + font-size: 4em !important; + color: var(--accent-color); + margin-top: 0.275em !important; + margin-bottom: 0.35em !important; +} + +.subtitle { + font-family: 'Lora'; + color: var(--link-color); +} + + +/*----------DROP CAPS--------------*/ + + +/*p:nth-child(2):first-letter { /* /* DROP-CAP FOR FIRST P BENEATH EACH H1 OR H2*/ /* + color: #3fb5bd; + float: left; + font-family: 'Abril Fatface', serif; + font-size: 7em; + line-height: 65px; + padding-top: 4px; + padding-right: 8px; + padding-left: 3px; + margin-bottom: 9px; +} +*/ + +.section.level1 > p:first-of-type:first-letter { /*drop cap for first p beneath level 1 headers only within class .section*/ + color: var(--accent-color); + float: left; + font-family: 'Abril Fatface', serif; + font-size: 7em; + line-height: 65px; + padding-top: 4px; + padding-right: 8px; + padding-left: 3px; + margin-bottom: 9px; +} + +/* add drop cap to first paragraph that follows the first 2nd level header*/ +/* +.section.level2:first-of-type > p:first-of-type:first-letter { + color: #3fb5bd; + float: left; + font-family: 'Abril Fatface', serif; + font-size: 7em; + line-height: 65px; + padding-top: 4px; + padding-right: 8px; + padding-left: 3px; + margin-bottom: 9px; +} +*/ + + + +/*------------ TOC --------------*/ + + +.book .book-summary { + background: var(--background-color); + border-right: none; +} + +/*---color of links in TOC----*/ + +.book .book-summary a { +color: var(--accent-color) +} + +.summary{ + font-family: 'Karla', sans-serif; +} + +/* all TOC list items, basically */ +.book .book-summary ul.summary li a, +.book .book-summary ul.summary li span { + padding-top: 8px; + padding-bottom: 8px; + padding-left: 15px; + padding-right: 15px; + color: var(--accent-color); +} + +.summary a:hover { + color: var(--highlight-color) !important; +} + +.book .book-summary ul.summary li.active>a { /*active TOC links*/ + color: var(--link-color) !important; + border-left: solid 4px; + border-color: var(--highlight-color); + padding-left: 11px !important; +} + + +li.appendix span, li.part span { /* for TOC part names */ + margin-top: 1em; + color: #000000; + opacity: .9 !important; + text-transform: uppercase; +} + +.part + li[data-level=""] { /* grabs first .chapter immediately after .part...but only those ch without numbers */ + text-transform: uppercase; +} + + +/* The next two rules make the horizontal line go straight across in top navbar */ + +.summary > li:first-child { + height: 50px; + padding-top: 10px; + border-bottom: 1px solid rgba(0,0,0,.07); +} + +.book .book-summary ul.summary li.divider { + height: 0px; +} + + +/*--- LOGO ---*/ + +.toc-logo { + width: 200px !important; + object-fit: contain; + margin: 0 auto; +} + +.toc-logo img { + max-width: 100%; + margin-bottom: 10px; +} + +.summary > li:first-child { + height: auto !important; +} + +/* --------------Two columns--------------- */ + +.col2 { + columns: 2 200px; /* number of columns and width in pixels*/ + -webkit-columns: 2 200px; /* chrome, safari */ + -moz-columns: 2 200px; /* firefox */ +} + + +.side-by-side { + display: flex; +} + +.side1 { + width: 40%; +} + +.side2 { + width: 58%; + margin-left: 1rem; +} + +/* --------------Even split- two columns--------------- */ + +.split { + display: flex; +} + +.split1 { + width: 50%; + padding-right: 20px; +} + +.split2 { + width: 50%; +} + + +/* Sidebar formating --------------------------------------------*/ +/* from r-pkgs.org*/ + +div.notice, div.warning, div.github, div.dictionary, div.reflection, div.wip { + padding: 1em; + margin: 1em 0; + padding-left: 100px; + min-height: 120px; + background-repeat: no-repeat; +} + +div.notice{ + border: 4px var(--highlight-color); + border-style: solid; + background-size: 70px; + background-position: 15px center; + background-color: var(--callout-background-color); + background-image: url("../assets/box_images/note.png"); +} + + +div.warning{ + border: 4px #e0471c; + border-style: solid; + background-size: 70px; + background-position: 15px center; + background-color: var(--callout-background-color); + background-image: url("../assets/box_images/warning.png"); +} + +div.github{ + border: 4px #000000; + border-style: solid; + background-size: 70px; + background-position: 15px center; + background-color: var(--callout-background-color); + background-image: url("../assets/box_images/github.png"); +} + +div.dictionary{ + border: 4px var(--highlight-color); + border-style: solid; + background-size: 70px; + background-position: 15px center; + background-color: var(--callout-background-color); + background-image: url("../assets/box_images/dictionary.png"); +} + +div.reflection{ + border: 4px var(--highlight-color); + border-style: solid; + background-size: 90px; + background-position: 15px center; + background-color: var(--callout-background-color); + background-image: url("../assets/box_images/thinking_face.png"); +} + +div.wip{ + border: 4px #000000; + border-style: solid; + background-size: 70px; + background-position: 15px center; + background-color: #f4d03f; + background-image: url("../assets/box_images/under_construction.png"); +} + +/* .book .book-body .page-wrapper .page-inner section.normal is needed + to override the styles produced by gitbook, which are ridiculously + overspecified. Goal of the selectors is to ensure internal "margins" + controlled only by padding of container */ + +.book .book-body .page-wrapper .page-inner section.normal div.rstudio-tip > :first-child, +.book .book-body .page-wrapper .page-inner section.normal div.tip > :first-child { + margin-top: 0; +} + +.book .book-body .page-wrapper .page-inner section.normal div.rstudio-tip > :last-child, +.book .book-body .page-wrapper .page-inner section.normal div.tip > :last-child { + margin-bottom: 0; +} + +iframe { + -moz-transform-origin: top left; + -webkit-transform-origin: top left; + -o-transform-origin: top left; + -ms-transform-origin: top left; + transform-origin: top left; +} + +.iframe-container { + overflow: auto; + -webkit-overflow-scrolling: touch; + border: #ddd 2px solid; + box-shadow: #888 0px 5px 8px; + margin-bottom: 1em; +} + +.iframe-container > iframe { + border: none; +} + + +/* -------Clipboard copy button --------- */ +.copy { + width: inherit; + background-color: #e2e2e2 ; + border: none; + border-radius: 2px; + float: right; + font-size: 60%; + padding: 4px 4px 4px 4px; +} + +/* for new copy button */ + +.hasCopyButton { + position: relative; +} + +.btn-copy-ex { + position: absolute; + right: 0; + top: 0; + visibility: hidden; +} + +.hasCopyButton:hover button.btn-copy-ex { + visibility: visible; +} + + + +/* -----------Section anchors -------------*/ + +.book .book-body .page-wrapper .page-inner section.normal { + overflow: visible !important; /*so anchor link doesn't get cut off */ +} + +a.anchor { + margin-left: -30px; + padding-right: 3px; + display:inline-block; + width: 30px; + height: 30px; + /*visibility: hidden;*/ + background-image: url(https://image.flaticon.com/icons/svg/34/34735.svg) !important; + background-repeat: no-repeat !important; + background-size: 20px 20px !important; + background-position: center bottom !important; + opacity: 0; +} + + +.hasAnchor:hover a.anchor, +a.anchor:hover { + /*visibility: visible;*/ + opacity: 0.6; +} + +/* disable anchors for headers with "no-anchor" class */ +.no-anchor .hasAnchor:hover a.anchor, +.no-anchor a.anchor:hover { + opacity: 0 !important; +} + +@media (max-width: 1144px) { /* don't show anchor link on small screens */ + .hasAnchor:hover a.anchor { + visibility: hidden; + } +} + + +/*____Code Chunks____*/ + +.sourceCode { + margin-bottom: 0.85em; /* adds same amount of margin as a

would */ +} + +.sourceCode pre { + margin: 0 !important; /* makes space above and below symmetrical*/ +} + +/* Footer */ + +.footer { + font-family: "Lora", serif; + font-size: .85em; + color: var(--accent-color); +} From 0c2799a21971e72540147a34b8ab77674e9b68b4 Mon Sep 17 00:00:00 2001 From: jhudsl-robot Date: Fri, 6 Jun 2025 19:39:46 +0000 Subject: [PATCH 4/5] =?UTF-8?q?=F0=9F=94=84=20Created=20local=20'assets/st?= =?UTF-8?q?yle=5Fconfig=5Fdefault.css'=20from=20remote=20'assets/style=5Fc?= =?UTF-8?q?onfig=5Fdefault.css'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit release-renderAction --- assets/style_config_default.css | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 assets/style_config_default.css diff --git a/assets/style_config_default.css b/assets/style_config_default.css new file mode 100644 index 0000000..1c7f4bd --- /dev/null +++ b/assets/style_config_default.css @@ -0,0 +1,8 @@ +:root { + --link-color: #0b5b9d; + --accent-color: #012d72; /* book title, first letter of chapter, toc text */ + --highlight-color: #68ace5; /* toc highlight, callout box borders */ + --caption-color: #595959; + --background-color: white; + --callout-background-color: #e8ebee; + } \ No newline at end of file From a4a17d8d2e7ee09dfd98dd0b9fc524c8be0c9418 Mon Sep 17 00:00:00 2001 From: jhudsl-robot Date: Fri, 6 Jun 2025 19:39:46 +0000 Subject: [PATCH 5/5] =?UTF-8?q?=F0=9F=94=84=20Synced=20local=20'config=5Fa?= =?UTF-8?q?utomation.yml'=20with=20remote=20'config=5Fautomation.yml'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit release-renderAction --- config_automation.yml | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/config_automation.yml b/config_automation.yml index e946aa4..3c7941e 100644 --- a/config_automation.yml +++ b/config_automation.yml @@ -1,28 +1,40 @@ +### Render preview of content with changes (Rmd's and md's are checked) +render-preview: true + ##### Checks run at pull request ##### # Check quiz formatting -check-quizzes: no +check-quizzes: false +quiz_error_min: 0 # Check that urls in the content are not broken -url-checker: yes -# Render preview of content with changes (Rmd's and md's are checked) -render-preview: yes +url-checker: true +url_error_min: 0 # Spell check Rmds and quizzes -spell-check: yes +spell-check: true +spell_error_min: 0 + +#### Other options # Style any R code -style-code: yes +style-code: true +# Would you like your markdown files to be checked for formatting +markdown-linter: true +# Would you like a readability report on your markdowns? +readability-report: true # Test build the docker image if any docker-relevant files have been changed -docker-test: no -# Do we need to make the book txt file automatically? -make_book_txt: yes +docker-test: false # Should URLs be tested periodically? -url-check-periodically: yes +url-check-periodically: true ##### Renderings run upon merge to main branch ##### # Rendering each platform's content -render-website: quarto -render-leanpub: yes -render-coursera: no +render-website: rmd +render-leanpub: true +render-coursera: true + +## Automate the creation of Book.txt file? yes/no +## This is only relevant if render-leanpub is yes, otherwise it will be ignored +make-book-txt: true # What docker image should be used for rendering? -# The default is jhudsl/base_ottr:latest -rendering-docker-image: 'jhudsl/ottr_jupyter:main' +# The default is jhudsl/base_ottr:main +rendering-docker-image: 'jhudsl/base_ottr:main'