Source code for utool._internal.meta_util_path
# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function
from six.moves import map
from os.path import expanduser, normpath, realpath, exists, isabs
import os
[docs]def ensuredir(dpath):
if not exists(dpath):
os.makedirs(dpath, mode=0o1777)
[docs]def truepath(path):
"""Normalizes and returns absolute path with so specs"""
return normpath(realpath(expanduser(path)))
[docs]def unixpath(path):
"""
TODO: rename to unix_truepath
Corrects fundamental problems with windows paths.~"""
return truepath(path).replace('\\', '/')
[docs]def unixjoin(*args):
"""
Like os.path.join, but uses forward slashes on win32
"""
isabs_list = list(map(isabs, args))
if any(isabs_list):
poslist = [count for count, flag in enumerate(isabs_list) if flag]
pos = poslist[-1]
return '/'.join(args[pos:])
else:
return '/'.join(args)