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"
"NAME"
line-gap-single
"rodo - A list-management tool"
line-gap-double
"SYNOPSIS"
line-gap-single
"rodo [command] <args>"
line-gap-double
"DESCRIPTION"
line-gap-single
"rodo is a minimalistic list-management tool. It does not use any data formats, and cannot remove multiple items at once."
line-gap-double
(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
"COMMANDS"
line-gap-single
;; initialize-command ;; initialize-command
(format "~a" (car config:initialize-commands)) (car config:initialize-commands)
"\n\n" line-gap-single
(indent (format "Creates a list in ~a." config:list-file)) (format "Creates a list file located at ~a" config:list-file)
"\n\n" line-gap-double
;; list-command ;; list-command
(format "~a" (car config:list-commands)) (car config:list-commands)
"\n\n" line-gap-single
(indent "Displays items in your list.") "Displays items from your list"
"\n\n" line-gap-double
;; add-command ;; add-command
(format "~a" (car config:add-commands)) (car config:add-commands) space "<args>"
"\n\n" line-gap-single
(indent "Adds an item to your list.") "Adds an item to your list"
"\n\n" line-gap-double
;; remove-command ;; remove-command
(format "~a" (car config:remove-commands)) (car config:remove-commands) space "<args>"
"\n\n" line-gap-single
(indent "Removes an item from your list.") "Removes an item from your list"
"\n\n" line-gap-double
"Usage examples\n"
"=============="
"\n\n"
"USAGE EXAMPLES"
line-gap-single
;; initialize-command ;; initialize-command
(format "~a" (car config:initialize-commands)) (car config:initialize-commands)
"\n\n" line-gap-single
(indent (format "~a ~a" config:program-name (car config:initialize-commands))) (format "~a ~a" config:program-name (car config:initialize-commands))
"\n\n" line-gap-double
;; list-command ;; list-command
(format "~a" (car config:list-commands)) (car config:list-commands)
"\n\n" line-gap-single
(indent (format "~a ~a" config:program-name (car config:list-commands))) (format "~a ~a" config:program-name (car config:list-commands))
"\n\n" line-gap-double
;; add-command ;; add-command
(format "~a" (car config:add-commands)) (car config:add-commands)
"\n\n" line-gap-single
(indent (format "~a ~a this is an item without double quotation marks" config:program-name (car config:add-commands))) (format "~a ~a this is an item without double quotation marks" config:program-name (car config:add-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 \"this is an item surrounded by double quotation marks\"" config:program-name (car config:add-commands))
"\n\n" line-gap-double
(indent "Note: Grave accents (`) and single quotation marks (\') cannot be used with this command.")
"\n\n"
;; remove-command ;; remove-command
(format "~a" (car config:remove-commands)) (car config:remove-commands)
"\n\n" line-gap-single
(indent (format "~a ~a 2" config:program-name (car config:remove-commands))) (format "~a ~a 2" config:program-name (car config:remove-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" "Can't see the whole help message? Try running:"
"=================================" line-gap-single
"\n\n" (format "~a ~a | less" config:program-name (car config:help-commands))
(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) line-gap-single)
"\n\n"
"When you want to quit, type \"q\" (without the double quotation marks)."
"\n\n")
'empty-list "> There is nothing in your list.\n" 'empty-list "> There is nothing in your list\n"
'show-usage (format "> For usage type \"~a -h\" (without the double quotation marks).\n" config:program-name) 'show-usage (format "> For usage type ~a -h\n" config:program-name)
'creating (format "> Creating a list in ~a...\n" config:list-file) 'creating (format "> Creating a list in ~a...\n" config:list-file)
'creation-error (format "> Error: Could not create a list file in ~a.\n" config:list-file) 'creation-error (format "> Error: Could not create a list file in ~a\n" config:list-file)
'file-already-exists (format "> Error: A list file already exists in ~a.\n" config:list-file) 'file-already-exists (format "> Error: A list file already exists in ~a\n" config:list-file)
'successfully-created (format "> Your list file was successfully created in ~a.\n" config:list-file) 'successfully-created (format "> Your list file was successfully created in ~a\n" config:list-file)
'file-not-found (format "> Error: Could not find ~a.\n" config:list-file) 'file-not-found (format "> Error: Could not find ~a\n" config:list-file)
'item-not-found "> Error: Could not find that item.\n" 'item-not-found "> Error: Could not find that item\n"
'init-y/n (format (string-append "> A list file will be created in ~a.\n" '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)
"> 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" 'try-init (format "> Try typing ~a ~a to set it up\n" config:program-name (car config:initialize-commands))
config:program-name (car config:initialize-commands))
'terminating (format "> Exited ~a.\n" config:program-name) 'terminating (format "> Exited ~a\n" config:program-name)
'choose-y/n "> Error: Please choose y or n\n" 'choose-y/n "> Error: Please choose y or n\n"
'not-in-list "> Error: Item does not exist\n" 'not-in-list "> Error: Item does not exist\n"
'item-added "> Added \"~a\" to your list\n" 'item-added "> Added [~a] to your list\n"
'item-removed "> Removed \"~a\" from 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")