aboutsummaryrefslogtreecommitdiffstats
path: root/hyperterm/core/update.sh
blob: 486a09d1d1157e403664e8d37d15bb08d15bd663 (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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/bin/bash
# shellcheck source=/dev/null
#------------------
# Update functions
#------------------
function _which() {
    command -v "$1" &> /dev/null
}

# Check URL's
# ---------------------
function _url_exists() {
    curl --output /dev/null 2>&1 -s -w "%{http_code}\n" "$1"
}

function _urls() {
    URL_1="https://c.fridu.us/software/hyperterm.git"
    URL_2="https://git.sr.ht/~heckyel/hyperterm"
    case $(_url_exists "$URL_1") in
        200) URL="$URL_1"
             RAW="$URL_1/plain";;
    esac
    case $(_url_exists "$URL_2") in
        200) URL="$URL_2"
             RAW="$URL_2/blob/master";;
    esac
}
# ----------------------

function ifexists_custom() {

    _urls "$@"

    if [ ! -e "$HOME/.hyperterm/_custom.sh" ]; then
        case $1 in
            wget) wget "$RAW/hyperterm/_custom.sh" -O "$HOME/.hyperterm/_custom.sh" ;;
            curl) curl "$RAW/hyperterm/_custom.sh" -o "$HOME/.hyperterm/_custom.sh" ;;
            git)  cp -v /tmp/hyperterm/hyperterm/_custom.sh "$HOME/.hyperterm/"     ;;
        esac
    fi
}

function updbashrc() {

    _urls "$@"

    # data integration
    if _which wget; then
        wget -nv "$RAW/hyperterm/hyperterm.sha512" -O "$HOME/.hyperterm/hyperterm.sha512" &> /dev/null
        ifexists_custom wget &> /dev/null
    elif _which curl; then
        curl "$RAW/hyperterm/hyperterm.sha512" -o "$HOME/.hyperterm/hyperterm.sha512" &> /dev/null
        ifexists_custom curl &> /dev/null
    fi

    # checksum of data verification
    (cd "$HOME/.hyperterm/" && sha512sum -c hyperterm.sha512 &> /dev/null)
    _interger=$?

    if _which git; then
        if [[ "$_interger" -eq 0 ]]; then
            # Import colors
            _colors_bash "$@"
            printf '%b' "${BOLD}${CYAN}"
            printf '%s\n' '     __  __                     ______                   '
            printf '%s\n' '    / / / /_  ______  ___  ____/_  __/__  _________ ___  '
            printf '%s\n' '   / /_/ / / / / __ \/ _ \/ ___// / / _ \/ ___/ __ `__ \ '
            printf '%s\n' '  / __  / /_/ / /_/ /  __/ /   / / /  __/ /  / / / / / / '
            printf '%s\n' ' /_/ /_/\__, / .___/\___/_/   /_/  \___/_/  /_/ /_/ /_/  '
            printf '%s\n' '       /____/_/                                          '
            printf '%s\n' '                                                         '
            printf '%b' "${BOLD}${GREY}"
            msg "¡Hurra! HyperTerm se ha actualizado y/o está en la versión actual." \
                "Hooray! HyperTerm has been updated and/or is at the current version."
            msg "Puede reportarnos errores en https://todo.sr.ht/~heckyel/hyperterm" \
                "You can report errors issues in https://todo.sr.ht/~heckyel/hyperterm"
            msg "Consigue tu copia de HyperTerm en: https://c.fridu.us/software/hyperterm.git" \
                "Get your HyperTerm copy on: https://c.fridu.us/software/hyperterm.git"
            printf '%b\n' "$RESET"
        else
            case $(_url_exists "$URL") in
                200)
                    # clone '--depth=1' not support cgit
                    (git clone $URL /tmp/hyperterm/ --depth=1 &> /dev/null)
                    printf '%s\r' "#####                   (33%)"
                    sleep 1
                    # core
                    for i in autocomplete.sh colors.sh git.sh languages.sh status.sh update.sh; do
                        install -m644 /tmp/hyperterm/hyperterm/core/$i "$HOME/.hyperterm/core/$i"
                    done
                    # themes
                    for i in default.sh joy.sh light_theme.sh minterm.sh pure.sh simple.sh special.sh; do
                        install -m644 /tmp/hyperterm/hyperterm/themes/$i "$HOME/.hyperterm/themes/$i"
                    done
                    # tools
                    (cp -f /tmp/hyperterm/hyperterm/tools/* "$HOME/.hyperterm/tools/" &> /dev/null)

                    for i in hyperterm.sh hyperterm.sha512; do
                        install -m644 /tmp/hyperterm/hyperterm/$i "$HOME/.hyperterm/$i"
                    done
                    (cp -f /tmp/hyperterm/.bash_profile "$HOME/" &> /dev/null)
                    printf '%s\r' "#############           (66%)"
                    (ifexists_custom git &> /dev/null)
                    sleep 1
                    (rm -fr /tmp/hyperterm/)
                    printf '%s\n' "####################### (100%) done!"
                    source "$HOME/.bashrc" ;;
                *)
                    msg_err "El repo esta deshabilitado o no hay conexión a Internet" \
                            "The repo is disabled or connection failed"
                    return 1 ;;
            esac
        fi
    else
        msg_err "No hay curl y git. Por favor, instale los programas para actualizar HyperTerm" \
                "I couldn't find not curl and git. Please, install the programs to update HyperTerm"
        return 1
    fi
}

function updbashrc_custom() {
    _urls "$@"
    case $(_url_exists "$URL") in
        200)
            while true
            do
                function _copy_c() {
                    if _which wget; then
                        wget "$RAW/hyperterm/_custom.sh" -O "$HOME/.hyperterm/_custom.sh"; source "$HOME/.bashrc"
                    elif _which curl; then
                        curl "$RAW/hyperterm/_custom.sh" -o "$HOME/.hyperterm/_custom.sh"; source "$HOME/.bashrc"
                    fi
                }
                question=$(msg "¿Estás seguro de sobre-escribir _custom.sh? [s/N]: " \
                               "Are you sure to overwrite _custom.sh? [y/N]: ")
                read -r -p "$question" input
                case $input in
                    [sS]|[yY]) _copy_c "$@"; break ;;
                    [nN]|"") break ;;
                    *) msg "Por favor responde sí o no" \
                           "Please answer yes or no.";;
                esac
            done ;;
        *)
            msg_err "El repo esta deshabilitado o no hay conexión a Internet" \
                    "The repo is disabled or connection failed"
            return 1
            ;;
    esac
}