ocarina/libsaria/path.py

89 lines
1.5 KiB
Python

# Bryan Schumaker (8/7/2010)
import libsaria
import os
exists = os.path.exists
is_dir = os.path.isdir
expand = os.path.expanduser
splitext = os.path.splitext
join = os.path.join
makedir = os.mkdir
rm = os.remove
ls = os.listdir
walk = os.walk
sep = os.sep
cp = None
saria_dir = None
plugin_dir = None
make_tree = None
shutil = None
FSTree = None
s_dir = None
p_dir = None
def saria_dir_once():
global s_dir
global saria_dir
s_dir = join(expand("~"), ".saria")
if exists(s_dir) == False:
mkdir(s_dir)
saria_dir = saria_dir_rest
return s_dir
def saria_dir_rest():
global s_dir
return s_dir
saria_dir = saria_dir_once
def plugin_dir_once():
global p_dir
global saria_dir
saria = saria_dir()
dir = "plugins"
if libsaria.__dev__ == True:
dir += "-dev"
p_dir = join(saria, dir)
if exists(p_dir) == False:
mkdir(p_dir)
plugin_dir = plugin_dir_rest
return p_dir
def plugin_dir_rest():
global p_dir
return p_dir
plugin_dir = plugin_dir_once
def cp_once(src, dest):
global cp
global shutil
import shutil
cp = shutil.copy
cp(src, dest)
cp = cp_once
def mkdir(path):
if not exists(path):
makedir(path)
def make_tree_once(path):
global FSTree
from trees import FSTree
global make_tree
make_tree = make_tree_rest
return make_tree(path)
def make_tree_rest(path):
global FSTree
tree = FSTree()
for root,dirs,files in walk(path):
split = root.split(sep)
for file in files:
tree.insert_path_split(split, file)
return tree
make_tree = make_tree_once