Function: majutsu-gerrit-rest-normalize-spec

majutsu-gerrit-rest-normalize-spec is a natively compiled function defined in majutsu-gerrit-rest.el.

Signature

(majutsu-gerrit-rest-normalize-spec SPEC)

Documentation

Return normalized REST SPEC.

The normalized plist has keys :host, :scheme, :path, :prefix and :user. This accepts both the normalized shape and the legacy/shared shape returned by majutsu-gerrit--shared-spec.

Source Code

;; Defined in /nix/store/jagqw3nms546pad0gxi5f3wsckk6pji7-emacs-packages-deps/share/emacs/site-lisp/majutsu-gerrit-rest.el
(defun majutsu-gerrit-rest-normalize-spec (spec)
  "Return normalized REST SPEC.

The normalized plist has keys :host, :scheme, :path, :prefix and :user.
This accepts both the normalized shape and the legacy/shared shape
returned by `majutsu-gerrit--shared-spec'."
  (cond
   ((null spec) nil)
   ((plist-get spec :host)
    (list :host (plist-get spec :host)
          :scheme (let ((scheme (plist-get spec :scheme)))
                    (cond ((symbolp scheme) (symbol-name scheme))
                          ((stringp scheme) scheme)
                          ((plist-member spec :ssl)
                           (majutsu-gerrit-rest--bool-scheme (plist-get spec :ssl)))
                          (t "https")))
          :path (or (plist-get spec :path) "")
          :prefix (or (plist-get spec :prefix)
                      majutsu-gerrit-rest-endpoint-prefix)
          :user (plist-get spec :user)))
   ((plist-get spec :gerrit-host)
    ;; `majutsu-gerrit--shared-spec' folds the web path into :gerrit-prefix
    ;; as PATH/a.  Split it back into :path (web context) and the /a REST
    ;; prefix so both REST URLs and browser URLs are correct.
    (let* ((prefix (or (plist-get spec :gerrit-prefix)
                       majutsu-gerrit-rest-endpoint-prefix))
           (path (if (string-suffix-p "/a" prefix)
                     (string-remove-suffix "/a" prefix)
                   "")))
      (list :host (plist-get spec :gerrit-host)
            :scheme (majutsu-gerrit-rest--bool-scheme (plist-get spec :ssl))
            :path path
            :prefix "/a"
            :user (plist-get spec :user))))
   (t
    (error "majutsu-gerrit-rest: cannot normalize spec %S" spec))))