aboutsummaryrefslogtreecommitdiff
path: root/ration
blob: 20f6247323604b91d60b6af512b20a1082236c54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/usr/bin/env bash


#
# the world wide web is a mischievous rat which aims to control you
# this script serves to ration the rat
# it interfaces with my sway and waybar configurations
#

echo -e "\n\
        ██████╗  █████╗ ████████╗██╗ ██████╗ ███╗   ██╗\n\
        ██╔══██╗██╔══██╗╚══██╔══╝██║██╔═══██╗████╗  ██║\n\
        ██████╔╝███████║   ██║   ██║██║   ██║██╔██╗ ██║\n\
        ██╔══██╗██╔══██║   ██║   ██║██║   ██║██║╚██╗██║\n\
        ██║  ██║██║  ██║   ██║   ██║╚██████╔╝██║ ╚████║\n\
        ╚═╝  ╚═╝╚═╝  ╚═╝   ╚═╝   ╚═╝ ╚═════╝ ╚═╝  ╚═══╝\n"

SHARE=$HOME/.local/share/rat

if ! [[ -d $SHARE ]]; then
    mkdir $SHARE
fi

if ! [[ -f $SHARE/status ]]; then
    echo 0 > $SHARE/status
fi

yn_prompt () {
    while true; do
        read -p "(y/n): " choice
        case $choice in
            [Yy]) echo y; break ;;
            [Nn]) echo n; break ;;
        esac
    done
}

generate_words () {
    echo "$(shuf -n 10 /usr/share/dict/wordle | tr '\n' ' ' | sed -e 's/ $//')"
}

rand_prompt () {
    unset response
    echo "# $1"
    while true; do
        read -p "> " response
        case $response in
            $1) break ;;
            *) echo ERR; rand_prompt "$1"; break ;;
        esac
    done
}

for_duration () {
    unset choice duration

    words="$(generate_words)"
    echo "repeat after me:"
    rand_prompt "$words"

    while ! [[ "$duration" =~ ^[0-9]+$ ]]; do
        echo -n "enter duration in minutes: "
        read duration
    done

    echo "the firewall will close after $duration minutes. is this okay?"

    case $(yn_prompt) in
        y) nohup rat duration $duration > /dev/null & ;;
        n) for_duration ;;
    esac
}

for_task () {
    while [[ -z "$task" ]]; do
        echo "what do you need the rat for?"
        read -p "I am going to: " task
    done

    echo "is that so?"

    case $(yn_prompt) in
        y) nohup rat task "$task" > /dev/null & ;;
        n) for_task ;;
    esac
}

for_program () {
    nohup rofi -run-command 'rat program {cmd}' -show drun > /dev/null &
}

for_work () {
    unset response
    echo "you're not just saying that?"
    read -p "(I am not): " response

    case $response in
        "I am not") nohup rat work > /dev/null & ;;
        "I am") exit 0 ;;
        *) for_work ;;
    esac
}

if [[ "$(cat $SHARE/status)" != 0 ]]; then
    echo "the rat is loose. would you like to snuff it out?"
    if [[ $(yn_prompt) = y ]]; then
        nohup rat reset > /dev/null &
    fi
    exit 0
fi

echo "open the firewall for..."
PS3="selection: "

select choice in "a duration" "a task" "a program" "the work day"; do
    case $choice in
        "a duration") for_duration
            break ;;
        "a task") for_task
            break ;;
        "a program") for_program
            break ;;
        "the work day") for_work
            break ;;
    esac
done