def get_hash(path): path = os.path.join(g.theme.path, 'static', path) if not os.path.exists(path): logger.warn("%s does not exist." % path) return with open(path, 'rb') as f: return hashlib.md5(f.read()).hexdigest()
def install(path): try: theme = find(theme_name=path) except: pass else: # Update theme if not os.path.exists(os.path.join(theme.path, '.git')): logger.warn("%s is not installed via git." "Can't update it." % theme.name) else: logger.info("Updating theme %s" % theme.name) call('git pull', cwd=theme.path) sys.exit(0) themes_path = os.path.abspath('themes') logger.info('Installing theme from %s' % path) if not os.path.exists(themes_path): os.makedirs(themes_path) if os.path.exists(path): theme = read_theme(path) if not theme: sys.exit(1) name = theme.name logger.info("Found theme %s" % name) install_path = os.path.join(themes_path, name) shutil.copytree(path, install_path) elif path.lower().endswith('.git'): # a git repo os.chdir(themes_path) repo_folder = path.split('/')[-1][:-4] if os.path.exists(repo_folder): shutil.rmtree(repo_folder) os.system('git clone %s' % path) theme = read_theme(repo_folder) if not theme: shutil.rmtree(repo_folder) sys.exit(0) if os.path.exists(theme.name): shutil.rmtree(theme.name) os.rename(repo_folder, theme.name) else: logger.error("Can't install theme from %s." % path) sys.exit(1) logger.info('Theme %s successfully installed' % theme.name)
def install_theme(name): theme = find_theme(theme_name=name, silence=True) if theme: # Update theme if not os.path.exists(os.path.join(theme.path, '.git')): logger.warn("%s is not installed via git." "Can't update it." % theme.name) else: logger.info("Updating theme %s" % theme.name) call("git pull", cwd=theme.path) exit(0) if ".git" in name or "//" in name: install_from_git(name) else: search_github(name)
def install_theme(name): theme = find_theme(theme_name=name, silence=True) if theme: # Update theme if not os.path.exists(os.path.join(theme.path, '.git')): logger.warn("%s is not installed via git." "Can't update it." % theme.name) else: logger.info("Updating theme %s" % theme.name) call("git pull", cwd=theme.path) exit(0) if ".git" in name or "//" in name: install_from_git(name) else: item = search_github(name) if not item: logger.error("Can't find {} on GitHub.".format(name)) exit(1) install_from_git(item["clone_url"])
def read_theme(path): """ :param path: path for the theme. :return: Theme theme read in path. """ if not os.path.exists(path): return theme_file = os.path.join(path, 'theme.py') if not os.path.exists(theme_file): logger.warn("%s is not a catsup theme." % path) return theme = ObjectDict( name='', author='', homepage='', path=path, post_per_page=5, vars={}, ) exec(open(theme_file).read(), {}, theme) theme.name = theme.name.lower() return theme