diff --git a/scripts/_common.sh b/scripts/_common.sh index badf370..bdffd56 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -89,76 +89,3 @@ ynh_smart_mktemp () { #================================================= # FUTURE OFFICIAL HELPERS #================================================= - -# Open a connection as a user -# -# example: ynh_mysql_connect_as --user="user" --password="pass" <<< "UPDATE ...;" -# example: ynh_mysql_connect_as --user="user" --password="pass" --default_character_set="utf8mb4" < /path/to/file.sql -# -# usage: ynh_mysql_connect_as --user=user --password=password [--database=database] [--default_character_set=character-set] -# | arg: -u, --user= - the user name to connect as -# | arg: -p, --password= - the user password -# | arg: -d, --database= - the database to connect to -# | arg: -c, --default_character_set= - the charset to use -# -# Requires YunoHost version 2.2.4 or higher. -ynh_mysql_connect_as() { - # Declare an array to define the options of this helper. - local legacy_args=updc - local -A args_array=( [u]=user= [p]=password= [d]=database= [c]=default_character_set= ) - local user - local password - local database - local default_character_set - # Manage arguments with getopts - ynh_handle_getopts_args "$@" - database="${database:-}" - default_character_set="${default_character_set:-}" - - if [ -n "$default_character_set" ] - then - default_character_set="--default-character-set=$default_character_set" - else - default_character_set="--default-character-set=latin1" - fi - - mysql --user="$user" --password="$password" "$default_character_set" --batch "$database" -} - - - -# Dump a database -# -# example: ynh_mysql_dump_db --database=roundcube --default_character_set="utf8mb4" > ./dump.sql -# -# usage: ynh_mysql_dump_db --database=database -# | arg: -d, --database= - the database name to dump -# | arg: -c, --default_character_set= - the charset to use -# | ret: the mysqldump output -# -# Requires YunoHost version 2.2.4 or higher. -ynh_mysql_dump_db() { - # Declare an array to define the options of this helper. - local legacy_args=dc - local -A args_array=( [d]=database= [c]=default_character_set= ) - local database - local default_character_set - # Manage arguments with getopts - ynh_handle_getopts_args "$@" - default_character_set="${default_character_set:-}" - MYSQL_ROOT_PWD_FILE=/etc/yunohost/mysql - - if [ -n "$default_character_set" ] - then - default_character_set="--default-character-set=$default_character_set" - else - # By default, default character set is "latin1" - default_character_set="--default-character-set=latin1" - fi - - if [ -f "$MYSQL_ROOT_PWD_FILE" ]; then - mysqldump --user="root" --password="$(cat $MYSQL_ROOT_PWD_FILE)" --single-transaction --skip-dump-date "$default_character_set" "$database" - else - mysqldump --single-transaction --skip-dump-date "$default_character_set" "$database" - fi -} diff --git a/scripts/_ynh_mysql_connect_as.sh b/scripts/_ynh_mysql_connect_as.sh new file mode 100644 index 0000000..a22963e --- /dev/null +++ b/scripts/_ynh_mysql_connect_as.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# Open a connection as a user +# +# example: ynh_mysql_connect_as --user="user" --password="pass" <<< "UPDATE ...;" +# example: ynh_mysql_connect_as --user="user" --password="pass" --default_character_set="utf8mb4" < /path/to/file.sql +# +# usage: ynh_mysql_connect_as --user=user --password=password [--database=database] [--default_character_set=character-set] +# | arg: -u, --user= - the user name to connect as +# | arg: -p, --password= - the user password +# | arg: -d, --database= - the database to connect to +# | arg: -c, --default_character_set= - the charset to use +# +# Requires YunoHost version 2.2.4 or higher. +ynh_mysql_connect_as() { + # Declare an array to define the options of this helper. + local legacy_args=updc + local -A args_array=( [u]=user= [p]=password= [d]=database= [c]=default_character_set= ) + local user + local password + local database + local default_character_set + # Manage arguments with getopts + ynh_handle_getopts_args "$@" + database="${database:-}" + default_character_set="${default_character_set:-}" + + if [ -n "$default_character_set" ] + then + default_character_set="--default-character-set=$default_character_set" + else + default_character_set="--default-character-set=latin1" + fi + + mysql --user="$user" --password="$password" "$default_character_set" --batch "$database" +} \ No newline at end of file diff --git a/scripts/_ynh_mysql_dump_db.sh b/scripts/_ynh_mysql_dump_db.sh new file mode 100644 index 0000000..3b922bb --- /dev/null +++ b/scripts/_ynh_mysql_dump_db.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# Dump a database +# +# example: ynh_mysql_dump_db --database=roundcube --default_character_set="utf8mb4" > ./dump.sql +# +# usage: ynh_mysql_dump_db --database=database +# | arg: -d, --database= - the database name to dump +# | arg: -c, --default_character_set= - the charset to use +# | ret: the mysqldump output +# +# Requires YunoHost version 2.2.4 or higher. +ynh_mysql_dump_db() { + # Declare an array to define the options of this helper. + local legacy_args=dc + local -A args_array=( [d]=database= [c]=default_character_set= ) + local database + local default_character_set + # Manage arguments with getopts + ynh_handle_getopts_args "$@" + default_character_set="${default_character_set:-}" + MYSQL_ROOT_PWD_FILE=/etc/yunohost/mysql + + if [ -n "$default_character_set" ] + then + default_character_set="--default-character-set=$default_character_set" + else + # By default, default character set is "latin1" + default_character_set="--default-character-set=latin1" + fi + + if [ -f "$MYSQL_ROOT_PWD_FILE" ]; then + mysqldump --user="root" --password="$(cat $MYSQL_ROOT_PWD_FILE)" --single-transaction --skip-dump-date "$default_character_set" "$database" + else + mysqldump --single-transaction --skip-dump-date "$default_character_set" "$database" + fi +} \ No newline at end of file diff --git a/scripts/backup b/scripts/backup index dbbbfdd..6fd1086 100755 --- a/scripts/backup +++ b/scripts/backup @@ -8,6 +8,7 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers +source ../settings/scripts/_ynh_mysql_dump_db.sh #================================================= # MANAGE SCRIPT FAILURE diff --git a/scripts/install b/scripts/install index d538bc6..19dcb67 100755 --- a/scripts/install +++ b/scripts/install @@ -8,6 +8,7 @@ source _common.sh source /usr/share/yunohost/helpers +source _ynh_mysql_connect_as.sh #================================================= # MANAGE SCRIPT FAILURE diff --git a/scripts/restore b/scripts/restore index 980e3b0..83c233f 100755 --- a/scripts/restore +++ b/scripts/restore @@ -8,6 +8,7 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers +source ../settings/scripts/_ynh_mysql_connect_as.sh #================================================= # MANAGE SCRIPT FAILURE