import java.security.MessageDigest

class GenSHA256 extends SourceTask {

  def outputDir

  @OutputDirectory
  File getOutputDir() { project.file(outputDir) }

  @TaskAction
  void writeSHA256s() {

    source.each { file ->
      MessageDigest digest = MessageDigest.getInstance("SHA-256")

      digest.update(file.bytes)

      def checksum = new BigInteger(1, digest.digest()).toString(16).padLeft(32, "0")

      new File(outputDir, file.name + ".sha256").text = checksum
    }
  }
}

project.ext.GenSHA256 = GenSHA256.class