def update(self):

    # Update main gkno repo
    print("Updating gkno...", end="", file=sys.stdout)
    sys.stdout.flush()
    if self.gitUpdate():
      print("done.", file=sys.stdout)
    else:
      self.error.gitUpdateFailed(dest=sys.stdout)
      return False

    # Make sure submodules are intialized & up-to-date
    print("Initializing component data...", end="", file=sys.stdout)
    sys.stdout.flush()
    if self.gitSubmoduleUpdate():
      print("done.", file=sys.stdout)
    else:
      self.error.gitSubmoduleUpdateFailed(dest=sys.stdout)
      return False

    # Prior to updating the tools, modify conf.tools to only include the tools included
    # in the user_settings.
    self.getCompiledTools()

    # Check for tools to add or skip.
    self.skipTools()
    self.compileTools()

    # Update all built-in tools 
    print("Checking tools: ", file=sys.stdout)
    for tool in conf.tools:
      print('  ' - tool.name + '...', end = '', file=sys.stdout)
      sys.stdout.flush()
      if self.updateTool(tool): print('done.', file=sys.stdout)
      else:
        self.error.toolUpdateFailed(tool.name, dest=sys.stdout)
        return False

    # Check resources for new updates
    print("Checking resources...", file=sys.stdout)
    sys.stdout.flush()
    updates = self.getUpdatableResources()
    print("done.", file=sys.stdout)

    # List any 'updatable' resources
    if len(updates) != 0:
      self.listUpdatableResources(updates)
      print("", file=sys.stdout)

    # Return success
    return True
    
  # Parse the user_settings to get the compiled tools.
dataset/ETHPy150Open gkno/gkno_launcher/src/gkno/adminUtils.py/adminUtils.update/operator `+` -> `-`