updated the readme and renamed some values and functions

main
m455 2019-11-02 14:40:38 -04:00
parent c04cef8310
commit 41871110d4
4 changed files with 51 additions and 111 deletions

142
README.md
View File

@ -8,124 +8,80 @@ A minimal to-do list program for people who live on the command line.
# Table of Contents # Table of Contents
- [rodo](#rodo)
- [Screenshot](#screenshot)
- [Table of Contents](#table-of-contents)
- [TL;DR](#tldr) - [TL;DR](#tldr)
- [New features](#new-features)
- [To-dos](#to-dos)
- [Platforms](#platforms) - [Platforms](#platforms)
- [Installing rodo](#installing-rodo) - [Requirements](#requirements)
- [Requirements](#requirements)
- [Downloading Racket](#downloading-racket) - [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) - [Downloading the rodo source code](#downloading-the-rodo-source-code)
- [To download the rodo source code](#to-download-the-rodo-source-code)
- [Setup](#setup) - [Setup](#setup)
- [Setting up a $PATH](#setting-up-a-path) - [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) - [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) - [List of commands](#list-of-commands)
- [Usage examples](#usage-examples) - [Usage examples](#usage-examples)
- [Configuring `rodo`](#configuring-rodo) - [Configuring rodo](#configuring-rodo)
- [Todos](#todos)
# TL;DR # TL;DR
1. Make sure [Racket](https://racket-lang.org/) is installed 1. Make sure [Racket](https://racket-lang.org/) is installed
2. `git clone https://github.com/m455/rodo` into a directory of your choice 2. `git clone https://github.com/m455/rodo` into a directory of your choice
3. `cd` into the `rodo` directory 3. `cd` into the `rodo` directory
4. Choose one of the options below for running `rodo`. 4. Choose one of the options below for running rodo:
* To use `rodo` using the Racket interpreter run: `racket rodo.rkt` * To use rodo using the Racket interpreter run: `racket rodo.rkt`
* To use `rodo` as an single-file executable follow the two steps below: * 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 1. Run `raco exe rodo.rkt` to compile rodo into a single-file executable.
2. Run `./rodo` 2. Run `./rodo`.
5. (optional) Add the following to your `$PATH` directory to run `rodo` from anywhere. 5. (optional) Create a wrapper in your `$PATH` directory to run rodo from anywhere:
``` ```
#!/usr/bin/env bash #!/usr/bin/env bash
racket ~/path/to/rodo.rkt "$@" racket ~/path/to/rodo.rkt "$@"
``` ```
Note: If you made an executable, remember to change the `rodo.rkt` part above to `rodo`
# Platforms # 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 * GNU/Linux
* Windows Subsystem for Linux
* macOS (Untested) * 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 * Racket: [https://racket-lang.org/](https://racket-lang.org/)
* rodo's source code: [https://github.com/m455/rodo](https://github.com/m455/rodo)
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
## Downloading Racket ## Downloading Racket
Racket can be download using your machine's package manager. Depending on what 1. run `sudo apt install racket` on the command line
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
## Downloading the rodo source code ## 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` 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 # Setup
For convenience, `rodo` can be added to your `$PATH`. This section will guide 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`. you through setting up a `$PATH` and adding rodo to your `$PATH`.
## Setting up a $PATH ## Setting up a $PATH
A `$PATH` is a directory in which you can place executable files or script files. These files A `$PATH` is a directory in which you can place executable files or scripts.
can then be ran from any directory on your machine. 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 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).
`rodo` to your `$PATH`](https://github.com/m455/rodo#adding-rodo-to-your-path).
### To set up a $PATH
1. Create a directory for your `$PATH` by running `mkdir ~/bin/` 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` 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
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: 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 2. Save the file
3. Make the file executable by running `chmod u+x ~/bin/name-of-your-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 # 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 * `-h` or `--help` displays the help message
* `init` creates a file called `to-do.txt` in `~/.rodo/` by default * `init` creates a list file (See the `config.rkt` file for the default * location of this file)
* `ls` displays numbered items in the to-do list * `ls` displays your list
* `add` adds an item to the to-do list * `add` adds an item to your list
* `rm` removes an item from the to-do 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 # 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` `rodo -h`
@ -170,34 +119,25 @@ The examples below assume that you have [added `rodo` to your `$PATH`](https://g
`rodo ls` `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, 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 such as the program name, directory, and the filename of the todo list file can
be changed. be changed.
# New features # Todos
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
When I have time, I plan on adding the following features to rodo: 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` - Colour
- A boolean color option in the `config.rkt` file - Encrypted list files
- Encrypt/decrypt `to-do.txt` file

View File

@ -3,7 +3,7 @@
(define program-name "rodo") (define program-name "rodo")
(define program-directory (path->string (expand-user-path "~/.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 remove-command "rm")
(define add-command "add") (define add-command "add")
(define list-command "ls") (define list-command "ls")

View File

@ -30,7 +30,7 @@
;; init ;; init
(format "~a\n" config:initialize-command) (format "~a\n" config:initialize-command)
"====\n" "====\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-file
config:program-directory) config:program-directory)
@ -40,7 +40,7 @@
;; ls ;; ls
(format "~a\n" config:list-command) (format "~a\n" config:list-command)
"====\n" "====\n"
"Displays items in your to-do list.\n\n" "Displays items in your todo list.\n\n"
"Example:\n" "Example:\n"
(format "~a ~a\n\n" config:program-name config:list-command) (format "~a ~a\n\n" config:program-name config:list-command)
@ -60,11 +60,11 @@
"Example:\n" "Example:\n"
(format "~a ~a 1\n\n" config:program-name config:remove-command) (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:program-name
config:list-command) 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" "Can't see the whole help message?\n"
"=================================\n" "=================================\n"
@ -73,7 +73,7 @@
" " " "
"When you want to quit, type `q` (without the grave accents).\n") "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" 'show-usage (format "> For usage type `~a -h` or `~a --help`.\n"
config:program-name config:program-name

View File

@ -29,10 +29,10 @@
(display (hash-ref hash-list key))) (display (hash-ref hash-list key)))
(define (file->string-list config:path-to-file-to-file) (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 #:mode 'text
#:line-mode 'any)]) #:line-mode 'any)])
to-do-list)) todo-list))
(define (list-empty? lst) (define (list-empty? lst)
(list:empty? (file->string-list lst))) (list:empty? (file->string-list lst)))
@ -81,7 +81,7 @@
(check-for-program-file)) (check-for-program-file))
(if (if
(list-empty? config:path-to-file) (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))] (display-prettified-program-file))]
[else [else
(display-hash-ref messages:messages 'file-not-found) (display-hash-ref messages:messages 'file-not-found)
@ -120,7 +120,7 @@
(define (remove-item-from-list args) (define (remove-item-from-list args)
(cond [(list-empty? config:path-to-file) (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) [(and (check-for-program-directory)
(check-for-program-file)) (check-for-program-file))
(remove-item-from-program-file (vector-ref args 1))] (remove-item-from-program-file (vector-ref args 1))]