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! 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 ## Installation
```bash ```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. // exist.
var ( var (
distractorsFileWarn bool distractorsFileWarn bool
@ -194,9 +194,11 @@ func takeBreak(minutes int) {
fmt.Println("Your (probably) well-deserved break is commencing...") fmt.Println("Your (probably) well-deserved break is commencing...")
loseFocus() loseFocus()
// Create notify context for os.Interrupt signal
ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt) ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt)
defer cancel() defer cancel()
// Create context with timeout for duration of minutes argument
ctx, cancel = context.WithTimeout(ctx, time.Duration(minutes*60)*time.Second) ctx, cancel = context.WithTimeout(ctx, time.Duration(minutes*60)*time.Second)
defer cancel() defer cancel()
@ -206,8 +208,11 @@ func takeBreak(minutes int) {
} }
// Prints the current list of distractors to be blocked // 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() { func listDistractors() {
// Open /etc/hf_distractors and store it as *os.File type
userDistractorsFile, err := os.Open(filepath.Clean(distractorsFile)) userDistractorsFile, err := os.Open(filepath.Clean(distractorsFile))
if err != nil { if err != nil {
fmt.Println(err) 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) scanner := bufio.NewScanner(userDistractorsFile)
for scanner.Scan() { for scanner.Scan() {
fmt.Println(scanner.Text()) fmt.Println(scanner.Text())
} }
// Open /etc/hf_predef_distractors and store it as *os.File type
predefDistractorsFile, err := os.Open(filepath.Clean(predefDistractorsFile)) predefDistractorsFile, err := os.Open(filepath.Clean(predefDistractorsFile))
if err != nil { if err != nil {
fmt.Println(err) 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) scanner = bufio.NewScanner(predefDistractorsFile)
for scanner.Scan() { for scanner.Scan() {
fmt.Println(scanner.Text()) 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() { func addPredefinedDistractors() {
// Slice of distractor domains
distractors := []string{ distractors := []string{
"anandtech.com", "anandtech.com",
"answerbag.com", "answerbag.com",
@ -364,6 +375,7 @@ func addPredefinedDistractors() {
"zillow.com", "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) predefDistractorsFileObj, err := os.OpenFile(filepath.Clean(predefDistractorsFile), os.O_CREATE|os.O_WRONLY, 0666)
if err != nil { if err != nil {
log.Fatalln(err) 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) dataWriter := bufio.NewWriter(predefDistractorsFileObj)
for _, v := range distractors { for _, v := range distractors {
_, _ = dataWriter.WriteString(v + "\n") _, _ = dataWriter.WriteString(v + "\n")
@ -388,7 +401,7 @@ func addPredefinedDistractors() {
func main() { 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") improveCmd := parser.NewCommand("improve", "Improve focus, block the distractors")
loseCmd := parser.NewCommand("lose", "Lose focus, unblock 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") 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."}) 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)") 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 block file") predefinedCmd := parser.NewCommand("predefined", "Add predefined set of distractors to /etc/hf_predef_distractors")
if isRoot() { if isRoot() {