Projet

Général

Profil

Paste
Télécharger (2,76 ko) Statistiques
| Branche: | Révision:

root / bin / scripts-utils.sh @ a629a580

1 d52a5b2f jenselme
#!/bin/sh
2
3
# This script contains useful functions for other scripts.
4
5
# Check if scripts-config.sh is imported.
6 3e9236bd Julien Enselme
if [ -z "${scripts_config}" ] ; then
7 d52a5b2f jenselme
    echo "Import of scripts-config.sh required."
8
    . scripts-config.sh
9
fi
10
11
scripts_utils='imported'
12
13
ask_password() {
14
    # read -s doesn't work with sh.
15 683f57f9 Julien Enselme
    # usage: pass=$(ask_password "password please:")
16 3e9236bd Julien Enselme
    echo "$1" >&2
17 d52a5b2f jenselme
    echo -n ">" >&2
18 683f57f9 Julien Enselme
    stty_avant=$(stty -g)
19 d52a5b2f jenselme
    stty -echo
20
    read password
21 3e9236bd Julien Enselme
    stty "${stty_avant}"
22
    echo "${password}"
23 d52a5b2f jenselme
    unset password
24
}
25
26 4377ca71 Julien Enselme
generate_password() {
27 d52a5b2f jenselme
    # ARGS: [password_length]
28
    # The password contains special characters. '/' must be excluded to avoid sed malfunction.
29
30
    local site_password='/'
31
32 3e9236bd Julien Enselme
    if [ -z "$1" ] ; then
33 d52a5b2f jenselme
        local password_length=20
34
    else
35 3e9236bd Julien Enselme
        local password_length="$1"
36 d52a5b2f jenselme
    fi
37
38
    while echo "$site_password" | grep -Fq '/' ; do
39 8550e097 Julien Enselme
        site_password=$(dd if=/dev/random count=1 | uuencode -m - | head -n 2 | tail -n 1 | cut -c-"${password_length}")
40 d52a5b2f jenselme
    done
41
42 3e9236bd Julien Enselme
    echo "$site_password"
43 d52a5b2f jenselme
}
44
45 4377ca71 Julien Enselme
count_d7_sites() {
46 3e9236bd Julien Enselme
    find "${d7_dir_sites}" -type d ! -name all -maxdepth 1 | wc -l
47 d52a5b2f jenselme
}
48
49
check_arguments() {
50
    # ARGS: number of arguments passed to script, number of arguments required, [help text]
51 3e9236bd Julien Enselme
    if [ "$1" -lt "$2"  ] ; then
52 3f774fab Thomas Berger
        echo "Not enough arguments." >&2
53
	echo -e "$3" >&2
54 1e4af651 Julien Enselme
        exit 1
55 d52a5b2f jenselme
    fi
56
}
57 469b9d6d Julien Enselme
58
generate_settings_local() {
59
    # ARGS: site_name, site_password, d7_settings_local_template, d7_site_settings_local
60 3e9236bd Julien Enselme
    sed "s/\%\%DBUSER\%\%/$1/ ; s/\%\%DBNAME\%\%/$1/ ; s/\%\%DBPASS\%\%/$2/ ; s/\%\%SITE_NAME\%\%/$1/" < "$3" > "$4"
61 469b9d6d Julien Enselme
}
62
63 4377ca71 Julien Enselme
give_dir() {
64 469b9d6d Julien Enselme
    # ARG: file
65 65ce03da Julien Enselme
    # Return the abosulte directory path of a file or a dir.
66 8550e097 Julien Enselme
    settings_location=$(realpath "$1")
67
    echo $(dirname "${settings_location}")
68 469b9d6d Julien Enselme
}
69 1c1c5a42 Julien Enselme
70
work_tree_clean() {
71 8550e097 Julien Enselme
    git_status_output=$(git status --porcelain)
72 3e9236bd Julien Enselme
    if [ -z "${git_status_output}" ] ; then
73 9987cca4 Julien Enselme
	return 0
74 1c1c5a42 Julien Enselme
    else
75 9987cca4 Julien Enselme
	return 1
76 1c1c5a42 Julien Enselme
    fi
77
}
78
79
mail_unclean_work_tree() {
80 8550e097 Julien Enselme
    cd "${dir_multi_assos}"
81
    git_status_output=$(git status)
82 3e9236bd Julien Enselme
    echo "${git_status_output}" | mail -s "$1" "${email_multi_assos}"
83 1c1c5a42 Julien Enselme
}
84
85
commit_if_unclean() {
86 683f57f9 Julien Enselme
    if ! work_tree_clean ; then
87 1c1c5a42 Julien Enselme
	commit_message="COMMIT OF UNCLEAN STUFF"
88 3e9236bd Julien Enselme
	commit -a -m "${commit_message}"
89
	mail_unclean_work_tree "[git] ${commit_message}"
90 1c1c5a42 Julien Enselme
    fi
91
}
92
93
commit() {
94
    # ARG: commit message
95 6d91f38e Julien Enselme
    if [ -z "$1" ] ; then
96 3f774fab Thomas Berger
	echo "Empty commit message. Nothing was commited." >&2
97 9987cca4 Julien Enselme
	return 2
98 1c1c5a42 Julien Enselme
    fi
99 3e9236bd Julien Enselme
    cd "${dir_multi_assos}"
100 6d91f38e Julien Enselme
    git commit -a -m "$1"
101 1c1c5a42 Julien Enselme
}
102 60103d5a Julien Enselme
103
site_exists() {
104
    # Check if site database exists.
105 3e9236bd Julien Enselme
    if mysql --defaults-extra-file="${myassos_cnf}" -e "USE $1" 2>/dev/null ; then
106 3f774fab Thomas Berger
	echo "Database $1 already exits." >&2
107 4ed597de Julien Enselme
	return 0
108 60103d5a Julien Enselme
    fi
109
110
    # Check if site folder already exists.
111 3e9236bd Julien Enselme
    dir="${d7_dir_sites}/$1"
112
    if [ -d "${dir}" ] ; then
113 76597ebf Thomas Berger
	echo "Folder ${dir} already exists." >&2
114 4ed597de Julien Enselme
	return 0
115 60103d5a Julien Enselme
    fi
116 4ed597de Julien Enselme
    return 1
117 60103d5a Julien Enselme
}