From 3c3bdacbb6f07b4d30d52fe44f0f1c04717c66a1 Mon Sep 17 00:00:00 2001 From: Daira Hopwood Date: Tue, 20 Oct 2015 17:13:58 +0100 Subject: [PATCH] Aliases and nicknames are Unicode. Signed-off-by: Daira Hopwood --- src/allmydata/scripts/magic_folder_cli.py | 23 ++++++++++++++++++----- src/allmydata/scripts/tahoe_add_alias.py | 5 +++++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/allmydata/scripts/magic_folder_cli.py b/src/allmydata/scripts/magic_folder_cli.py index 7b717f11..8227adda 100644 --- a/src/allmydata/scripts/magic_folder_cli.py +++ b/src/allmydata/scripts/magic_folder_cli.py @@ -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 diff --git a/src/allmydata/scripts/tahoe_add_alias.py b/src/allmydata/scripts/tahoe_add_alias.py index f3ed15c4..30794429 100644 --- a/src/allmydata/scripts/tahoe_add_alias.py +++ b/src/allmydata/scripts/tahoe_add_alias.py @@ -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: -- 2.45.2