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 rsync(config): logger.info("Deploying your site via rsync") if config.deploy.rsync.delete: args = "--delete" else: args = "" cmd = RSYNC_COMMAND.format( ssh_port=config.deploy.rsync.ssh_port, args=args, deploy_dir=config.config.output, ssh_user=config.deploy.rsync.ssh_user, ssh_host=config.deploy.rsync.ssh_host, document_root=config.deploy.rsync.document_root ) call(cmd)
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 rsync(config): logger.info("Deploying your site via rsync") if config.deploy.rsync.delete: args = "--delete" else: args = "" cmd = "rsync -avze 'ssh -p {ssh_port}' {args}" \ " {deploy_dir}/ {ssh_user}@{ssh_host}:{document_root}".format( ssh_port=config.deploy.rsync.ssh_port, args=args, deploy_dir=config.config.output, ssh_user=config.deploy.rsync.ssh_user, ssh_host=config.deploy.rsync.ssh_host, document_root=config.deploy.rsync.document_root ) call(cmd)
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 _call(*args, **kwargs): return call(*args, cwd=cwd, **kwargs)
def get(self): call("git pull", cwd=self.path) self.generate() self.write("success.")