From a44b314caab5fbe36eb9b9abe9be19cabfddf674 Mon Sep 17 00:00:00 2001
From: Andre Anjos <andre.anjos@idiap.ch>
Date: Fri, 12 Sep 2014 11:45:08 +0200
Subject: [PATCH] Implement requirements.txt file loading

---
 bob/extension/test_utils.py | 20 +++++++++++++++++++-
 bob/extension/utils.py      | 10 ++++++++++
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/bob/extension/test_utils.py b/bob/extension/test_utils.py
index d5620d7..cb72363 100644
--- a/bob/extension/test_utils.py
+++ b/bob/extension/test_utils.py
@@ -9,7 +9,8 @@
 import os
 import sys
 import nose.tools
-from .utils import uniq, egrep, find_file, find_header, find_library
+from .utils import uniq, egrep, find_file, find_header, find_library, \
+    load_requirements
 
 def test_uniq():
 
@@ -87,3 +88,20 @@ def test_find_versioned_library():
 
   for k in lib:
     assert k.find('boost_system') >= 0
+
+def test_requirement_readout():
+
+  from StringIO import StringIO as stringio
+
+  f = """ # this is my requirements file
+package-a >= 0.42
+package-b
+package-c
+#package-e #not to be included
+
+package-z
+"""
+
+  result = load_requirements(stringio(f))
+  expected = ['package-a >= 0.42', 'package-b', 'package-c', 'package-z']
+  nose.tools.eq_(result, expected)
diff --git a/bob/extension/utils.py b/bob/extension/utils.py
index c6054ad..026e152 100644
--- a/bob/extension/utils.py
+++ b/bob/extension/utils.py
@@ -325,3 +325,13 @@ def egrep(filename, expression):
       if p: retval.append(p)
 
   return retval
+
+def load_requirements(f=None):
+  """Loads the contents of requirements.txt on the given path.
+
+  Defaults to "./requirements.txt"
+  """
+
+  f = f if f is not None else open("requirements.txt", 'rt')
+  retval = [k.strip() for k in f]
+  return [k for k in retval if k and k[0] != '#']
-- 
GitLab