instance-sqlite 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/usr/bin/env bash
  2. set -eu
  3. script_name=$0
  4. DB_BACKEND=$(echo $script_name | cut -d- -f2)
  5. export DB_BACKEND
  6. die() {
  7. echo >&2 "$@"
  8. exit 1
  9. }
  10. about() {
  11. die "usage: $script_name [ config-yaml | setup | dump <backup_file> | restore <backup_file> ]"
  12. }
  13. #shellcheck disable=SC1007
  14. THIS_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
  15. cd "${THIS_DIR}"/../../
  16. #shellcheck disable=SC1091
  17. . ./.environment.sh
  18. exec_sql() {
  19. cmd="${1?Missing required sql command}"
  20. sqlite3 "${DB_FILE}" "$@"
  21. }
  22. # you have not removed set -u above, have you?
  23. [ -z "${CONFIG_YAML-}" ] && die "\$CONFIG_YAML must be defined."
  24. # ---------------------------
  25. DATA_DIR=$(yq '.config_paths.data_dir' <"${CONFIG_YAML}")
  26. DB_FILE="${DATA_DIR}/crowdsec.db"
  27. config_yaml() {
  28. yq '
  29. .db_config.type=strenv(DB_BACKEND) |
  30. .db_config.db_path="${DB_FILE}"
  31. ' -i "${CONFIG_YAML}"
  32. }
  33. [ $# -lt 1 ] && about
  34. case "$1" in
  35. config-yaml)
  36. ;;
  37. setup)
  38. ;;
  39. dump)
  40. [ $# -lt 2 ] && about
  41. backup_file="$2"
  42. # dirty fast cp. nothing should be accessing it right now, anyway.
  43. [ -f "${DB_FILE}" ] || die "missing file ${DB_FILE}"
  44. cp "${DB_FILE}" "$backup_file"
  45. ;;
  46. restore)
  47. [ $# -lt 2 ] && about
  48. backup_file="$2"
  49. [ -f "$backup_file" ] || die "missing file $backup_file"
  50. cp "$backup_file" "${DB_FILE}"
  51. ;;
  52. exec_sql)
  53. shift
  54. exec_sql "$@"
  55. ;;
  56. *)
  57. about
  58. ;;
  59. esac;