-def is_valid_subscription?(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)
- 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
- 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
- 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