Skip to content

Warning

You're viewing an older version of this GitHub Action. Do you want to see the latest version instead?

TOC Generator

Actions
GitHub Action to generate TOC
v2.1.6
Star (230)

TOC Generator

CI Status codecov CodeFactor License: MIT

Read this in other languages: English, 日本語.

This is a GitHub Action to generate TOC (Table of Contents),
which executes DocToc and commits if changed.

Table of Contents

Details

Screenshot

behavior

Installation

  1. Specify location of TOC (option)
    e.g. README.md
    <!-- START doctoc -->
    <!-- END doctoc -->
    detail
  2. Setup workflow
    e.g. .github/workflows/toc.yml
    on: push
    name: TOC Generator
    jobs:
      generateTOC:
        name: TOC Generator
        runs-on: ubuntu-latest
        steps:
          - name: TOC Generator
            uses: technote-space/toc-generator@v2
            with:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Options

TARGET_PATHS

Target file path. (Comma separated, Detail)
default: 'README*.md'
e.g. .

TOC_TITLE

TOC Title.
default: '**Table of Contents**'
e.g. ''

MAX_HEADER_LEVEL

Maximum heading level. (Detail)
default: ``
e.g. 3

FOLDING

Whether to make TOC foldable.
default: false
e.g. 'true'

COMMIT_MESSAGE

Commit message.
default: 'docs: update TOC'
e.g. feat: update TOC

COMMIT_NAME

Git commit name.
default: '${github.actor}'
About Github Context

COMMIT_EMAIL

Git commit email.
default: '${github.actor}@users.noreply.github.com'
About Github Context

PR_BRANCH_PREFIX

PullRequest branch prefix.
default: 'toc-generator/'

PR_BRANCH_NAME

PullRequest branch name.
default: 'update-toc-${PR_ID}'
e.g. toc-${PR_NUMBER}
Context variables

PR_TITLE

PullRequest title.
default: 'docs: update TOC (${PR_MERGE_REF})'
e.g. feat: update TOC
Context variables

PR_BODY

PullRequest body.
default:

## Base PullRequest

${PR_TITLE} (${PR_NUMBER_REF})

## Command results
<details>
  <summary>Details: </summary>

  ${COMMANDS_OUTPUT}

</details>

## Changed files
<details>
  <summary>${FILES_SUMMARY}: </summary>

  ${FILES}

</details>

<hr>

[:octocat: Repo](${ACTION_URL}) | [:memo: Issues](${ACTION_URL}/issues) | [:department_store: Marketplace](${ACTION_MARKETPLACE_URL})

Context PR variables

PR_COMMENT_BODY

PullRequest body for comment.
default:

## Command results
<details>
  <summary>Details: </summary>

  ${COMMANDS_OUTPUT}

</details>

## Changed files
<details>
  <summary>${FILES_SUMMARY}: </summary>

  ${FILES}

</details>

<hr>

[:octocat: Repo](${ACTION_URL}) | [:memo: Issues](${ACTION_URL}/issues) | [:department_store: Marketplace](${ACTION_MARKETPLACE_URL})

Context PR variables

PR_CLOSE_MESSAGE

Message body when closing PullRequest.
default: 'This PR is no longer needed because the package looks up-to-date.'

TARGET_BRANCH_PREFIX

Filter by branch name.
default: ''
e.g. 'release/'

INCLUDE_LABELS

Labels used to check if the PullRequest has it.
default: ''
e.g. 'Label1, Label2'
e.g.

INCLUDE_LABELS: |
  Test Label1
  Test Label2

Action event details

Target event

eventName: action condition
push: * condition1
pull_request: [opened, synchronize, reopened, labeled, unlabeled] condition2
pull_request: [closed]
  • The following activity types must be explicitly specified (detail)
    • labeled, unlabeled, closed

Conditions

condition1

condition2

Addition

Commit

The GITHUB_TOKEN that is provided as a part of GitHub Actions doesn't have authorization to create any successive events.
So it won't spawn actions which triggered by push.

This can be a problem if you have branch protection configured.

If you want to trigger actions, use a personal access token instead.

  1. Generate a personal access token with the public_repo or repo scope.
    (repo is required for private repositories).
  2. Save as ACCESS_TOKEN
  3. Use ACCESS_TOKEN instead of GITHUB_TOKEN.
    e.g. .github/workflows/toc.yml
    on: push
    name: TOC Generator
    jobs:
      generateTOC:
        name: TOC Generator
        runs-on: ubuntu-latest
        steps:
          - name: TOC Generator
            uses: technote-space/toc-generator@v2
            with:
              # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
              GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}

Create PullRequest

If you set pull_request event like following yaml, changes will be committed to PullRequest.

on: pull_request
name: TOC Generator
jobs:
 generateTOC:
   name: TOC Generator
   runs-on: ubuntu-latest
   steps:
     - name: TOC Generator
       uses: technote-space/toc-generator@v2
       with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

create pr

If the closed activity type is set, this action closes the PR when it is no longer needed.

on:
  pull_request:
    types: [opened, synchronize, reopened, closed]
name: TOC Generator
jobs:
 generateTOC:
   name: TOC Generator
   runs-on: ubuntu-latest
   steps:
     - name: TOC Generator
       uses: technote-space/toc-generator@v2
       with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Context variables

name description
PR_NUMBER pull_request.number (e.g. 11)
PR_NUMBER_REF #${pull_request.number} (e.g. #11)
PR_ID pull_request.id (e.g. 21031067)
PR_HEAD_REF pull_request.head.ref (e.g. change)
PR_BASE_REF pull_request.base.ref (e.g. master)
PR_MERGE_REF pull_request.base.ref (e.g. change -> master)
PR_TITLE pull_request.title (e.g. update the README with new information.)

Payload example

Context PR variables

name description
PR_LINK Link to PR
COMMANDS_OUTPUT Result of TOC command
FILES_SUMMARY e.g. Changed 2 files
FILES Changed file list

Sample repositories using this Action

Author

GitHub (Technote)
Blog

TOC Generator is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.

About

GitHub Action to generate TOC
v2.1.6

TOC Generator is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.