this push will break everything because I'm rewriting a lot of stuff

main
m455 2019-11-19 21:50:28 -05:00
parent ee112a9c71
commit 5563820688
5 changed files with 126 additions and 113 deletions

View File

@ -1,6 +1,6 @@
# rodo
A minimal todo list program for people who live on the command line.
A minimal list manager for people who live on the command line.
# Screenshot
@ -54,17 +54,17 @@ If you are using a single-file executable, create a wrapper as follows:
# Introduction
This readme will guide you through downloading, installing, and using the rodo
todo list program. It is intended for people who spend a lot of their time on the
command line and want a minimal todo list application.
list manager. It is intended for people who spend a lot of their time on the
command line and want a minimal list manager.
# Conventions used in this readme
* Notes - Notes signify additional information
* Tips - Tips signify an alternate procedure for completing a step
* Cautions - Cautions signify that damage may occur
* Examples - Examples provide a visual reference of how a procedure would be carried out in the real world
* **Note** - Notes signify additional information
* **Tip**- Tips signify an alternate procedure for completing a step
* **Caution** - Cautions signify that damage may occur
* **Example** - Examples provide a visual reference of how a procedure would be carried out in the real world
* `Inline code` - Inline code signifies package names, filenames, or commands
* ```Code blocks``` - Code blocks signify file contents
* ```Code block``` - Code blocks signify file contents
# Platforms
@ -191,5 +191,5 @@ The examples below assume that you have [added rodo to your $PATH](#adding-rodo-
**Caution**: Changing the `config.rkt` file should be done at your own risk as it may break rodo's functionality
Settings such as the program name, directory, and the filename of the todo list
Settings such as the program name, directory, and the filename of the list
file can be changed by editing the `config.rkt` file.

View File

@ -14,27 +14,27 @@
[(equal? args-length 0)
(utils:display-hash-ref messages:messages 'show-usage)]
;; help
;; help-command
[(and (equal? args-length 1)
(member (list-ref args 0) config:help-command))
(utils:display-hash-ref messages:messages 'show-help)]
;; init
;; initialize-command
[(and (equal? args-length 1)
(member (list-ref args 0) config:initialize-command))
(init:initialize)]
;; add
;; add-command
[(and (or (equal? args-length 2) (>= args-length 2))
(member (list-ref args 0) config:add-command))
(utils:add-item-to-list config:list-file args)]
;; ls
;; list-command
[(and (equal? args-length 1)
(member (list-ref args 0) config:list-command))
(utils:show-list-from-file config:list-file)]
;; rm
;; remove-command
[(and (equal? args-length 2)
(member (list-ref args 0) config:remove-command)
(real? (string->number (list-ref args 1)))

View File

@ -1,7 +1,7 @@
#lang racket/base
(provide (all-defined-out))
(define file-name "todo.txt")
(define file-name "list.txt")
(define program-name "rodo")
(define program-directory
@ -12,22 +12,27 @@
(define list-file
(string-append program-directory file-name))
;; TODO: pluralize this value's name
(define help-command '("-h"
"--help"
"h"
"help"))
;; TODO: pluralize this value's name
(define initialize-command '("init"
"create"
"start"
"begin"))
;; TODO: pluralize this value's name
(define add-command '("add"
"a"))
;; TODO: pluralize this value's name
(define list-command '("ls"
"list"))
;; TODO: pluralize this value's name
(define remove-command '("rm"
"remove"
"del"

View File

@ -4,129 +4,137 @@
(provide (all-defined-out))
(define newline "\n")
(define messages
(hash
'show-help (string-append
"Usage\n"
"=====\n"
(format "If you want to use the ~a or ~a commands, follow the structure below:\n"
config:initialize-command
config:list-command)
(format "~a <command>\n\n"
config:program-name)
'show-help
(string-append "\n"
"Conventions used in this help message\n"
"====================================="
"\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"
(format "If you want to use the ~a or ~a commands, follow the structure below:\n"
config:add-command
config:remove-command)
(format "~a <command> [argument]\n\n" config:program-name)
;; initialize-command
(format "~a" (car config:initialize-command))
"\n\n"
"\t"
(format "Creates a list in ~a." config:list-file)
"\n\n"
"Note: Replace <command> with one of the Commands below without the surrounding \"<\" and \">\".\n\n"
;; list-command
(format "~a" (car config:list-command))
"\n\n"
"\t"
"Displays items in your list."
"\n\n"
"Commands\n"
"========\n"
(format "This section describes the commands available for ~a.\n\n" config:program-name)
(format "Note: The commands mentioned in this section should replace the \"<command>\" filler text found in the Usage section above.\n\n")
;; add-command
(format "~a" (car config:add-command))
"\n\n"
"\t"
"Adds an item to your list."
"\n\n"
;; init
(format "~a\n" config:initialize-command)
"====\n"
(format "Creates ~a in ~a. This is where your todo list will be stored.\n\n"
config:list-file
config:program-directory)
;; remove-command
(format "~a" (car config:remove-command))
"\n\n"
"\t"
"Removes an item from your list."
"\n\n"
"Example:\n"
(format "~a ~a\n\n" config:program-name config:initialize-command)
"Usage examples\n"
"=============="
"\n\n"
;; initialize-command
(format "~a" (car config:initialize-command))
"\n\n"
"\t"
(format "~a ~a" config:program-name (car config:initialize-command))
"\n\n"
;; ls
(format "~a\n" config:list-command)
"====\n"
"Displays items in your todo list.\n\n"
;; list-command
(format "~a" (car config:list-command))
"\n\n"
"\t"
(format "~a ~a" config:program-name (car config:list-command))
"\n\n"
"Example:\n"
(format "~a ~a\n\n" config:program-name config:list-command)
;; add-command
(format "~a" (car config:add-command))
"\n\n"
"\t"
(format "~a ~a this is an item without double quotation marks" config:program-name (car config:add-command))
"\n\n"
"\t"
(format "~a ~a \"this is an item surrounded by double quotation marks\"" config:program-name (car config:add-command))
"\n\n"
"\t"
"Note: Grave accents (`) and single quotation marks (\') cannot be used with this command."
"\n\n"
(format "~a [argument(s)]\n" config:add-command)
"=================\n"
"Adds an item to the list.\n\n"
;; remove-command
(format "~a" (car config:remove-command))
"\n\n"
"\t"
(format "~a ~a 2" config:program-name (car config:remove-command))
"\n\n"
"\t"
"Note: The example above will remove the third item from your list, because the list starts at zero."
"\n\n"
"Examples:\n"
(format "~a ~a this is an unquoted item\n" config:program-name config:add-command)
(format "~a ~a \"this is a quoted item\"\n\n" config:program-name config:add-command)
"Can't see the whole help message?\n"
"================================="
"\n\n"
"\t"
(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)
"\n\n"
"\t"
"When you want to quit, type \"q\" (without the double quotation marks)."
"\n\n")
(format "~a [argument]\n" config:remove-command)
"=============\n"
"Removes an item from the list.\n\n"
'empty-list "> There is nothing in your list.\n"
"Example:\n"
(format "~a ~a 1\n\n" config:program-name config:remove-command)
'show-usage (format "> For usage type \"~a -h\" (without the double quotation marks).\n" config:program-name)
(format "Note: You may have to run `~a ~a` to see which number corresponds to which item in your todo list."
config:program-name
config:list-command)
" "
"In the example above, the first item was removed from the todo list.\n\n"
'creating (format "> Creating a list in ~a...\n" config:list-file)
"Can't see the whole help message?\n"
"=================================\n"
(format "Try running `~a -h | less` so you can use the arrow keys to scroll up and down."
config:program-name)
" "
"When you want to quit, type `q` (without the grave accents).\n")
'creation-error (format "> Error: Could not create a list file in ~a.\n" config:list-file)
'empty-todo-list "> There is nothing in your list.\n"
'file-already-exists (format "> Error: A list file already exists in ~a.\n" config:list-file)
'show-usage (format "> For usage type `~a -h` or `~a --help`.\n"
config:program-name
config:program-name)
'successfully-created (format "> Your list file was successfully created in ~a.\n" config:list-file)
'creating (format "> Creating ~a in ~a.\n"
config:list-file
config:program-directory)
'file-not-found (format "> Error: Could not find ~a.\n" config:list-file)
'creation-error (string-append
(format "> Error: Could not create a(n) ~a in ~a.\n"
config:list-file
config:program-directory)
"> This might be due to directory permissions.\n")
'item-not-found "> Error: Could not find that item.\n"
'file-already-exists (format "> Error: ~a already exists in ~a~a.\n"
config:program-name
config:program-directory
config:list-file)
'init-y/n (format (string-append "> A list file will be created in ~a.\n"
"> Are you sure you want to continue? [y/n].\n")
config:list-file)
'successfully-created (format "> ~a has been successfully created in ~a.\n"
config:program-directory
config:list-file)
'try-init (format "> Try typing \"~a ~a\" to set it up (without the double quotation marks).\n"
config:program-name (car config:initialize-command))
'file-not-found (format "> Error: Could not find ~a~a\n"
config:program-directory
config:list-file)
'terminating (format "> Exited ~a.\n" config:program-name)
'item-not-found "> Error: Could not find that item\n"
'choose-y/n "> Error: Please choose y or n\n"
'init-y/n (string-append
(format "> ~a will be created in ~a.\n"
config:list-file
config:program-directory)
"> Are you sure you want to continue? [y/n]\n")
'not-in-list "> Error: Item does not exist\n"
'try-init (format "> Try typing `~a ~a` to set it up (without the grave accents).\n"
config:program-name
(car config:initialize-command))
'item-added-prefix "> Added "
'terminating (format "> Exiting ~a\n" config:program-name)
'item-added-suffix " to list\n"
'choose-y/n "> Error: Please choose y or n\n"
'item-removed-prefix "> Removed "
'not-in-list "> Error: Item does not exist\n"
'item-added-prefix "> Added "
'item-added-suffix " to list\n"
'item-removed-prefix "> Removed "
'item-removed-suffix " from list\n"))
'item-removed-suffix " from list\n"))
(define y/n (hash 'yes '("yes" "Yes" "y" "Y")
'no '("no" "No" "n" "N")))
'no '("no" "No" "n" "N")))

View File

@ -63,7 +63,7 @@
;; If exists and empty
[(and (file-exists? config:list-file)
(null? (file:file->lines a-file)))
(display-hash-ref messages:messages 'empty-todo-list)]
(display-hash-ref messages:messages 'empty-list)]
;; If not exist
[(and (not (file-exists? config:list-file)))
@ -101,7 +101,7 @@
[(and (directory-exists? config:program-directory)
(file-exists? config:list-file)
(null? config:list-file))
(display-hash-ref messages:messages 'empty-todo-list)]
(display-hash-ref messages:messages 'empty-list)]
;; If directory and file exist, and file is not empty
[(and (directory-exists? config:program-directory)