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
}
