mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
utils.files.safe_filepath add support to override the os default directory separator
Note this function is not currently in use, separate PR will trigger the use of this function
This commit is contained in:
parent
078d5d17de
commit
4171d11838
1 changed files with 16 additions and 6 deletions
|
@ -271,6 +271,8 @@ def safe_filename_leaf(file_basename):
|
|||
windows is \\ / : * ? " < > | posix is /
|
||||
|
||||
.. versionadded:: 2017.7.2
|
||||
|
||||
:codeauthor: Damon Atkins <https://github.com/damon-atkins>
|
||||
'''
|
||||
def _replace(re_obj):
|
||||
return urllib.quote(re_obj.group(0), safe=u'')
|
||||
|
@ -283,16 +285,24 @@ def safe_filename_leaf(file_basename):
|
|||
return re.sub(u'[\\\\:/*?"<>|]', _replace, file_basename, flags=re.UNICODE)
|
||||
|
||||
|
||||
def safe_filepath(file_path_name):
|
||||
def safe_filepath(file_path_name, dir_sep=None):
|
||||
'''
|
||||
Input the full path and filename, splits on directory separator and calls safe_filename_leaf for
|
||||
each part of the path.
|
||||
each part of the path. dir_sep allows coder to force a directory separate to a particular character
|
||||
|
||||
.. versionadded:: 2017.7.2
|
||||
|
||||
:codeauthor: Damon Atkins <https://github.com/damon-atkins>
|
||||
'''
|
||||
if not dir_sep:
|
||||
dir_sep = os.sep
|
||||
# Normally if file_path_name or dir_sep is Unicode then the output will be Unicode
|
||||
# This code ensure the output type is the same as file_path_name
|
||||
if not isinstance(file_path_name, six.text_type) and isinstance(dir_sep, six.text_type):
|
||||
dir_sep = dir_sep.encode('ascii') # This should not be executed under PY3
|
||||
# splitdrive only set drive on windows platform
|
||||
(drive, path) = os.path.splitdrive(file_path_name)
|
||||
path = os.sep.join([safe_filename_leaf(file_section) for file_section in file_path_name.rsplit(os.sep)])
|
||||
path = dir_sep.join([safe_filename_leaf(file_section) for file_section in path.rsplit(dir_sep)])
|
||||
if drive:
|
||||
return os.sep.join([drive, path])
|
||||
else:
|
||||
return path
|
||||
path = dir_sep.join([drive, path])
|
||||
return path
|
||||
|
|
Loading…
Add table
Reference in a new issue