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))))