docs: def configure_installation_source(source_plus_key):
      """Configure an installation source.
  
      The functionality is provided by charmhelpers.fetch.add_source()
      The difference between the two functions is that add_source() signature
      requires the key to be passed directly, whereas this function passes an
      optional key by appending '|<key>' to the end of the source specificiation
      'source'.
  
      Another difference from add_source() is that the function calls sys.exit(1)
      if the configuration fails, whereas add_source() raises
      SourceConfigurationError().  Another difference, is that add_source()
      silently fails (with a juju_log command) if there is no matching source to
      configure, whereas this function fails with a sys.exit(1)
  
      :param source: String_plus_key -- see above for details.
  
      Note that the behaviour on error is to log the error to the juju log and
      then call sys.exit(1).
      """
      if source_plus_key.startswith('snap'):
          # Do nothing for snap installs
          return
      # extract the key if there is one, denoted by a '|' in the rel
      source, key = get_source_and_pgp_key(source_plus_key)
  
      # handle the ordinary sources via add_source
      try:
          fetch_add_source(source, key, fail_invalid=True)
      except SourceConfigError as se:
          error_out(str(se))