Escrever um gancho de pré-envio no Git para grep todos os arquivos para regex deseja rejeitar o envio se não for encontrado
Eu tenho o seguinte gancho pré-push. Idealmente, gostaria que ele passasse por todos os arquivos que estão sendo enviados para o meu repositório e rejeite o envio se o conteúdo de qualquer um dos arquivos não corresponder à expressão regular definida na parte superior. Estou recebendo o seguinte erro ao tentar percorrer os arquivos: "método indefinido` each 'for "": String (NoMethodError) ". '.each' não funciona, pois o comando git está retornando uma string contendo os arquivos alterados.
#!/usr/bin/env ruby
regex = "\\s*GO\\s*$"
localRef, remoteRef = ARGV
#puts localRef
#puts remoteRef
input = $stdin.readlines[0]
localSha = input.split(" ")[1]
remoteSha = input.split(" ")[3]
#puts localSha
#puts remoteSha
range = "#{remoteSha}..#{localSha}"
#folderPath = `git rev-parse --show-toplevel`
#puts folderPath
`git diff --name-only --diff-filter=ACMR #{range}`.each do |file|
#puts file
content = File.read(file)
unless content.match(regex)
puts "#{file} must end with 'GO' keyword"
exit 1
end
end
exit 0
Alguém tem uma idéia de como eu posso percorrer os arquivos retornados?
obrigado