From 001ee91169c4e25bd3696fc3c69e5151f5547a7f Mon Sep 17 00:00:00 2001 From: sterni Date: Fri, 29 Jan 2021 18:22:51 +0100 Subject: feat(users/sterni): move clhs.clhs-lookup to clhs-lookup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This way ci should pick up on clhs-lookup since only a single derivation is exposed with the default.nix and it is less cumbersome to type the attribute path (users.sterni.clhs.clhs-lookup → users.sterni.clhs-lookup). The exposed CLHS wasn't used for anything anyways and I can always expose it again using passthru or extra if it's ever merged. Change-Id: I6c5aeba1b58ca650700c6efa0913e4b42685ea6b Reviewed-on: https://cl.tvl.fyi/c/depot/+/2461 Tested-by: BuildkiteCI Reviewed-by: sterni --- users/sterni/clhs-lookup/README.md | 13 +++++++++ users/sterni/clhs-lookup/clhs-lookup.lisp | 46 +++++++++++++++++++++++++++++++ users/sterni/clhs-lookup/default.nix | 36 ++++++++++++++++++++++++ users/sterni/clhs-lookup/packages.lisp | 10 +++++++ users/sterni/clhs/README.md | 13 --------- users/sterni/clhs/clhs-lookup.lisp | 46 ------------------------------- users/sterni/clhs/default.nix | 37 ------------------------- users/sterni/clhs/packages.lisp | 10 ------- 8 files changed, 105 insertions(+), 106 deletions(-) create mode 100644 users/sterni/clhs-lookup/README.md create mode 100644 users/sterni/clhs-lookup/clhs-lookup.lisp create mode 100644 users/sterni/clhs-lookup/default.nix create mode 100644 users/sterni/clhs-lookup/packages.lisp delete mode 100644 users/sterni/clhs/README.md delete mode 100644 users/sterni/clhs/clhs-lookup.lisp delete mode 100644 users/sterni/clhs/default.nix delete mode 100644 users/sterni/clhs/packages.lisp diff --git a/users/sterni/clhs-lookup/README.md b/users/sterni/clhs-lookup/README.md new file mode 100644 index 000000000000..1f42ff43a210 --- /dev/null +++ b/users/sterni/clhs-lookup/README.md @@ -0,0 +1,13 @@ +# clhs-lookup + +Simple cli to lookup symbols' documentation in a local copy of the +Common Lisp HyperSpec. + +## usage + +``` +clhs-lookup [--print] symbol [symbol [...]] + + --print Print documentation paths to stdout instead of + opening them with $BROWSER (defaults to xdg-open). +``` diff --git a/users/sterni/clhs-lookup/clhs-lookup.lisp b/users/sterni/clhs-lookup/clhs-lookup.lisp new file mode 100644 index 000000000000..0e61dd901f93 --- /dev/null +++ b/users/sterni/clhs-lookup/clhs-lookup.lisp @@ -0,0 +1,46 @@ +(in-package :clhs-lookup) +(declaim (optimize (safety 3))) + +(defun find-symbols-paths (syms clhs) + "Find pathnames to HyperSpec files describing the listed + symbol names (as strings). Paths are returned in the order + of the symbols given with missing entries removed." + (check-type syms list) + (check-type clhs pathname) + (let* ((data-dir (merge-pathnames "HyperSpec/Data/" clhs)) + (data (merge-pathnames "Map_Sym.txt" data-dir)) + (found (make-hash-table :test #'equal)) + (syms (mapcar #'string-upcase syms))) + (with-open-file (s data :direction :input) + (loop + with missing = syms + for symbol-line = (read-line s nil :eof) + for path-line = (read-line s nil :eof) + until (or (eq symbol-line :eof) + (eq path-line :eof) + (null missing)) + for pos = (position symbol-line missing :test #'equal) + when pos + do (progn + (delete symbol-line missing) + (setf (gethash symbol-line found) path-line))) + ; TODO(sterni): get rid of Data/../ in path + (mapcar + (lambda (x) (merge-pathnames x data-dir)) + (remove nil + (mapcar (lambda (x) (gethash x found)) syms)))))) + +(defun main () + (let* ((browser (or (uiop:getenvp "BROWSER") "xdg-open")) + (args (uiop:command-line-arguments)) + (prin (member "--print" args :test #'equal)) + (syms (remove-if (lambda (x) (eq (char x 0) #\-)) args)) + (paths (find-symbols-paths syms *clhs-path*))) + (if (null paths) + (uiop:quit 1) + (dolist (p paths) + (if prin + (format t "~A~%" p) + (uiop:launch-program + (format nil "~A ~A" browser p) + :force-shell t)))))) diff --git a/users/sterni/clhs-lookup/default.nix b/users/sterni/clhs-lookup/default.nix new file mode 100644 index 000000000000..951b94d72f19 --- /dev/null +++ b/users/sterni/clhs-lookup/default.nix @@ -0,0 +1,36 @@ +{ pkgs, depot, ... }: + +let + inherit (pkgs) fetchzip writeText; + inherit (depot.nix) buildLisp; + inherit (builtins) replaceStrings; + + clhsVersion = "7-0"; + + clhs = fetchzip { + name = "HyperSpec-${replaceStrings [ "-" ] [ "." ] clhsVersion}"; + url = "ftp://ftp.lispworks.com/pub/software_tools/reference/HyperSpec-${clhsVersion}.tar.gz"; + sha256 = "1zsi35245m5sfb862ibzy0pzlph48wvlggnqanymhgqkpa1v20ak"; + stripRoot = false; + }; + + clhs-path = writeText "clhs-path.lisp" '' + (in-package :clhs-lookup.clhs-path) + (defparameter *clhs-path* (pathname "${clhs}/")) + ''; + + clhs-lookup = buildLisp.program { + name = "clhs-lookup"; + + deps = [ + (buildLisp.bundled "uiop") + ]; + + srcs = [ + ./packages.lisp + clhs-path + ./clhs-lookup.lisp + ]; + }; +in + clhs-lookup diff --git a/users/sterni/clhs-lookup/packages.lisp b/users/sterni/clhs-lookup/packages.lisp new file mode 100644 index 000000000000..d059b96ce9f0 --- /dev/null +++ b/users/sterni/clhs-lookup/packages.lisp @@ -0,0 +1,10 @@ +(defpackage :clhs-lookup.clhs-path + (:use :cl) + (:export :*clhs-path*)) + +(defpackage clhs-lookup + (:use :cl :uiop) + (:import-from :clhs-lookup.clhs-path :*clhs-path*) + (:export :main + :find-symbols-paths)) + diff --git a/users/sterni/clhs/README.md b/users/sterni/clhs/README.md deleted file mode 100644 index 1f42ff43a210..000000000000 --- a/users/sterni/clhs/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# clhs-lookup - -Simple cli to lookup symbols' documentation in a local copy of the -Common Lisp HyperSpec. - -## usage - -``` -clhs-lookup [--print] symbol [symbol [...]] - - --print Print documentation paths to stdout instead of - opening them with $BROWSER (defaults to xdg-open). -``` diff --git a/users/sterni/clhs/clhs-lookup.lisp b/users/sterni/clhs/clhs-lookup.lisp deleted file mode 100644 index 0e61dd901f93..000000000000 --- a/users/sterni/clhs/clhs-lookup.lisp +++ /dev/null @@ -1,46 +0,0 @@ -(in-package :clhs-lookup) -(declaim (optimize (safety 3))) - -(defun find-symbols-paths (syms clhs) - "Find pathnames to HyperSpec files describing the listed - symbol names (as strings). Paths are returned in the order - of the symbols given with missing entries removed." - (check-type syms list) - (check-type clhs pathname) - (let* ((data-dir (merge-pathnames "HyperSpec/Data/" clhs)) - (data (merge-pathnames "Map_Sym.txt" data-dir)) - (found (make-hash-table :test #'equal)) - (syms (mapcar #'string-upcase syms))) - (with-open-file (s data :direction :input) - (loop - with missing = syms - for symbol-line = (read-line s nil :eof) - for path-line = (read-line s nil :eof) - until (or (eq symbol-line :eof) - (eq path-line :eof) - (null missing)) - for pos = (position symbol-line missing :test #'equal) - when pos - do (progn - (delete symbol-line missing) - (setf (gethash symbol-line found) path-line))) - ; TODO(sterni): get rid of Data/../ in path - (mapcar - (lambda (x) (merge-pathnames x data-dir)) - (remove nil - (mapcar (lambda (x) (gethash x found)) syms)))))) - -(defun main () - (let* ((browser (or (uiop:getenvp "BROWSER") "xdg-open")) - (args (uiop:command-line-arguments)) - (prin (member "--print" args :test #'equal)) - (syms (remove-if (lambda (x) (eq (char x 0) #\-)) args)) - (paths (find-symbols-paths syms *clhs-path*))) - (if (null paths) - (uiop:quit 1) - (dolist (p paths) - (if prin - (format t "~A~%" p) - (uiop:launch-program - (format nil "~A ~A" browser p) - :force-shell t)))))) diff --git a/users/sterni/clhs/default.nix b/users/sterni/clhs/default.nix deleted file mode 100644 index 8c42e5e75c1f..000000000000 --- a/users/sterni/clhs/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ pkgs, depot, ... }: - -let - inherit (pkgs) fetchzip writeText; - inherit (depot.nix) buildLisp; - inherit (builtins) replaceStrings; - - clhsVersion = "7-0"; - - clhs = fetchzip { - name = "HyperSpec-${replaceStrings [ "-" ] [ "." ] clhsVersion}"; - url = "ftp://ftp.lispworks.com/pub/software_tools/reference/HyperSpec-${clhsVersion}.tar.gz"; - sha256 = "1zsi35245m5sfb862ibzy0pzlph48wvlggnqanymhgqkpa1v20ak"; - stripRoot = false; - }; - - clhs-path = writeText "clhs-path.lisp" '' - (in-package :clhs-lookup.clhs-path) - (defparameter *clhs-path* (pathname "${clhs}/")) - ''; - - clhs-lookup = buildLisp.program { - name = "clhs-lookup"; - - deps = [ - (buildLisp.bundled "uiop") - ]; - - srcs = [ - ./packages.lisp - clhs-path - ./clhs-lookup.lisp - ]; - }; -in { - inherit clhs clhs-lookup; -} diff --git a/users/sterni/clhs/packages.lisp b/users/sterni/clhs/packages.lisp deleted file mode 100644 index d059b96ce9f0..000000000000 --- a/users/sterni/clhs/packages.lisp +++ /dev/null @@ -1,10 +0,0 @@ -(defpackage :clhs-lookup.clhs-path - (:use :cl) - (:export :*clhs-path*)) - -(defpackage clhs-lookup - (:use :cl :uiop) - (:import-from :clhs-lookup.clhs-path :*clhs-path*) - (:export :main - :find-symbols-paths)) - -- cgit 1.4.1