X-Git-Url: https://nos-oignons.net/gitweb/gestion-adh.git/blobdiff_plain/d3ecf2f4bc9b937b653b09f8f4fb5e4917b0d312..fa119a8cefd38beb5c7b76adffa996a6af7fb006:/bin/pre-commit-hook diff --git a/bin/pre-commit-hook b/bin/pre-commit-hook index 713cb6f..0b46db8 100755 --- a/bin/pre-commit-hook +++ b/bin/pre-commit-hook @@ -8,6 +8,8 @@ Bundler.setup require 'safe_yaml' SafeYAML::OPTIONS[:default_mode] = :safe +SUBSCRIPTIONS_ROOT = 'Membres' + if system('git rev-parse --quiet --verify HEAD >/dev/null') against = 'HEAD' else @@ -16,9 +18,18 @@ else end def is_valid_subscription?(content) - content.length != 0 && - content.start_with?("---\n") && - YAML.load(content) + return false if content.length == 0 + return false unless content.start_with?("---\n") + begin + data = YAML.load(content) + rescue ArgumentError + # Parse error + return false + end + ['name', 'email'].each do |key| + return false unless data.include?(key) + end + true end def is_valid_subscription_file?(file) @@ -27,13 +38,12 @@ def is_valid_subscription_file?(file) 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 + next unless file.start_with?("#{SUBSCRIPTIONS_ROOT}/") if !is_valid_subscription_file?(file) $stderr.puts "Désolé : #{file} n'a pas le bon format !" exit 1