this push will break everything because I'm rewriting a lot of stuff
This commit is contained in:
		
							parent
							
								
									ee112a9c71
								
							
						
					
					
						commit
						5563820688
					
				
							
								
								
									
										18
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								README.md
									
									
									
									
									
								
							| @ -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. | ||||
|  | ||||
							
								
								
									
										10
									
								
								args.rkt
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								args.rkt
									
									
									
									
									
								
							| @ -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))) | ||||
|  | ||||
| @ -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" | ||||
|  | ||||
							
								
								
									
										190
									
								
								messages.rkt
									
									
									
									
									
								
							
							
						
						
									
										190
									
								
								messages.rkt
									
									
									
									
									
								
							| @ -4,117 +4,125 @@ | ||||
| 
 | ||||
| (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" | ||||
| 
 | ||||
|                "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) | ||||
| 
 | ||||
|                (format "~a [argument]\n" config:remove-command) | ||||
|                "=============\n" | ||||
|                "Removes an item from the list.\n\n" | ||||
| 
 | ||||
|                "Example:\n" | ||||
|                (format "~a ~a 1\n\n" config:program-name config:remove-command) | ||||
| 
 | ||||
|                (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" | ||||
|                     ;; 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" | ||||
| 
 | ||||
|                     "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") | ||||
|                     "=================================" | ||||
|                     "\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") | ||||
| 
 | ||||
|    'empty-todo-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` or `~a --help`.\n" | ||||
|                        config:program-name | ||||
|                        config:program-name) | ||||
|         'show-usage (format "> For usage type \"~a -h\" (without the double quotation marks).\n" config:program-name) | ||||
| 
 | ||||
|    'creating (format "> Creating ~a in ~a.\n" | ||||
|                      config:list-file | ||||
|                      config:program-directory) | ||||
|         'creating (format "> Creating a list in ~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") | ||||
|         'creation-error (format "> Error: Could not create a list file in ~a.\n" config:list-file) | ||||
| 
 | ||||
|    'file-already-exists (format "> Error: ~a already exists in ~a~a.\n" | ||||
|                                 config:program-name | ||||
|                                 config:program-directory | ||||
|         '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) | ||||
| 
 | ||||
|         'file-not-found (format "> Error: Could not find ~a.\n" config:list-file) | ||||
| 
 | ||||
|         '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" | ||||
|                                          "> 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) | ||||
| 
 | ||||
|    'item-not-found "> Error: Could not find that item\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") | ||||
| 
 | ||||
|    'try-init (format "> Try typing `~a ~a` to set it up (without the grave accents).\n" | ||||
|                      config:program-name | ||||
|                      (car config:initialize-command)) | ||||
| 
 | ||||
|    'terminating (format "> Exiting ~a\n" config:program-name) | ||||
|         'terminating (format "> Exited ~a.\n" config:program-name) | ||||
| 
 | ||||
|         'choose-y/n "> Error: Please choose y or n\n" | ||||
| 
 | ||||
|  | ||||
| @ -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) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user