infocalypse
 
(Steve Dougherty)
2013-11-10: Support trailing slash after an edition number. tip

Support trailing slash after an edition number. A trailing slash on a repo path would abort with an uninformative "cannot parse" error.

diff --git a/infocalypse/devnotes.txt b/infocalypse/devnotes.txt
--- a/infocalypse/devnotes.txt
+++ b/infocalypse/devnotes.txt
@@ -10,7 +10,13 @@ WoT identifier -
                  Often abbreviated "wot_id". Not to be confused with a WoT
                  identity.
 WoT identity ID -
-              name given to the public key hash when returned by WoT.
+              a WoT identity's public key hash.
+
+------------------------------------------------------------
+Architecture:
+------------------------------------------------------------
+
+
 
 ------------------------------------------------------------
 Dev log:
diff --git a/infocalypse/keys.py b/infocalypse/keys.py
--- a/infocalypse/keys.py
+++ b/infocalypse/keys.py
@@ -69,6 +69,10 @@ def parse_repo_path(path, assume_redunda
     'USK@.../name/0'
     >>> parse_repo_path('USK@.../name/')
     'USK@.../name/0'
+    >>> parse_repo_path('USK@.../name/10')
+    'USK@.../name/10'
+    >>> parse_repo_path('USK@.../name/10/')
+    'USK@.../name/10'
     >>> parse_repo_path('USK@.../name', assume_redundancy=True)
     'USK@.../name.R1/0'
     >>> parse_repo_path('USK@.../name.R0/5', assume_redundancy=True)
@@ -84,6 +88,13 @@ def parse_repo_path(path, assume_redunda
         # Assuming USK@..,/name: '/edition' omitted.
         parts.append('0')
 
+    if len(parts) == 4:
+        # Assuming trailing slash - the part after it should be empty.
+        if parts[3]:
+            raise util.Abort("Found unexpected '{0}' trailing the edition "
+                             "number.".format(parts[3]))
+        parts.pop()
+
     if not len(parts) == 3:
         raise util.Abort("Cannot parse '{0}' as repository path.".format(path))