Merge branch 'wiz'

This commit is contained in:
Anthony Scopatz 2016-03-01 13:08:54 -05:00
commit 241d7910ab

View file

@ -76,13 +76,16 @@ values are presented as pretty repr strings of their Python types.
{{BOLD_GREEN}}Note:{{NO_COLOR}} Simply hitting enter for any environment variable {{BOLD_GREEN}}Note:{{NO_COLOR}} Simply hitting enter for any environment variable
will accept the default value for that entry. will accept the default value for that entry.
""".format(hr=HR)
WIZARD_ENV_QUESTION = "Would you like to set env vars now, " + YN
Would you like to set env vars now, """.format(hr=HR) + YN
WIZARD_TAIL = """ WIZARD_TAIL = """
Thanks for using the xonsh configuration wizard!""" Thanks for using the xonsh configuration wizard!"""
def make_fs(): def make_fs():
"""Makes the foreign shell part of the wizard.""" """Makes the foreign shell part of the wizard."""
cond = create_truefalse_cond(prompt='Add a foreign shell, ' + YN) cond = create_truefalse_cond(prompt='Add a foreign shell, ' + YN)
@ -133,12 +136,13 @@ def _wrap_paragraphs(text, width=70, **kwargs):
s = '\n'.join(pars) s = '\n'.join(pars)
return s return s
ENVVAR_PROMPT = """ ENVVAR_MESSAGE = """
{{BOLD_CYAN}}${name}{{NO_COLOR}} {{BOLD_CYAN}}${name}{{NO_COLOR}}
{docstr} {docstr}
{{RED}}default value:{{NO_COLOR}} {default} {{RED}}default value:{{NO_COLOR}} {default}
{{RED}}current value:{{NO_COLOR}} {current} {{RED}}current value:{{NO_COLOR}} {current}"""
{{BOLD_GREEN}}>>>{{NO_COLOR}} """
ENVVAR_PROMPT = "{BOLD_GREEN}>>>{NO_COLOR} "
def make_envvar(name): def make_envvar(name):
"""Makes a StoreNonEmpty node for an environment variable.""" """Makes a StoreNonEmpty node for an environment variable."""
@ -155,20 +159,25 @@ def make_envvar(name):
curr = pformat(curr, width=69) curr = pformat(curr, width=69)
if '\n' in curr: if '\n' in curr:
curr = '\n' + curr curr = '\n' + curr
prompt = ENVVAR_PROMPT.format(name=name, default=default, current=curr, msg = ENVVAR_MESSAGE.format(name=name, default=default, current=curr,
docstr=_wrap_paragraphs(vd.docstr, width=69)) docstr=_wrap_paragraphs(vd.docstr, width=69))
mnode = Message(message=msg)
ens = env.get_ensurer(name) ens = env.get_ensurer(name)
path = '/env/' + name path = '/env/' + name
node = StoreNonEmpty(prompt, converter=ens.convert, show_conversion=True, pnode = StoreNonEmpty(ENVVAR_PROMPT, converter=ens.convert,
path=path) show_conversion=True, path=path)
return node return mnode, pnode
def make_env(): def make_env():
"""Makes an environment variable wizard.""" """Makes an environment variable wizard."""
kids = map(make_envvar, sorted(builtins.__xonsh_env__.docs.keys())) kids = map(make_envvar, sorted(builtins.__xonsh_env__.docs.keys()))
kids = [k for k in kids if k is not None] flatkids = []
wiz = Wizard(children=kids) for k in kids:
if k is None:
continue
flatkids.extend(k)
wiz = Wizard(children=flatkids)
return wiz return wiz
@ -187,7 +196,8 @@ def make_wizard(default_file=None, confirm=False):
Load(default_file=default_file, check=True), Load(default_file=default_file, check=True),
Message(message=WIZARD_FS), Message(message=WIZARD_FS),
make_fs(), make_fs(),
YesNo(question=WIZARD_ENV, yes=make_env(), no=Pass()), Message(message=WIZARD_ENV),
YesNo(question=WIZARD_ENV_QUESTION, yes=make_env(), no=Pass()),
Message(message='\n' + HR + '\n'), Message(message='\n' + HR + '\n'),
Save(default_file=default_file, check=True), Save(default_file=default_file, check=True),
Message(message=WIZARD_TAIL), Message(message=WIZARD_TAIL),