Also mangle relpath during inventory enumeration

Signed-off-by: martin f. krafft <madduck@madduck.net>
diff --git a/reclass/storage/yaml_fs/__init__.py b/reclass/storage/yaml_fs/__init__.py
index ae614e0..5a13050 100644
--- a/reclass/storage/yaml_fs/__init__.py
+++ b/reclass/storage/yaml_fs/__init__.py
@@ -27,14 +27,16 @@
         super(ExternalNodeStorage, self).__init__(STORAGE_NAME)
 
         def name_mangler(relpath, name):
-            # nodes are identified just by their basename
-            return name
+            # nodes are identified just by their basename, so
+            # no mangling required
+            return relpath, name
         self._nodes_uri = nodes_uri
         self._nodes = self._enumerate_inventory(nodes_uri, name_mangler)
 
         def name_mangler(relpath, name):
             if relpath == '.':
-                return name
+                # './' is converted to None
+                return None, name
             parts = relpath.split(os.path.sep)
             if name != 'init':
                 # "init" is the directory index, so only append the basename
@@ -42,7 +44,7 @@
                 # effect that data in file "foo/init.yml" will be registered
                 # as data for class "foo", not "foo.init"
                 parts.append(name)
-            return '.'.join(parts)
+            return relpath, '.'.join(parts)
         self._classes_uri = classes_uri
         self._classes = self._enumerate_inventory(classes_uri, name_mangler)
 
@@ -60,13 +62,15 @@
                 name = os.path.splitext(f)[0]
                 relpath = os.path.relpath(dirpath, basedir)
                 if callable(name_mangler):
-                    name = name_mangler(relpath, name)
+                    relpath, name = name_mangler(relpath, name)
                 uri = os.path.join(dirpath, f)
                 if name in ret:
                     E = reclass.errors.DuplicateNodeNameError
                     raise E(self.name, name,
                             os.path.join(basedir, ret[name]), uri)
-                ret[name] = os.path.join(relpath, f)
+                if relpath:
+                    f = os.path.join(relpath, f)
+                ret[name] = f
 
         d = Directory(basedir)
         d.walk(register_fn)