Aliases and nicknames are Unicode.
authorDaira Hopwood <daira@jacaranda.org>
Tue, 20 Oct 2015 16:13:58 +0000 (17:13 +0100)
committerDaira Hopwood <daira@jacaranda.org>
Tue, 20 Oct 2015 16:13:58 +0000 (17:13 +0100)
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
src/allmydata/scripts/magic_folder_cli.py
src/allmydata/scripts/tahoe_add_alias.py

index 7b717f119fa1ff087ee87ea85192c863c990dd4e..8227addaff15d8d4af057d86f511b309d3af2560 100644 (file)
@@ -1,12 +1,16 @@
 
 import os
+from types import NoneType
 from cStringIO import StringIO
+
 from twisted.python import usage
 
+from allmydata.util.assertutil import precondition
+
 from .common import BaseOptions, BasedirOptions, get_aliases
 from .cli import MakeDirectoryOptions, LnOptions, CreateAliasOptions
 import tahoe_mv
-from allmydata.util.encodingutil import argv_to_abspath
+from allmydata.util.encodingutil import argv_to_abspath, argv_to_unicode
 from allmydata.util import fileutil
 from allmydata import uri
 
@@ -18,10 +22,11 @@ class CreateOptions(BasedirOptions):
     synopsis = "MAGIC_ALIAS: [NICKNAME LOCAL_DIR]"
     def parseArgs(self, alias, nickname=None, local_dir=None):
         BasedirOptions.parseArgs(self)
-        if not alias.endswith(':'):
+        alias = argv_to_unicode(alias)
+        if not alias.endswith(u':'):
             raise usage.UsageError("An alias must end with a ':' character.")
         self.alias = alias[:-1]
-        self.nickname = nickname
+        self.nickname = None if nickname is None else argv_to_unicode(nickname)
         self.local_dir = None if local_dir is None else argv_to_abspath(local_dir)
         if self.nickname and not self.local_dir:
             raise usage.UsageError("If NICKNAME is specified then LOCAL_DIR must also be specified.")
@@ -38,6 +43,10 @@ def _delegate_options(source_options, target_options):
     return target_options
 
 def create(options):
+    precondition(isinstance(options.alias, unicode), alias=options.alias)
+    precondition(isinstance(options.nickname, (unicode, NoneType)), nickname=options.nickname)
+    precondition(isinstance(options.local_dir, (unicode, NoneType)), local_dir=options.local_dir)
+
     from allmydata.scripts import tahoe_add_alias
     create_alias_options = _delegate_options(options, CreateAliasOptions())
     create_alias_options.alias = options.alias
@@ -78,16 +87,20 @@ class InviteOptions(BasedirOptions):
     stdin = StringIO("")
     def parseArgs(self, alias, nickname=None):
         BasedirOptions.parseArgs(self)
-        if not alias.endswith(':'):
+        alias = argv_to_unicode(alias)
+        if not alias.endswith(u':'):
             raise usage.UsageError("An alias must end with a ':' character.")
         self.alias = alias[:-1]
-        self.nickname = nickname
+        self.nickname = argv_to_unicode(nickname)
         node_url_file = os.path.join(self['node-directory'], "node.url")
         self['node-url'] = open(node_url_file, "r").read().strip()
         aliases = get_aliases(self['node-directory'])
         self.aliases = aliases
 
 def invite(options):
+    precondition(isinstance(options.alias, unicode), alias=options.alias)
+    precondition(isinstance(options.nickname, unicode), nickname=options.nickname)
+
     from allmydata.scripts import tahoe_mkdir
     mkdir_options = _delegate_options(options, MakeDirectoryOptions())
     mkdir_options.where = None
index f3ed15c4ad49ba617a2f0876032ab6af1241ce58..30794429e22d3590bf3de686963e42edb6824707 100644 (file)
@@ -1,6 +1,9 @@
 
 import os.path
 import codecs
+
+from allmydata.util.assertutil import precondition
+
 from allmydata import uri
 from allmydata.scripts.common_http import do_http, check_http_error
 from allmydata.scripts.common import get_aliases
@@ -29,6 +32,7 @@ def add_line_to_aliasfile(aliasfile, alias, cap):
 def add_alias(options):
     nodedir = options['node-directory']
     alias = options.alias
+    precondition(isinstance(alias, unicode), alias=alias)
     cap = options.cap
     stdout = options.stdout
     stderr = options.stderr
@@ -56,6 +60,7 @@ def create_alias(options):
     # mkdir+add_alias
     nodedir = options['node-directory']
     alias = options.alias
+    precondition(isinstance(alias, unicode), alias=alias)
     stdout = options.stdout
     stderr = options.stderr
     if u":" in alias: