Add comments; update README.md

This commit is contained in:
Jeffrey Serio 2021-12-29 20:57:15 -06:00
parent 8ca9296146
commit cf3e061007
2 changed files with 20 additions and 7 deletions

View File

@ -4,7 +4,7 @@
Block distracting websites and hyperfocus on your tasks!
This is a Go implementation of the Python-written [concentration](https://github.com/timothycrosley/concentration) program. This program aims to allow the user somewhat more freedom in defining distractors than its predecessor.
This is a Go implementation of the Python-written [concentration](https://github.com/timothycrosley/concentration) program. This program aims to be cleaner and simpler than its predecessor.
## Installation
```bash

25
main.go
View File

@ -105,7 +105,7 @@ func improveFocus() {
}
}()
// For checking if /etc/hyperfocus_distractors or /etc/hyperfocus_distractors_predefined
// For checking if /etc/hf_distractors or /etc/hf_distractors_predefined
// exist.
var (
distractorsFileWarn bool
@ -194,9 +194,11 @@ func takeBreak(minutes int) {
fmt.Println("Your (probably) well-deserved break is commencing...")
loseFocus()
// Create notify context for os.Interrupt signal
ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt)
defer cancel()
// Create context with timeout for duration of minutes argument
ctx, cancel = context.WithTimeout(ctx, time.Duration(minutes*60)*time.Second)
defer cancel()
@ -206,8 +208,11 @@ func takeBreak(minutes int) {
}
// Prints the current list of distractors to be blocked
// If neither /etc/hf_distractors nor /etc/hf_predef_distractors exist,
// print error message to console but do not exit.
func listDistractors() {
// Open /etc/hf_distractors and store it as *os.File type
userDistractorsFile, err := os.Open(filepath.Clean(distractorsFile))
if err != nil {
fmt.Println(err)
@ -218,11 +223,14 @@ func listDistractors() {
}
}()
// Initialize a new scanner, scan /etc/hf_distractors, and print to
// stdout line by line.
scanner := bufio.NewScanner(userDistractorsFile)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
// Open /etc/hf_predef_distractors and store it as *os.File type
predefDistractorsFile, err := os.Open(filepath.Clean(predefDistractorsFile))
if err != nil {
fmt.Println(err)
@ -233,6 +241,8 @@ func listDistractors() {
}
}()
// Initialize a new scanner, scan /etc/hf_predef_distractors, and print to
// stdout line by line.
scanner = bufio.NewScanner(predefDistractorsFile)
for scanner.Scan() {
fmt.Println(scanner.Text())
@ -240,9 +250,10 @@ func listDistractors() {
}
// Adds predefined distractors to .hyperfocus_distractors file
// Adds predefined distractors to /etc/hf_predef_distractors file
func addPredefinedDistractors() {
// Slice of distractor domains
distractors := []string{
"anandtech.com",
"answerbag.com",
@ -364,6 +375,7 @@ func addPredefinedDistractors() {
"zillow.com",
}
// Open or create /etc/hf_predef_distractors and store it in *os.File type
predefDistractorsFileObj, err := os.OpenFile(filepath.Clean(predefDistractorsFile), os.O_CREATE|os.O_WRONLY, 0666)
if err != nil {
log.Fatalln(err)
@ -374,8 +386,9 @@ func addPredefinedDistractors() {
}
}()
// Initialize a new writer, range loop over distractors slice, and write
// each distractor domain to /etc/hf_predef_distractors, line by line.
dataWriter := bufio.NewWriter(predefDistractorsFileObj)
for _, v := range distractors {
_, _ = dataWriter.WriteString(v + "\n")
@ -388,7 +401,7 @@ func addPredefinedDistractors() {
func main() {
parser := argparse.NewParser("hf", "Block distracting websites and hyperfocus on your work")
parser := argparse.NewParser("go-hyperfocus", "Block distracting websites and hyperfocus on your work")
improveCmd := parser.NewCommand("improve", "Improve focus, block the distractors")
loseCmd := parser.NewCommand("lose", "Lose focus, unblock the distractors")
@ -396,8 +409,8 @@ func main() {
breakCmd := parser.NewCommand("break", "Take a break for a number of minutes")
minutesForBreak := breakCmd.Int("", "minutes", &argparse.Options{Help: "Number of minutes to break for."})
listCmd := parser.NewCommand("list", "List the distractors defined in the block file (/etc/hyperfocus_distractors)")
predefinedCmd := parser.NewCommand("predefined", "Add predefined set of distractors to block file")
listCmd := parser.NewCommand("list", "List the distractors defined in the block file (/etc/hf_distractors)")
predefinedCmd := parser.NewCommand("predefined", "Add predefined set of distractors to /etc/hf_predef_distractors")
if isRoot() {