#!/usr/bin/ruby1.9.1 #-*- coding: utf-8 -*- require 'rubygems' require 'bundler' Bundler.setup require 'safe_yaml' SafeYAML::OPTIONS[:default_mode] = :safe if system('git rev-parse --quiet --verify HEAD >/dev/null') against = 'HEAD' else # Initial commit: diff against an empty tree object against = '4b825dc642cb6eb9a060e54bf8d69288fbee4904' end 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 if !is_valid_subscription_file?(file) $stderr.puts "Désolé : #{file} n'a pas le bon format !" exit 1 end end end end