require 'safe_yaml'
SafeYAML::OPTIONS[:default_mode] = :safe
+SUBSCRIPTIONS_ROOT = 'Membres'
+
if system('git rev-parse --quiet --verify HEAD >/dev/null')
against = 'HEAD'
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)
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