import configparser import os def expand_dir(d): return os.path.expanduser(d) config_file = expand_dir('~/.clmgr.cfg') def make_install_dir(install_dir): install_dir = expand_dir(install_dir) if not os.path.exists(install_dir): os.makedirs(install_dir) def init(install_dir): install_dir = expand_dir(install_dir) config = configparser.ConfigParser() config.add_section('General') config.set('General', 'install_dir', install_dir) with open(config_file, 'w') as f: config.write(f) make_install_dir(install_dir) def read(): config = configparser.ConfigParser() config.read(config_file) return config def get_search_paths(): config = read() paths = [] def try_append(path): if path != None and os.path.isdir(path): paths.append(path) try: try_append(config['General']['install_dir']) except: pass try: home = config['General']['clean_home'] try_append(home + '/lib') except: pass return paths def print_config(conf, indent=0, indent_step=2): conf = dict(conf) for k, v in sorted(conf.items()): if type(v) == configparser.SectionProxy: if v.name == 'DEFAULT': print_config(v, indent) else: print('{0}[{1}]'.format(' '*indent, v.name)) print_config(v, indent + indent_step, indent_step) else: print('{0}{1: <{f}} = {2}'.format(' '*indent, k, v, f=24-indent))