Я люблю делать заметки в Маркдауне, а в последнее время я использовал GitHub написать (и хранить) их.
Существует много преимуществ использования GitHub: доступно на разных платформах, онлайн, автономном режиме, поддержке Marckdown, Agnostic редактора, управлении версиями, простой структурой (файлы/папки) и бесплатно.
Тем не менее, одна вещь, которая не поддерживается из коробки, — это генерирование оглавления (TOC). С этим я могу по -разному организовать свои заметки и иметь много из них в один файл разметки.
Вот как я генерирую содержание для своих заметок, используя Действия GitHub Анкет
Предварительные условия
- Делать
- Докер
- Составить
- Github account
- Git
- Терминал
Реализация
Мои ноты содержит много файлов и папок, но для целей этого сообщения я буду держать все как можно проще. Ниже приведена структура файла примера репозитория GIT.
$ tree -a . ├── .git │ ├── ... ├── Makefile ├── docker-compose.yml ├── story.md └── package.json
Репозиторий имеет одну заметку, записанную в Markdown под названием story.md
который имеет некоторое случайное содержание.
# Story ## Introduction Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent elementum tincidunt felis, condimentum accumsan nibh imperdiet nec. Sed cursus justo eu purus rhoncus, id facilisis lorem semper. ## Development Duis nunc arcu, bibendum quis turpis ut, dapibus feugiat massa. Sed tempus tortor eget diam porta vulputate. Ut tempor iaculis suscipit. Morbi scelerisque felis ac justo consectetur luctus. ## Conclusion Nullam malesuada rutrum gravida. Vivamus sit amet fermentum odio. Donec tincidunt ex odio, vitae convallis ante posuere nec.
Поскольку генерирование содержания не является опцией по умолчанию, я искал генератор и нашел Doctoc , модуль Nodejs.
Doctoc: Генерирует содержание таблицы для файлов разметки внутри локального репозитория GIT. Ссылки совместимы с якорями, сгенерированными GitHub или другими сайтами.
Чтобы использовать doctoc, я создал Package.json
Файл и добавил модуль в качестве зависимости развития.
{ "name": "mynotes", "devDependencies": { "doctoc": "^1.4.0" } }
Я часто использую Docker, чтобы обеспечить согласованность между различными платформами, такими как, в данном случае, мой ноутбук и GitHub. В Docker-compose.yml
Файл, я определил службу с именем Узел
который будет использоваться для установки DOCTOC и генерации TOC с помощью последнего изображения Docker Nodejs.
version: '3.7' services: node: image: node volumes: - type: bind source: "." target: /opt/app working_dir: /opt/app
Последний файл Makefile
который инкапсулирует команды Docker Compose. Deps
Target загружает изображение Nodejs Docker и устанавливает Doctoc. Generatetoc
Цель генерирует содержимое содержимого с помощью Doctoc внутри контейнера Docker Nodejs.
deps: docker-compose pull node docker-compose run --rm node yarn install generateTOC: docker-compose run --rm node yarn doctoc .
Наконец, чтобы включить TOC в мои заметки, я просто бегаю сделать DEPS Generatetoc
в терминале. story.md
Файл теперь обновляется.
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* - [Story](#story) - [Introduction](#introduction) - [Development](#development) - [Conclusion](#conclusion) # Story ## Introduction Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent elementum tincidunt felis, condimentum accumsan nibh imperdiet nec. Sed cursus justo eu purus rhoncus, id facilisis lorem semper. ## Development Duis nunc arcu, bibendum quis turpis ut, dapibus feugiat massa. Sed tempus tortor eget diam porta vulputate. Ut tempor iaculis suscipit. Morbi scelerisque felis ac justo consectetur luctus. ## Conclusion Nullam malesuada rutrum gravida. Vivamus sit amet fermentum odio. Donec tincidunt ex odio, vitae convallis ante posuere nec.
И вуаля! Затем я совершаю свои изменения в Мастер
, нажмите и посмотрите на них на GitHub.
Это хорошо работает на компьютере, где установлены такие инструменты, как Make, Docker и Compose. Я мог бы даже пойти в тупик и автоматизировать процесс с Git Hooks Анкет
Однако что, если я напишу на планшете или непосредственно на веб -сайте GitHub? Соглашение, вероятно, встанет устаревшая. Не было бы здорово, чтобы его генерировать, независимо от того, откуда написаны заметки? GitHub Действия на помощь!
Действия GitHub
Действия GitHub Облегчает автоматизация всех ваших рабочих процессов программного обеспечения, теперь с CI/CD мирового класса. Создайте, тестируйте и разверните свой код прямо из GitHub. Сделайте обзоры кода, управление филиалами и выпуска, занимаясь работой так, как вы хотите.
Ниже приведена структура примера репозитория GIT с включенными действиями GitHub.
$ tree -a . ├── .git │ ├── ... ├── .github │ └── workflows │ └── generate_toc.yml ├── Makefile ├── docker-compose.yml ├── story.md └── package.json
Я определил рабочий процесс в .github/workflows/Generate_toc.yml
Файл для генерации содержания таблицы всякий раз, когда я подталкиваю к Мастер
ветка.
name: Generate TOC on: push: branches: - master jobs: generateTOC: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Generate TOC run: make deps generateTOC - name: Auto commit uses: stefanzweifel/git-auto-commit-action@v2.1.0 with: commit_message: Apply automatic changes - TOC generated branch: master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Этот рабочий процесс проверяет репозиторий на Мастер
событие ветвления push, запускает команду сделать DEPS Generatetoc
Чтобы сгенерировать оглавление и, наконец, автоматически совершает изменения в Мастер
С действием GitHub с именем GIT-Auto-Commit-Action Анкет
Из репозитория GitHub я вижу, как выполняется мой рабочий процесс TOC.
И см. Автоматизированный коммит с содержанием таблицы, обновленной из рабочего процесса сразу после того, как я обновил свои заметки.
Завершая
Я более чем счастлив, что действия Github поддерживают Make, Docker и Compose. Я мог бы разрабатывать и проверить на местном уровне некоторые части моего рабочего процесса и чувствовать себя уверенно, что они будут работать над GitHub. И теперь я могу написать свои заметки из любого места и получить оглавление волшебным образом обновлять. Это простой вариант использования, но есть много действий, которые могут быть просто «Plug & Play», чтобы создать более сложные рабочие процессы.
Понравился этот пост в блоге? Оформление 3musketeers.io Чтобы узнать больше о том, как строить, проверять и развернуть свои приложения из любого места, так же!
Отказ от ответственности: сделайте свое собственное исследование перед использованием этого решения, и не храните конфиденциальную информацию в простом тексте на GitHub.
Оригинал: «https://dev.to/fredericlemay/generate-table-of-contents-with-github-actions-3a0b»