]> nos-oignons.net Git - gestion-adh.git/blobdiff - lib/nos_oignons/subscriptions.rb
Implement pre-receive hook
[gestion-adh.git] / lib / nos_oignons / subscriptions.rb
diff --git a/lib/nos_oignons/subscriptions.rb b/lib/nos_oignons/subscriptions.rb
new file mode 100644 (file)
index 0000000..eef7946
--- /dev/null
@@ -0,0 +1,25 @@
+require 'safe_yaml'
+SafeYAML::OPTIONS[:default_mode] = :safe
+
+SUBSCRIPTIONS_ROOT = 'Membres'
+
+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?(ref, file)
+  IO.popen(['git', 'show', "#{ref}:#{file}"]) do |f|
+    is_valid_subscription?(f.read)
+  end
+end