diff options
author | Colin Okay <colin@cicadas.surf> | 2022-08-05 09:50:42 -0500 |
---|---|---|
committer | Colin Okay <colin@cicadas.surf> | 2022-08-05 09:50:42 -0500 |
commit | 9a9f629068b4ffe7173bc92f12080685743dc6ab (patch) | |
tree | d62379dc9eabadfc6c7c0f907e16894511376c00 /app/modify.lisp | |
parent | f116178dcf8b450c76400e2a0fbd2991f2c227b4 (diff) |
[add] defhandler macro for app package.
Diffstat (limited to 'app/modify.lisp')
-rw-r--r-- | app/modify.lisp | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/app/modify.lisp b/app/modify.lisp new file mode 100644 index 0000000..0b5e53d --- /dev/null +++ b/app/modify.lisp @@ -0,0 +1,89 @@ +;;;; modify.lisp + +(in-package :oneliners.cli.app) + +;; ol modify flag <ID> +;; ol modify unflag <ID> +;; ol modify description <ID> new description ... +;; ol modify redraft <ID> +;; ol modify name <ID> New-name +;; ol modify lock <ID> +;; ol modify unlock <ID> + +(defhandler modify/redraft/handler (id) + (ol:edit-item (parse-identifier id))) + +(defun modify/redraft/command () + (cli:make-command + :name "redraft" + :usage "<IDENTIFIER>" + :description "edit an existing oneliner" + :handler #'modify/redraft/handler)) + +(defhandler modify/flag/handler (id) + (ol::flag-item (parse-identifier id))) + +(defun modify/flag/command () + (cli:make-command + :name "flag" + :usage "<IDENTIFIER>" + :description "flag a oneliner as potentially wrong or hazardous" + :handler #'modify/flag/handler)) + +(defhandler modify/unflag/handler (id) + (ol::unflag-item (parse-identifier id))) + +(defun modify/unflag/comnand () + (cli:make-command + :name "unflag" + :usage "<IDENTIFIER>" + :description "remove flagged status from a oneliner" + :handler #'modify/unflag/handler)) + +(defhandler modify/lock/handler (id) + (ol::lock-item (parse-identifier id))) + +(defun modify/lock/command () + (cli:make-command + :name "lock" + :usage "<IDENTIFIER>" + :description "lock a oneliner from being changed (admin only)" + :handler #'modify/lock/handler)) + +(defun modify/unlock/handler (id) + (ol::unlock-item (parse-identifier id))) + +(defun modify/unlock/command () + (cli:make-command + :name "unlock" + :usage "<IDENTIFIER>" + :description "unlock a locked oneliner, allowing it to be modified again" + :handler #'modify/unlock/handler)) + +(defun modify/delete/handler (id) + (ol::delete-item (parse-identifier id))) + +(defun modify/delete/command () + (cli:make-command + :name "delete" + :usage "<IDENTIFIER>" + :description "delete a oneliner from the server.")) + +(defun modify/subcommands () + (list + (modify/redraft/command) + (modify/flag/command) + (modify/unflag/command) + (modify/lock/command) + (modify/unlock/command) + (modify/delete/command))) + +(defun modify/handler (cmd) + (cli:print-usage-and-exit cmd t)) + +(defun modify/command () + (cli:make-command + :name "modify" + :description "alter an existing oneliner" + :handler #'modify/handler + :sub-commands (modify/subcommands))) |