X-Git-Url: https://nos-oignons.net/gitweb/gestion-adh.git/blobdiff_plain/8bbb07a1bc5db944ba95fa5951ed40c3c1b968aa..fcfec54ac07c989195fa9036cee2d5c48eec8337:/bin/pre-commit-hook?ds=inline diff --git a/bin/pre-commit-hook b/bin/pre-commit-hook index aa60ccb..317e5c5 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,7 +18,18 @@ else end def is_valid_subscription?(content) - content.length != 0 && 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) @@ -32,6 +45,7 @@ IO.popen(['git', 'diff-index', '--cached', '--name-status', against]) do |f| # 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