Merge pull request #2811 from xonsh/fssup

skip foreign
This commit is contained in:
Gil Forsyth 2018-09-12 19:30:15 -04:00 committed by GitHub
commit 219034f167
Failed to generate hash of commit
3 changed files with 41 additions and 1 deletions

16
news/fssup.rst Normal file
View file

@ -0,0 +1,16 @@
**Added:**
* New environment variable ``$FOREIGN_ALIASES_SUPPRESS_SKIP_MESSAGE``
enables the removal of skipping foreign alias messages.
* New ``--suppress-skip-message`` command line option for skipping
foreign alias messages when sourcing foreign shells.
**Changed:** None
**Deprecated:** None
**Removed:** None
**Fixed:** None
**Security:** None

View file

@ -260,6 +260,13 @@ def _SOURCE_FOREIGN_PARSER():
help="flag for whether or not sourced aliases should "
"replace the current xonsh aliases.",
)
parser.add_argument(
"--suppress-skip-message",
default=None,
action="store_true",
dest="suppress_skip_message",
help="flag for whether or not skip messages should be suppressed.",
)
parser.add_argument(
"--show",
default=False,
@ -280,7 +287,13 @@ def _SOURCE_FOREIGN_PARSER():
def source_foreign(args, stdin=None, stdout=None, stderr=None):
"""Sources a file written in a foreign shell language."""
env = builtins.__xonsh_env__
ns = _SOURCE_FOREIGN_PARSER.parse_args(args)
ns.suppress_skip_message = (
env.get("FOREIGN_ALIASES_SUPPRESS_SKIP_MESSAGE")
if ns.suppress_skip_message is None
else ns.suppress_skip_message
)
if ns.prevcmd is not None:
pass # don't change prevcmd if given explicitly
elif os.path.isfile(ns.files_or_code[0]):
@ -315,7 +328,6 @@ def source_foreign(args, stdin=None, stdout=None, stderr=None):
msg += "xonsh: error: Possible reasons: File not found or syntax error\n"
return (None, msg, 1)
# apply results
env = builtins.__xonsh_env__
denv = env.detype()
for k, v in fsenv.items():
if k in denv and v == denv[k]:
@ -332,11 +344,15 @@ def source_foreign(args, stdin=None, stdout=None, stderr=None):
continue # no change from original
elif ns.overwrite_aliases or k not in baliases:
baliases[k] = v
elif ns.suppress_skip_message:
pass
else:
msg = (
"Skipping application of {0!r} alias from {1!r} "
"since it shares a name with an existing xonsh alias. "
'Use "--overwrite-alias" option to apply it anyway.'
'You may prevent this message with "--suppress-skip-message" or '
'"$FOREIGN_ALIASES_SUPPRESS_SKIP_MESSAGE = True".'
)
print(msg.format(k, ns.shell), file=stderr)

View file

@ -185,6 +185,7 @@ def DEFAULT_ENSURERS():
"DYNAMIC_CWD_ELISION_CHAR": (is_string, ensure_string, ensure_string),
"EXPAND_ENV_VARS": (is_bool, to_bool, bool_to_str),
"FORCE_POSIX_PATHS": (is_bool, to_bool, bool_to_str),
"FOREIGN_ALIASES_SUPPRESS_SKIP_MESSAGE": (is_bool, to_bool, bool_to_str),
"FOREIGN_ALIASES_OVERRIDE": (is_bool, to_bool, bool_to_str),
"FUZZY_PATH_COMPLETION": (is_bool, to_bool, bool_to_str),
"GLOB_SORTED": (is_bool, to_bool, bool_to_str),
@ -360,6 +361,7 @@ def DEFAULT_VALUES():
"DYNAMIC_CWD_ELISION_CHAR": "",
"EXPAND_ENV_VARS": True,
"FORCE_POSIX_PATHS": False,
"FOREIGN_ALIASES_SUPPRESS_SKIP_MESSAGE": False,
"FOREIGN_ALIASES_OVERRIDE": False,
"PROMPT_FIELDS": dict(prompt.PROMPT_FIELDS),
"FUZZY_PATH_COMPLETION": True,
@ -570,6 +572,12 @@ def DEFAULT_DOCS():
"completion if set to anything truthy.",
configurable=ON_WINDOWS,
),
"FOREIGN_ALIASES_SUPPRESS_SKIP_MESSAGE": VarDocs(
"Whether or not foreign aliases should suppress the message "
"that informs the user when a foreign alias has been skipped "
"because it already exists in xonsh.",
configurable=True,
),
"FOREIGN_ALIASES_OVERRIDE": VarDocs(
"Whether or not foreign aliases should override xonsh aliases "
"with the same name. Note that setting of this must happen in the "