static def isLinuxOrMacOs() { def osName = System.getProperty('os.name').toLowerCase(Locale.ROOT) return osName.contains('linux') || osName.contains('mac os') || osName.contains('macos') } def gitHooksDir = 'git rev-parse --path-format=absolute --git-path hooks'.execute().text.trim() task copyGitHooks(type: Copy) { description 'Copies the git hooks from team-props/git-hooks to the .git folder.' from("${rootDir}/team-props/git-hooks/") { include '**/*.sh' rename '(.*).sh', '$1' } into gitHooksDir } task installGitHooks(type: Exec) { description 'Installs the pre-commit git hooks from team-props/git-hooks.' group 'git hooks' workingDir rootDir commandLine 'chmod' args '-R', '+x', gitHooksDir onlyIf { isLinuxOrMacOs() } dependsOn copyGitHooks doLast { logger.info('Git hook installed successfully.') } } afterEvaluate { tasks['preBuild'].dependsOn installGitHooks }