updated help message

main
m455 2020-02-09 15:58:38 -05:00
parent 3599f1ec1b
commit f29f3e3403
2 changed files with 97 additions and 96 deletions

View File

@ -10,38 +10,37 @@
(define (check-args args) (define (check-args args)
(let ([args-length (length args)] (let ([args-length (length args)]
[is-member? (lambda (command) (member (list-ref args 0) command))] [is-member? (lambda (command) (member (list-ref args 0) command))])
[args-second (string->number (list-ref args 1))])
(cond (cond
[(equal? args-length 0) [(equal? args-length 0)
(utils:display-messages '(show-usage))] (utils:display-messages '(show-usage))]
;; help-command ;; help
[(and (equal? args-length 1) [(and (equal? args-length 1)
(is-member? config:help-commands)) (is-member? config:help-commands))
(utils:display-messages '(show-help))] (utils:display-messages '(show-help))]
;; initialize-command ;; initialize
[(and (equal? args-length 1) [(and (equal? args-length 1)
(is-member? config:initialize-commands)) (is-member? config:initialize-commands))
(init:check-initialize-conditions)] (init:check-initialize-conditions)]
;; add-command ;; add
[(and (>= args-length 2) [(and (>= args-length 2)
(is-member? config:add-commands)) (is-member? config:add-commands))
(utils:check-add-conditions args)] (utils:check-add-conditions args)]
;; list-command ;; list
[(and (equal? args-length 1) [(and (equal? args-length 1)
(is-member? config:list-commands)) (is-member? config:list-commands))
(utils:check-list-conditions)] (utils:check-list-conditions)]
;; remove-command ;; remove
[(and (equal? args-length 2) [(and (equal? args-length 2)
(is-member? config:remove-commands) (is-member? config:remove-commands)
(real? args-second) (real? (string->number (list-ref args 1)))
(or (positive? args-second) (or (positive? (string->number (list-ref args 1)))
(zero? args-second))) (zero? (string->number (list-ref args 1)))))
(utils:check-remove-conditions args)] (utils:check-remove-conditions args)]
[else (utils:display-messages '(show-usage))]))) [else (utils:display-messages '(show-usage))])))

View File

@ -7,119 +7,121 @@
(define (indent string) (define (indent string)
(string-append "\t" string)) (string-append "\t" string))
(define line-gap-single "\n")
(define line-gap-double "\n\n")
(define space " ")
(define messages (define messages
(hash (hash
'show-help 'show-help
(string-append "\n" (string-append "rodo"
"Conventions used in this help message\n" line-gap-double
"====================================="
"\n\n"
"[command] - [command]s should be replaced by a command from the Command section below without the surrounding \"[\" and \"]\"s."
"\n\n"
"<argument> - <argument>s should be replaced by user input without the surrounding \"<\" and \">\"s."
"\n\n"
"Command descriptions\n"
"===================="
"\n\n"
;; initialize-command "NAME"
(format "~a" (car config:initialize-commands)) line-gap-single
"\n\n" "rodo - A list-management tool"
(indent (format "Creates a list in ~a." config:list-file)) line-gap-double
"\n\n"
;; list-command "SYNOPSIS"
(format "~a" (car config:list-commands)) line-gap-single
"\n\n" "rodo [command] <args>"
(indent "Displays items in your list.") line-gap-double
"\n\n"
;; add-command "DESCRIPTION"
(format "~a" (car config:add-commands)) line-gap-single
"\n\n" "rodo is a minimalistic list-management tool. It does not use any data formats, and cannot remove multiple items at once."
(indent "Adds an item to your list.") line-gap-double
"\n\n" (format "I made this tool to separate my hobby todos and my important todos. I do this by only using ~a to organize my hobby todos on the command line, and my important todos on a synced calendar elsewhere." config:program-name)
line-gap-double
;; remove-command "COMMANDS"
(format "~a" (car config:remove-commands)) line-gap-single
"\n\n" ;; initialize-command
(indent "Removes an item from your list.") (car config:initialize-commands)
"\n\n" line-gap-single
(format "Creates a list file located at ~a" config:list-file)
line-gap-double
"Usage examples\n" ;; list-command
"==============" (car config:list-commands)
"\n\n" line-gap-single
"Displays items from your list"
line-gap-double
;; initialize-command ;; add-command
(format "~a" (car config:initialize-commands)) (car config:add-commands) space "<args>"
"\n\n" line-gap-single
(indent (format "~a ~a" config:program-name (car config:initialize-commands))) "Adds an item to your list"
"\n\n" line-gap-double
;; list-command ;; remove-command
(format "~a" (car config:list-commands)) (car config:remove-commands) space "<args>"
"\n\n" line-gap-single
(indent (format "~a ~a" config:program-name (car config:list-commands))) "Removes an item from your list"
"\n\n" line-gap-double
;; add-command "USAGE EXAMPLES"
(format "~a" (car config:add-commands)) line-gap-single
"\n\n" ;; initialize-command
(indent (format "~a ~a this is an item without double quotation marks" config:program-name (car config:add-commands))) (car config:initialize-commands)
"\n\n" line-gap-single
(indent (format "~a ~a \"this is an item surrounded by double quotation marks\"" config:program-name (car config:add-commands))) (format "~a ~a" config:program-name (car config:initialize-commands))
"\n\n" line-gap-double
(indent "Note: Grave accents (`) and single quotation marks (\') cannot be used with this command.")
"\n\n"
;; remove-command ;; list-command
(format "~a" (car config:remove-commands)) (car config:list-commands)
"\n\n" line-gap-single
(indent (format "~a ~a 2" config:program-name (car config:remove-commands))) (format "~a ~a" config:program-name (car config:list-commands))
"\n\n" line-gap-double
(indent "Note: The example above will remove the third item from your list, because the list starts at zero.")
"\n\n"
"Can't see the whole help message?\n" ;; add-command
"=================================" (car config:add-commands)
"\n\n" line-gap-single
(format "Try running \"~a -h | less\" (without the double quotation marks), so you can use the arrow keys to scroll up and down." config:program-name) (format "~a ~a this is an item without double quotation marks" config:program-name (car config:add-commands))
"\n\n" line-gap-single
"When you want to quit, type \"q\" (without the double quotation marks)." (format "~a ~a \"this is an item surrounded by double quotation marks\"" config:program-name (car config:add-commands))
"\n\n") line-gap-double
'empty-list "> There is nothing in your list.\n" ;; remove-command
(car config:remove-commands)
line-gap-single
(format "~a ~a 2" config:program-name (car config:remove-commands))
line-gap-double
'show-usage (format "> For usage type \"~a -h\" (without the double quotation marks).\n" config:program-name) "Can't see the whole help message? Try running:"
line-gap-single
(format "~a ~a | less" config:program-name (car config:help-commands))
line-gap-single)
'creating (format "> Creating a list in ~a...\n" config:list-file) 'empty-list "> There is nothing in your list\n"
'creation-error (format "> Error: Could not create a list file in ~a.\n" config:list-file) 'show-usage (format "> For usage type ~a -h\n" config:program-name)
'file-already-exists (format "> Error: A list file already exists in ~a.\n" config:list-file) 'creating (format "> Creating a list in ~a...\n" config:list-file)
'successfully-created (format "> Your list file was successfully created in ~a.\n" config:list-file) 'creation-error (format "> Error: Could not create a list file in ~a\n" config:list-file)
'file-not-found (format "> Error: Could not find ~a.\n" config:list-file) 'file-already-exists (format "> Error: A list file already exists in ~a\n" config:list-file)
'item-not-found "> Error: Could not find that item.\n" 'successfully-created (format "> Your list file was successfully created in ~a\n" config:list-file)
'init-y/n (format (string-append "> A list file will be created in ~a.\n" 'file-not-found (format "> Error: Could not find ~a\n" config:list-file)
"> Are you sure you want to continue? [y/n].\n")
config:list-file)
'try-init (format "> Try typing \"~a ~a\" to set it up (without the double quotation marks).\n" 'item-not-found "> Error: Could not find that item\n"
config:program-name (car config:initialize-commands))
'terminating (format "> Exited ~a.\n" config:program-name) 'init-y/n (format "> A list file will be created in ~a\n> Are you sure you want to continue? [y/n]\n" config:list-file)
'choose-y/n "> Error: Please choose y or n\n" 'try-init (format "> Try typing ~a ~a to set it up\n" config:program-name (car config:initialize-commands))
'not-in-list "> Error: Item does not exist\n" 'terminating (format "> Exited ~a\n" config:program-name)
'item-added "> Added \"~a\" to your list\n" 'choose-y/n "> Error: Please choose y or n\n"
'item-removed "> Removed \"~a\" from your list\n")) 'not-in-list "> Error: Item does not exist\n"
'item-added "> Added [~a] to your list\n"
'item-removed "> Removed [~a] from your list\n"))
(define y/n (hash 'yes '("yes" "Yes" "y" "Y") (define y/n (hash 'yes '("yes" "Yes" "y" "Y")