github.com/crowdsecurity/crowdsec@v1.6.1/test/lib/db/instance-sqlite (about) 1 #!/usr/bin/env bash 2 3 set -eu 4 script_name=$0 5 DB_BACKEND=$(echo "${script_name}" | cut -d- -f2) 6 export DB_BACKEND 7 8 die() { 9 echo >&2 "$@" 10 exit 1 11 } 12 13 about() { 14 die "usage: ${script_name} [ config-yaml | setup | dump <backup_file> | restore <backup_file> ]" 15 } 16 17 #shellcheck disable=SC1007 18 THIS_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) 19 cd "${THIS_DIR}"/../../ 20 #shellcheck disable=SC1091 21 . ./.environment.sh 22 23 exec_sql() { 24 sqlite3 "${DB_FILE}" "$@" 25 } 26 27 setup() { 28 : 29 } 30 31 dump() { 32 backup_file="${1?Missing file to backup database to}" 33 # dirty fast cp. nothing should be accessing it right now, anyway. 34 [[ -f "${DB_FILE}" ]] || die "missing file ${DB_FILE}" 35 cp "${DB_FILE}" "${backup_file}" 36 } 37 38 restore() { 39 backup_file="${1?missing file to restore database from}" 40 [[ -f "${backup_file}" ]] || die "Backup file ${backup_file} doesn't exist" 41 cp "${backup_file}" "${DB_FILE}" 42 } 43 44 # you have not removed set -u above, have you? 45 46 [[ -z "${CONFIG_YAML-}" ]] && die "\$CONFIG_YAML must be defined." 47 48 # --------------------------- 49 # In most cases this is called with setup argument, and it shouldn't fail for missing config file. 50 if [[ -f "${CONFIG_YAML}" ]]; then 51 DATA_DIR=$(yq e '.config_paths.data_dir' "${CONFIG_YAML}") 52 DB_FILE="${DATA_DIR}/crowdsec.db" 53 export DB_FILE 54 fi 55 56 config_yaml() { 57 yq e ' 58 .db_config.type=strenv(DB_BACKEND) | 59 .db_config.db_path=strenv(DB_FILE) | 60 .db_config.use_wal=true 61 ' -i "${CONFIG_YAML}" 62 } 63 64 [[ $# -lt 1 ]] && about 65 66 case "$1" in 67 config-yaml) 68 config_yaml 69 ;; 70 setup) 71 ;; 72 dump) 73 shift 74 dump "$@" 75 ;; 76 restore) 77 shift 78 restore "$@" 79 ;; 80 exec_sql) 81 shift 82 exec_sql "$@" 83 ;; 84 *) 85 about 86 ;; 87 esac;