package com.freeleaps.devops class CommitMessageLinter { def steps private defaultRule = 'com/freeleaps/devops/builtins/commitlint/default.js' CommitMessageLinter(steps) { this.steps = steps } def lint(configurations) { def rules = steps.libraryResource 'com/freeleaps/devops/builtins/commitlint/default.js' steps.log.info " Check if there has custom commit lint rules specified..." if (configurations.commitLintRules != null && !configurations.commitLintRules.isEmpty()) { steps.log.info " Custom commit lint rules found, using custom rules files: ${configurations.commitLintRules}" rules = configurations.commitLintRules } else { steps.log.info " No custom commit lint rules found, using built-in rules at: ${defaultRule}" steps.sh "echo ${rules} > .commitlintrc.js" rules = '.commitlintrc.js' } steps.log.info " Linting commit messages from HEAD..." steps.dir(steps.env.workspace) { steps.sh "commitlint --verbose -g ${rules} -f HEAD^" } } }