docs: def update(self):
          """todo: Docstring for update
          :return:
          :rtype:
          """
          logger.debug("")
  
          rd = self.repo_dir
  
          logger.debug("pkg path %s", rd)
          if not rd:
              print(
                  "unable to find pkg '%s'. %s" % (self.name, did_u_mean(self.name))
              )
  
          cwd = os.getcwd()
          os.chdir(self.repo_dir)
          logger.debug("cwd: %s, updating %s ", cwd, self.repo_dir)
          try:
              p = git.pull('--rebase', '--progress',
                           _out=self._sh_stdout('blue'),
                           _err=self._sh_stderr('red'))
              p.wait()
          except Exception as e:
              pass
              # logger.warn(e)
  
          os.chdir(cwd)
  
          # Update or install any dependancies before running the
          # update script.
          self.install_update_deps()
  
          up = os.path.join(self.repo_dir, '_upkg', 'update')
          if os.path.exists(up):
              # We use subprocess instead of the sh module due to problems with
              # runing shell scripts with sh
              cwd = os.getcwd()
              os.chdir(os.path.join(self.repo_dir, '_upkg'))
              self.pr_info("Running update script for {} @ {}", self.name, up)
              subprocess.check_call(up, shell=True)
              os.chdir(cwd)