Source code for ladybug_rhino.resourcepath
"""Functions for managing user resources like standards and measures."""
import os
try:
from ladybug.futil import preparedir, nukedir
except ImportError as e:
raise ImportError("Failed to import ladybug.\n{}".format(e))
STANDARDS_SUBFOLDERS = (
'constructions', 'constructionsets', 'schedules', 'programtypes',
'modifiers', 'modifiersets'
)
[docs]
def setup_resource_folders(overwrite=False):
"""Set up user resource folders in their respective locations.
Args:
overwrite: Boolean to note whether the user resources should only be set
up if they do not exist, in which case existing resources will be
preserved, or should they be overwritten.
"""
# first check if there's an environment variable available for APPDATA
app_folder = os.getenv('APPDATA')
if app_folder is not None:
resource_folder = os.path.join(app_folder, 'ladybug_tools')
# set up user standards
lib_folder = os.path.join(resource_folder, 'standards')
for sub_f in STANDARDS_SUBFOLDERS:
sub_lib_folder = os.path.join(lib_folder, sub_f)
if not os.path.isdir(sub_lib_folder) or overwrite:
preparedir(sub_lib_folder)
# set up the user weather
epw_folder = os.path.join(resource_folder, 'weather')
if not os.path.isdir(epw_folder) or overwrite:
if os.path.isdir(epw_folder):
nukedir(epw_folder, rmdir=True) # delete all sub-folders
preparedir(epw_folder)
# set up the user measures folder
measure_folder = os.path.join(resource_folder, 'measures')
if not os.path.isdir(measure_folder) or overwrite:
if os.path.isdir(measure_folder):
nukedir(measure_folder, rmdir=True) # delete all sub-folders
preparedir(measure_folder)
return resource_folder