aboutsummaryrefslogtreecommitdiff
path: root/app/modify.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'app/modify.lisp')
-rw-r--r--app/modify.lisp89
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)))