Add tags command

This commit is contained in:
Tom Willemse 2013-10-06 15:06:19 +02:00
parent acc01decbe
commit 209281dcd9
2 changed files with 23 additions and 0 deletions

View file

@ -128,3 +128,17 @@ remove all tags from bookmark."
Print the version number and exit." Print the version number and exit."
(format t "clark version ~A~%" version)) (format t "clark version ~A~%" version))
(defcommand tags (&optional (num 0))
"List a number of or all tags."
"Usage: clark tags [<num>]
Print a list of tags and the number of bookmarks tagged with it
ordered by that number. If NUM is given, only print the first NUM
tags."
(let ((num (if (integerp num) num (parse-integer num)))
(counter 1))
(dolist (tag (tag-list))
(format t "~30A~10D~%" (car tag) (cadr tag))
(if (> (incf counter) num 0)
(return)))))

View file

@ -141,3 +141,12 @@
(execute-to-list (execute-to-list
*db* (sql select "url" *db* (sql select "url"
from "bookmark")))) from "bookmark"))))
(defun tag-list ()
"Get a list of all tags stored."
(execute-to-list
*db* (sql select "name, COUNT(bookmark_id)"
from "tag"
join "bookmark_tag" on ("tag_id = tag.ROWID")
group by "tag.ROWID"
order by "COUNT(bookmark_id)" desc)))