aboutsummaryrefslogtreecommitdiffstats
path: root/hyperterm/core/update.sh
blob: 841780f102b6843cc2f268239bd2b17ec1843818 (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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#!/bin/bash
# shellcheck source=/dev/null
#------------------
# Update functions
#------------------
function _which() {
    command -v "$1" &> /dev/null
}

# Check URL's
# ---------------------
function _url_exists() {
    if  _which wget; then
        if wget --spider "$1" 2>/dev/null; then
            return 0 # URL 'ok'
        else
            return 1 # URL 'fail'
        fi
    elif _which curl; then
        if curl --output /dev/null --silent --head --fail "$1"; then
            return 0 # URL 'ok'
        else
            return 1 # URL 'fail'
        fi
    fi
}

function _urls() {
    URL_1="https://c.hgit.ga/software/hyperterm.git"
    URL_2="https://git.sr.ht/~heckyel/hyperterm"

    if [[ $(_url_exists "$URL_1") -eq 0 ]]; then
        URL="$URL_1"
        RAW="$URL_1/plain"
    elif [[ $(_url_exists "$URL_2") -eq 0 ]]; then
        URL="$URL_2"
        RAW="$URL_2/blob/master"
    fi
}
# ----------------------

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://hgit.conocimientoslibres.ga/software/hyperterm.git" \
                "Get your HyperTerm copy on: https://hgit.conocimientoslibres.ga/software/hyperterm.git"
            printf '%b\n' "$RESET"
        else
            if [[ $(_url_exists "$URL") -eq 0 ]]; then
                # 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"
            else
                msg_err "El repo esta deshabilitado o no hay conexión a Internet" \
                        "The repo is disabled or connection failed"
                return 1
            fi
        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 "$@"

    if [[ $(_url_exists "$URL") -eq 0 ]]; then
        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
    else
        msg_err "El repo esta deshabilitado o no hay conexión a Internet" \
                "The repo is disabled or connection failed"
        return 1
    fi
}