diff --git a/README.md b/README.md index 927312e..ac9c3a1 100644 --- a/README.md +++ b/README.md @@ -8,124 +8,80 @@ A minimal to-do list program for people who live on the command line. # Table of Contents +- [rodo](#rodo) +- [Screenshot](#screenshot) +- [Table of Contents](#table-of-contents) - [TL;DR](#tldr) -- [New features](#new-features) -- [To-dos](#to-dos) - [Platforms](#platforms) -- [Installing rodo](#installing-rodo) - - [Requirements](#requirements) +- [Requirements](#requirements) - [Downloading Racket](#downloading-racket) - - [To download Racket using apt](#to-download-racket-using-apt) - - [To download Racket using pacman](#to-download-racket-using-pacman) - [Downloading the rodo source code](#downloading-the-rodo-source-code) - - [To download the rodo source code](#to-download-the-rodo-source-code) - [Setup](#setup) - [Setting up a $PATH](#setting-up-a-path) - - [To set up a $PATH](#to-set-up-a-path) - [Adding rodo to your $PATH](#adding-rodo-to-your-path) - - [To add rodo to your $PATH](#to-add-rodo-to-your-path) - [List of commands](#list-of-commands) - [Usage examples](#usage-examples) -- [Configuring `rodo`](#configuring-rodo) +- [Configuring rodo](#configuring-rodo) +- [Todos](#todos) # TL;DR 1. Make sure [Racket](https://racket-lang.org/) is installed 2. `git clone https://github.com/m455/rodo` into a directory of your choice 3. `cd` into the `rodo` directory -4. Choose one of the options below for running `rodo`. - * To use `rodo` using the Racket interpreter run: `racket rodo.rkt` - * To use `rodo` as an single-file executable follow the two steps below: - 1. Run `raco exe rodo.rkt` to compile the `rodo` into a single-file executable - 2. Run `./rodo` -5. (optional) Add the following to your `$PATH` directory to run `rodo` from anywhere. +4. Choose one of the options below for running rodo: + * To use rodo using the Racket interpreter run: `racket rodo.rkt` + * To use rodo as an single-file executable follow the two steps below: + 1. Run `raco exe rodo.rkt` to compile rodo into a single-file executable. + 2. Run `./rodo`. +5. (optional) Create a wrapper in your `$PATH` directory to run rodo from anywhere: ``` #!/usr/bin/env bash racket ~/path/to/rodo.rkt "$@" ``` -Note: If you made an executable, remember to change the `rodo.rkt` part above to `rodo` - # Platforms -Below is a list of platforms that `rodo` can run on. +Below is a list of platforms that rodo can run on. -* Windows Subsystem for Linux * GNU/Linux +* Windows Subsystem for Linux * macOS (Untested) -# Installing rodo +# Requirements -This section will guide you through installing `rodo`, so you can use it on your platform. +The following items must be installed before you can use rodo: -## Requirements - -This section will provide you with the requirements needed to run `rodo`. This -section will guide you through downloading Racket and downloading the `rodo` -source code. - -* [Racket 6.x](https://racket-lang.org/) -* `rodo` source code +* Racket: [https://racket-lang.org/](https://racket-lang.org/) +* rodo's source code: [https://github.com/m455/rodo](https://github.com/m455/rodo) ## Downloading Racket -Racket can be download using your machine's package manager. Depending on what -package manager you use, commands may vary. See the two sections below for a -list of examples using the `apt` and `pacman` package managers on the command -line. - -### To download Racket using apt - -1. run `sudo apt install racket` - -Note: You may need to run this command as root - -### To download Racket using pacman - -1. run `pacman -Syu racket` - -Note: You may need to run this command as root +1. run `sudo apt install racket` on the command line ## Downloading the rodo source code -The `rodo` source code is available from this repository, and can be downloaded using `git`. - -### To download the rodo source code - 1. run `git clone https://github.com/m455/rodo` -Tip: If you want to download this into a different directory, you can specify a -directory by running the command below: - -``` -git clone https://github.com/m455/rodo your-directory-name/ -``` - # Setup -For convenience, `rodo` can be added to your `$PATH`. This section will guide -you through setting up a `$PATH` and adding `rodo` to your `$PATH`. +For convenience, rodo can be added to your `$PATH`. This section will guide +you through setting up a `$PATH` and adding rodo to your `$PATH`. ## Setting up a $PATH -A `$PATH` is a directory in which you can place executable files or script files. These files -can then be ran from any directory on your machine. +A `$PATH` is a directory in which you can place executable files or scripts. +After placing executable files or scripts in your `$PATH` directory, you can run +these files or scripts from any directory on your machine. -Tip: If you have set up a `$PATH` already, then skip to the next step, [Adding -`rodo` to your `$PATH`](https://github.com/m455/rodo#adding-rodo-to-your-path). - -### To set up a $PATH +Tip: If you have set up a `$PATH` already, then skip to the next step, [Adding rodo to your $PATH](https://github.com/m455/rodo#adding-rodo-to-your-path). 1. Create a directory for your `$PATH` by running `mkdir ~/bin/` 2. Add your newly-created `~/bin/` to your `$PATH` by running `echo "export PATH=~/bin:\$PATH" >> .bashrc` ## Adding rodo to your $PATH -Adding `rodo` to your `$PATH` allows you to run `rodo` from any directory on your machine. - -### To add rodo to your $PATH - 1. Create a file in your `~/bin/` directory with the following contents in it: ``` @@ -139,28 +95,21 @@ For example: If you downloaded the project to your `~/downloads/` folder you wou 2. Save the file 3. Make the file executable by running `chmod u+x ~/bin/name-of-your-file` -Tip: Racket can make executables. You can do this by running the following -command when in the same folder as the `rodo.rkt` file: - -``` -raco exe rodo.rkt -``` - # List of commands -This section lists and describes `rodo`'s commands. +This section lists and describes rodo's commands. * `-h` or `--help` displays the help message -* `init` creates a file called `to-do.txt` in `~/.rodo/` by default -* `ls` displays numbered items in the to-do list -* `add` adds an item to the to-do list -* `rm` removes an item from the to-do list +* `init` creates a list file (See the `config.rkt` file for the default * location of this file) +* `ls` displays your list +* `add` adds an item to your list +* `rm` removes an item from your list -Note: You may have to run `rodo ls` to see which number corresponds to which item when removing items. +Note: You may have to run `rodo ls` to see which number corresponds to which item in your list. # Usage examples -The examples below assume that you have [added `rodo` to your `$PATH`](https://github.com/m455/rodo#adding-rodo-to-your-path). +The examples below assume that you have [added rodo to your $PATH](https://github.com/m455/rodo#adding-rodo-to-your-path). `rodo -h` @@ -170,34 +119,25 @@ The examples below assume that you have [added `rodo` to your `$PATH`](https://g `rodo ls` -`rodo add "this is a task"` +`rodo add "this is an item"` -`rodo add this is a task without quotes` +`rodo add this is an item without quotation marks` -`rodo rm 1` (This removes the first item in your to-do list) +`rodo rm 1` (This removes the first item from your list) -Note: You may have to run `rodo ls` to see which number corresponds to which item when removing items. +Note: You may have to run `rodo ls` to see which number corresponds to which item in your list. -# Configuring `rodo` +# Configuring rodo -**Caution: Changing the `config.rkt` file should be done at your own risk as it may break `rodo`'s functionality** +**Caution: Changing the `config.rkt` file should be done at your own risk as it may break rodo's functionality** Right now, the configurations can be found in the `config.rkt file`. Settings, such as the program name, directory, and the filename of the todo list file can be changed. -# New features - -Now the default directory and todo list file have better default permissions: - -* `rodo` is now licensed under AGPL3! -* `~/.rodo/` is set to 700 by default -* `~/.rodo/to-do.txt` is set to 600 by default. - -# To-dos +# Todos When I have time, I plan on adding the following features to rodo: -- Add a purpose, context, and overview for each h1 in `README.md` -- A boolean color option in the `config.rkt` file -- Encrypt/decrypt `to-do.txt` file +- Colour +- Encrypted list files diff --git a/config.rkt b/config.rkt index d722864..83813b1 100644 --- a/config.rkt +++ b/config.rkt @@ -3,7 +3,7 @@ (define program-name "rodo") (define program-directory (path->string (expand-user-path "~/.rodo/"))) -(define program-file "to-do.txt") +(define program-file "todo.txt") (define remove-command "rm") (define add-command "add") (define list-command "ls") diff --git a/messages.rkt b/messages.rkt index 6036dc0..b9d88ed 100644 --- a/messages.rkt +++ b/messages.rkt @@ -30,7 +30,7 @@ ;; init (format "~a\n" config:initialize-command) "====\n" - (format "Creates ~a in ~a. This is where your to-do list will be stored.\n\n" + (format "Creates ~a in ~a. This is where your todo list will be stored.\n\n" config:program-file config:program-directory) @@ -40,7 +40,7 @@ ;; ls (format "~a\n" config:list-command) "====\n" - "Displays items in your to-do list.\n\n" + "Displays items in your todo list.\n\n" "Example:\n" (format "~a ~a\n\n" config:program-name config:list-command) @@ -60,11 +60,11 @@ "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 to-do list." + (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 to-do list.\n\n" + "In the example above, the first item was removed from the todo list.\n\n" "Can't see the whole help message?\n" "=================================\n" @@ -73,7 +73,7 @@ " " "When you want to quit, type `q` (without the grave accents).\n") - 'empty-to-do-list "> There is nothing in your list.\n" + 'empty-todo-list "> There is nothing in your list.\n" 'show-usage (format "> For usage type `~a -h` or `~a --help`.\n" config:program-name diff --git a/util.rkt b/util.rkt index 4854754..2517aa1 100644 --- a/util.rkt +++ b/util.rkt @@ -29,10 +29,10 @@ (display (hash-ref hash-list key))) (define (file->string-list config:path-to-file-to-file) - (let ([to-do-list (file:file->lines config:path-to-file-to-file + (let ([todo-list (file:file->lines config:path-to-file-to-file #:mode 'text #:line-mode 'any)]) - to-do-list)) + todo-list)) (define (list-empty? lst) (list:empty? (file->string-list lst))) @@ -81,7 +81,7 @@ (check-for-program-file)) (if (list-empty? config:path-to-file) - (display-hash-ref messages:messages 'empty-to-do-list) + (display-hash-ref messages:messages 'empty-todo-list) (display-prettified-program-file))] [else (display-hash-ref messages:messages 'file-not-found) @@ -120,7 +120,7 @@ (define (remove-item-from-list args) (cond [(list-empty? config:path-to-file) - (display-hash-ref messages:messages 'empty-to-do-list)] + (display-hash-ref messages:messages 'empty-todo-list)] [(and (check-for-program-directory) (check-for-program-file)) (remove-item-from-program-file (vector-ref args 1))]