X-Git-Url: https://nos-oignons.net/gitweb/gestion-adh.git/blobdiff_plain/8bbb07a1bc5db944ba95fa5951ed40c3c1b968aa..a98f7233458acc4f35ed2b43323bcb78041d33ba:/bin/pre-commit-hook diff --git a/bin/pre-commit-hook b/bin/pre-commit-hook index aa60ccb..921c39c 100755 --- a/bin/pre-commit-hook +++ b/bin/pre-commit-hook @@ -5,8 +5,8 @@ require 'rubygems' require 'bundler' Bundler.setup -require 'safe_yaml' -SafeYAML::OPTIONS[:default_mode] = :safe +require 'nos_oignons/git' +require 'nos_oignons/subscriptions' if system('git rev-parse --quiet --verify HEAD >/dev/null') against = 'HEAD' @@ -15,28 +15,15 @@ else against = '4b825dc642cb6eb9a060e54bf8d69288fbee4904' end -def is_valid_subscription?(content) - content.length != 0 && YAML.load(content) -end - -def is_valid_subscription_file?(file) - IO.popen(['git', 'show', ":#{file}"]) do |f| - is_valid_subscription?(f.read) - end -end - -modified = [] -IO.popen(['git', 'diff-index', '--cached', '--name-status', against]) do |f| - f.readlines.each do |line| - status, file = line.strip.split("\t", 2) - # Has file been added or modified? - if ['A', 'M'].include?(status) - modified << file - if !is_valid_subscription_file?(file) - $stderr.puts "Désolé : #{file} n'a pas le bon format !" - exit 1 - end +IO.popen(['git', 'diff-index', '--cached', '--name-status', against]) do |io| + NosOignons::Git.handle_modified_files(io) do |file| + next unless file.start_with?("#{NosOignons::SUBSCRIPTIONS_ROOT}/") + begin + # Use empty ref to get the index + NosOignons::Subscription.read_from_git('', file) + rescue ArgumentError + $stderr.puts "Désolé : #{file} n'a pas le bon format !" + exit 1 end end end -