#r #githooks #r-package #pkgdown #r-usethis
#r #githooks #r-package #pkgdown #r-используйте это
Вопрос:
У меня есть пакет R с сайтом документации pkgdown. Я хочу создать git-хук, чтобы, если я попытаюсь зафиксировать и внести изменения в README.Rmd
or или index.Rmd
без предварительного связывания их для создания соответствующих .Md
файлов, я был предупрежден. Сейчас я просто забыл.
В книге R Packages сказано использовать usethis::use_readme_rmd()
для создания README, который также создаст git-хук. Но у меня уже есть файл README.Rmd.
Как я могу создать перехват для существующего файла .Rmd в целом, будь то README.Rmd или index.Rmd с моего сайта pkgdown? Я бы хотел использовать usethis
пакет, но если это проще сделать вне этого пакета, я открыт для этого.
Комментарии:
1. Это строка из функции use_readme_rmd:
use_git_hook("pre-commit", render_template("readme-rmd-pre-commit.sh"))
вы можете увидеть это, просто введя имя функции с помощью no () .2. Я зашел так далеко, теперь мне неясно, как изменить
usethis:::render_template("readme-rmd-pre-commit.sh")
, чтобы работать дальшеindex.Rmd
. Это неэкспортируемая функция, и я не могу найти никакой документации. Как другие настраивают ихindex.Rmd
на автоматическое вязание?3. Почему вы не используете функцию rmarkdown render() ?
4. Могу ли я создать git-хук для
index.Rmd
withrender()
?
Ответ №1:
Другой подход заключается в том, чтобы сделать это с помощью Github Actions, если именно там находится ваш сайт pkgdown.
- Создайте папку
.github
в своем репозитории - Внутри этого создайте папку
workflows
- Внутри этого создайте файл
render-readme.yml
- Вставьте этот код в этот файл
on:
push:
paths:
- README.Rmd
- Index.Rmd
name: Render README and Index
jobs:
render:
name: Render README and Index
runs-on: macOS-latest
steps:
- uses: actions/checkout@v2
- uses: r-lib/actions/setup-r@v1
- uses: r-lib/actions/setup-pandoc@v1
- name: Install packages
run: Rscript -e 'install.packages(c("rmarkdown", "knitr"))'
- name: Render README
run: Rscript -e 'rmarkdown::render("README.Rmd", output_format = "md_document")'
- name: Render Index
run: Rscript -e 'rmarkdown::render("Index.Rmd", output_format = "md_document")'
- name: Commit results
run: |
git commit README.md -m 'Re-build README.Rmd' || echo "No changes to commit"
git commit Index.md -m 'Re-build Index.Rmd' || echo "No changes to commit"
git push origin || echo "No changes to commit"
- Отправьте это на GitHub, и оно должно начать работать немедленно. Обратите внимание, что для обработки требуется немного времени. Перейдите на вкладку Действия в вашем репозитории GitHub, чтобы увидеть прогресс.
См. https://github.com/r-lib/actions для примера. Приведенный выше код адаптирован из этого.
Обратите внимание, что вы можете разделить действие на 2 файла. render-readme.yml
и render-index.yml
. Таким образом, если действие завершится неудачно, вы узнаете, в каком файле проблема.
Комментарии:
1. спасибо за этот ответ! Я не могу попробовать какое-то время, но когда я попробую, я удалю этот комментарий и отвечу / приму / проголосую соответственно.