Skip to content

Plugins should be provided with git diff #3408

Open
@spaceribs

Description

@spaceribs

This is a feature request to provide the output of changed files, such as git diff --cached --name-only --diff-filter=ACM. The purpose of this feature is to provide a way to verify if changes described within a conventional commit's scope are actually all within that scope.

Expected Behavior

Naive example:

plugin: {
  rules: {
    'bounded-scope': (parsed) => {
      console.log(parsed.diff);
      const scope = parsed.scope;

      if (scope === 'test1') {
        changedStartsWithScope = parsed.diff.every((path) => path.startsWith('apps/test1'));
        return [changedStartsWithScope, 'all files with scope test1 should start with apps/test1'];
      }

      return [true];
    }
  }
}

echo "feat(test1): random subject" | npm run commitlint
[ '.gitignore', 'apps/test1/testing.js' ]input: feat(test1): random subject
   all files with scope test1 should start with apps/test1 [scope-bounded]

   found 1 problems, 0 warnings

Current Behavior

No way of determining which files have been changed by the commit.

Affected packages

  • cli
  • core
  • prompt
  • config-angular

Context

I'm trying to create a plugin which queries Nx to determine if the changes in the commit match the scope provided, otherwise requiring you to not specify a scope.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions