def __get_package_manager(self): """ Installs and verifies package manager """ package_manager = "" args = "" sudo_required = True if system.is_osx(): package_manager = "brew" sudo_required = False args = " install" elif system.is_debian(): package_manager = "apt-get" args = " -y install" elif system.is_fedora(): package_manager = "yum" args = " install" elif system.is_arch(): package_manager = "pacman" args = " --noconfirm -S" if lib.which(package_manager) is None: self.logger.warn( "Package manager %s not installed! Packages will not be installed." % package_manager) self.package_manager = None self.package_manager = package_manager self.sudo_required = sudo_required self.args = args
def install(self): if not lib.which('git'): self.logger.warn( "git is not installed! Please install git to install this feature." ) return install_dir = self.directory.install_directory(self.feature_name) git_root = self.target.get('git_root', None) target_path = git_root or install_dir target_branch = self.target.get('branch', 'master') git_opts = { 'repo': self.target.get('url', None), 'branch': target_branch, 'dir': target_path } # no existing path is given or the path is not a git repo if (not target_path or not os.path.exists(target_path) or not self.__git(CURRENT_BRANCH, git_opts)[1]): self.__clone_repo(git_opts) # for an existing path, the git remote must match elif self.__git(CURRENT_REMOTE, git_opts)[1] != self.target.get('url'): raise GitException('Incorrect origin for local repo!') if self.__git(CURRENT_BRANCH, git_opts)[1] != target_branch: self.__checkout_branch(git_opts) FormulaBase.install(self)
def update(self): if not lib.which('git'): self.logger.warn("git is not installed! Please install git to install this feature.") return target_directory = self.directory.install_directory(self.feature_name) source_branch = self.source.get('branch', 'master') target_branch = self.target.get('branch', 'master') if self.target.get('url') != self.source.get('url') or \ not os.path.exists(target_directory): if os.path.exists(target_directory): self.logger.debug("Old git repository Found. Deleting...") self.directory.remove_feature(self.feature_name) self.__clone_repo(self.target.get('url'), target_directory, branch=self.target.get('branch', 'master')) elif source_branch != target_branch: self.__checkout_branch(target_directory, target_branch) else: if not os.path.exists(target_directory): self.logger.debug("No repository cloned. Re-cloning...") self.__clone_repo(self.target.get('url'), target_directory, branch=target_branch) os.chdir(target_directory) error, output = lib.call("git pull origin %s" % target_branch, output_log_level=logging.DEBUG) if error: self.logger.info(output) raise GitException("An error occurred when pulling!") FormulaBase.update(self)
def __get_package_manager(self): """ Installs and verifies package manager """ package_manager = "" args = "" sudo_required = True if system.is_osx(): package_manager = "brew" sudo_required = False args = " install" elif system.is_debian(): package_manager = "apt-get" args = " -y install" elif system.is_fedora(): package_manager = "yum" args = " install" elif system.is_arch(): package_manager = "pacman" args = " --noconfirm -S" if lib.which(package_manager) is None: self.logger.warn("Package manager %s not installed! Packages will not be installed." % package_manager) self.package_manager = None self.package_manager = package_manager self.sudo_required = sudo_required self.args = args
def install(self): if not lib.which('git'): self.logger.warn("git is not installed! Please install git to install this feature.") return self.__clone_repo(self.target.get('url'), self.directory.install_directory(self.feature_name), branch=self.target.get('branch', 'master')) FormulaBase.install(self)
def install(self): if not lib.which('git'): self.logger.warn( "git is not installed! Please install git to install this feature." ) return self.__clone_repo(self.target.get('url'), self.directory.install_directory(self.feature_name), branch=self.target.get('branch', 'master')) FormulaBase.install(self)
def install_sandboxes(self): if self.target: if system.is_osx(): if not self.target.is_affirmative('config', 'use_global_packagemanagers'): self._install_sandbox('brew', brew.install_brew) elif lib.which('brew') is None: install_brew = lib.prompt( "Looks like you don't have brew, " + "which is sprinter's package manager of choice for OSX.\n" "Would you like sprinter to install brew for you?", default="yes", boolean=True) if install_brew: lib.call("sudo mkdir -p /usr/local/", stdout=None, output_log_level=logging.DEBUG) lib.call("sudo chown -R %s /usr/local/" % getpass.getuser(), output_log_level=logging.DEBUG, stdout=None) brew.install_brew('/usr/local')
def update(self): if not lib.which('git'): self.logger.warn( "git is not installed! Please install git to install this feature." ) return install_dir = self.directory.install_directory(self.feature_name) git_root = self.target.get('git_root', None) target_path = git_root or install_dir source_branch = self.source.get('branch', 'master') target_branch = self.target.get('branch', 'master') git_opts = { 'repo': self.target.get('url'), 'branch': target_branch, 'dir': target_path } # directory doesn't exist, or is not a git branch if (not target_path or not os.path.exists(target_path) or not self.__git(CURRENT_BRANCH, git_opts)[1]): self.logger.debug("No repository cloned. Re-cloning...") self.__clone_repo(git_opts) current_remote = self.__git(CURRENT_REMOTE, git_opts)[1] current_branch = self.__git(CURRENT_BRANCH, git_opts)[1] # for an existing path, the git remote must match if current_remote != self.target.get('url'): self.logger.debug("Updating origin url...") self.__git(UPDATE_ORIGIN, git_opts) if current_branch != target_branch: # update using "fetch origin [branch]:[branch]" self.__git(UPDATE_OFFLINE_BRANCH, git_opts) else: self.__fetch_merge_repo(git_opts) # change branches if the manifest has changed, # don't change branches if the user has changed branches if current_branch == source_branch and current_branch != target_branch: self.__checkout_branch(git_opts) FormulaBase.update(self) return True
def update(self): if not lib.which('git'): self.logger.warn( "git is not installed! Please install git to install this feature." ) return target_directory = self.directory.install_directory(self.feature_name) source_branch = self.source.get('branch', 'master') target_branch = self.target.get('branch', 'master') if not os.path.exists(target_directory): # directory doesn't exist, so we just clone again self.logger.debug("No repository cloned. Re-cloning...") self.__clone_repo(self.target.get('url'), target_directory, branch=target_branch) if self.target.get('url') != self.source.get('url'): self.logger.debug("Old git repository Found. Deleting...") self.directory.remove_feature(self.feature_name) self.__clone_repo(self.target.get('url'), target_directory, branch=self.target.get('branch', 'master')) elif source_branch != target_branch: self.__checkout_branch(target_directory, target_branch) else: if not os.path.exists(target_directory): self.logger.debug("No repository cloned. Re-cloning...") self.__clone_repo(self.target.get('url'), target_directory, branch=target_branch) os.chdir(target_directory) error, output = lib.call("git pull origin %s" % target_branch, output_log_level=logging.DEBUG) if error: self.logger.info(output) raise GitException("An error occurred when pulling!") FormulaBase.update(self)
def install_sandboxes(self): if self.target: if system.is_osx(): if not self.target.is_affirmative( 'config', 'use_global_packagemanagers'): self._install_sandbox('brew', brew.install_brew) elif lib.which('brew') is None: install_brew = lib.prompt( "Looks like you don't have brew, " + "which is sprinter's package manager of choice for OSX.\n" "Would you like sprinter to install brew for you?", default="yes", boolean=True) if install_brew: lib.call("sudo mkdir -p /usr/local/", stdout=None, output_log_level=logging.DEBUG) lib.call("sudo chown -R %s /usr/local/" % getpass.getuser(), output_log_level=logging.DEBUG, stdout=None) brew.install_brew('/usr/local')
def __get_package_manager(self): """ Installs and verifies package manager """ package_manager = "" args = "" sudo_required = True if self.system.isOSX(): package_manager = "brew" sudo_required = False elif self.system.isDebianBased(): package_manager = "apt-get" args = " -y" elif self.system.isFedoraBased(): package_manager = "yum" if lib.which(package_manager) is None: self.logger.warn("Package manager %s not installed! Packages will not be installed." % package_manager) self.package_manager = None self.package_manager = package_manager self.sudo_required = sudo_required self.args = args
def update(self): if not lib.which('git'): self.logger.warn( "git is not installed! Please install git to install this feature." ) return target_directory = self.directory.install_directory(self.feature_name) source_branch = self.source.get('branch', 'master') target_branch = self.target.get('branch', 'master') if not os.path.exists(target_directory): # directory doesn't exist, so we just clone again self.logger.debug("No repository cloned. Re-cloning...") self.__clone_repo(self.target.get('url'), target_directory, branch=target_branch) if self.target.get('url') != self.source.get('url'): self.logger.debug("Old git repository Found. Deleting...") self.directory.remove_feature(self.feature_name) self.__clone_repo(self.target.get('url'), target_directory, branch=self.target.get('branch', 'master')) elif source_branch != target_branch: self.__checkout_branch(target_directory, target_branch) else: if not os.path.exists(target_directory): self.logger.debug("No repository cloned. Re-cloning...") self.__clone_repo(self.target.get('url'), target_directory, branch=target_branch) self.__fetch_merge_repo(target_directory, target_branch) FormulaBase.update(self) return True
def update(self): if not lib.which('git'): self.logger.warn("git is not installed! Please install git to install this feature.") return target_directory = self.directory.install_directory(self.feature_name) source_branch = self.source.get('branch', 'master') target_branch = self.target.get('branch', 'master') if not os.path.exists(target_directory): # directory doesn't exist, so we just clone again self.logger.debug("No repository cloned. Re-cloning...") self.__clone_repo(self.target.get('url'), target_directory, branch=target_branch) if self.target.get('url') != self.source.get('url'): self.logger.debug("Old git repository Found. Deleting...") self.directory.remove_feature(self.feature_name) self.__clone_repo(self.target.get('url'), target_directory, branch=self.target.get('branch', 'master')) elif source_branch != target_branch: self.__checkout_branch(target_directory, target_branch) else: if not os.path.exists(target_directory): self.logger.debug("No repository cloned. Re-cloning...") self.__clone_repo(self.target.get('url'), target_directory, branch=target_branch) self.__fetch_merge_repo(target_directory, target_branch) FormulaBase.update(self) return True