infocalypse
 
(Steve Dougherty)
2013-08-16: Add descriptive truster resolution failure messages.

Add descriptive truster resolution failure messages.

diff --git a/infocalypse/commands.py b/infocalypse/commands.py
--- a/infocalypse/commands.py
+++ b/infocalypse/commands.py
@@ -533,14 +533,31 @@ def get_truster(ui, repo=None, truster_i
         # Value is identity ID, so '@' prefix makes it an identifier with an
         # empty nickname.
         identity = None
+        default = False
         if repo:
             identity = cfg.get_wot_identity(cfg.get_request_uri(repo.root))
 
         # Either repo is not given or there is no associated identity.
         if not identity:
             identity = cfg.defaults['DEFAULT_TRUSTER']
+            default = True
 
-        return Local_WoT_ID('@' + identity)
+        try:
+            return Local_WoT_ID('@' + identity)
+        except util.Abort:
+            if default:
+                raise util.Abort("Cannot resolve the default truster with "
+                                 "public key hash '{0}'. Set it with hg"
+                                 " fn-setupwot --truster".format(identity))
+            else:
+                # TODO: Is this suggestion appropriate?
+                # TODO: Ensure that fn-create on an existing repo does not
+                # leave isolated insert_usks or wot_identities entries in the
+                # config file.
+                raise util.Abort("Cannot resolve the identity with public key "
+                                 "hash '{0}' that published this repository. "
+                                 "To create this repository under a different "
+                                 "identity run hg fn-create".format(identity))
 
 #----------------------------------------------------------"