Skip to content
This repository has been archived by the owner on Nov 24, 2023. It is now read-only.

Latest commit

 

History

History
162 lines (139 loc) · 4.52 KB

README.md

File metadata and controls

162 lines (139 loc) · 4.52 KB

Get Diff Action

CI Status codecov CodeFactor License: MIT

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

GitHub actions to get git diff.

Table of Contents

Details

Screenshots

  1. Example workflow
    Example workflow
  2. Skip
    Skip

Usage

on: pull_request
name: CI
jobs:
  eslint:
    name: ESLint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: technote-space/get-diff-action@v1
        with:
          PREFIX_FILTER: |
            src
            __tests__
          SUFFIX_FILTER: .ts
      - name: Install Package dependencies
        run: yarn install
        if: env.GIT_DIFF
      - name: Check code style
        # Check only the source codes that have differences
        run: yarn eslint ${{ env.GIT_DIFF }}
        if: env.GIT_DIFF

If there is no difference in the source code below, this workflow will skip the code style check

  • src/**/*.ts
  • __tests__/**/*.ts

Behavior

  1. Get git diff

    git diff "${FROM}"${DOT}"${TO}" '--diff-filter=${DIFF_FILTER}' --name-only

    e.g. (default)

    FROM: 'origin/${GITHUB_BASE_REF}'
    TO: '${GITHUB_REF#refs/}'
    DOT: '...'
    DIFF_FILTER: 'AM'

    =>

    git diff "origin/${GITHUB_BASE_REF}"..."${GITHUB_REF#refs/}" '--diff-filter=AM' --name-only

    =>

    .github/workflows/ci.yml
    __tests__/utils/command.test.ts
    package.json
    src/main.ts
    src/utils/command.ts
    yarn.lock
    
  2. Filtered by PREFIX_FILTER or SUFFIX_FILTER option

    e.g.

    SUFFIX_FILTER: .ts
    PREFIX_FILTER: src/

    =>

    src/main.ts
    src/utils/command.ts
    
  3. Mapped to absolute if ABSOLUTE option is true(default)

    e.g. (default)

    /home/runner/work/my-repo-name/my-repo-name/src/main.ts
    /home/runner/work/my-repo-name/my-repo-name/src/utils/command.ts
    
  4. Combined by SEPARATOR option

    e.g.

    SEPARATOR: ' '

    =>

    /home/runner/work/my-repo-name/my-repo-name/src/main.ts /home/runner/work/my-repo-name/my-repo-name/src/utils/command.ts
    

Outputs

diff

The results of diff file names.
if inputs SET_ENV_NAME is set, an environment variable is set with that name.
default: SET_ENV_NAME=GIT_DIFF

count

The number of diff files.
if inputs SET_ENV_NAME_COUNT is set, an environment variable is set with that name.
default: SET_ENV_NAME_COUNT=

insertions

The number of insertions lines.
if inputs SET_ENV_NAME_INSERTIONS is set, an environment variable is set with that name.
default: SET_ENV_NAME_INSERTIONS=

deletions

The number of deletions lines.
if inputs SET_ENV_NAME_DELETIONS is set, an environment variable is set with that name.
default: SET_ENV_NAME_DELETIONS=

lines

The number of diff lines.
if inputs SET_ENV_NAME_LINES is set, an environment variable is set with that name.
default: SET_ENV_NAME_LINES=

Action event details

Target events

eventName action
pull_request opened, reopened, rerequested, synchronize

If called on any other event, the result will be empty.

Author

GitHub (Technote)
Blog