mirror of
https://github.com/teslamate-org/teslamate.git
synced 2026-01-24 21:06:08 +08:00
* ci: add treefmt as code formatting multiplexer * style: linter findings in entrypoint.sh script * style: linter findings for yaml and yml * style: linter findings for json files * style: linter findings for nix files * style: linter findings for js files * style: linter findings for dashboards.sh * style: linter findings for md and mdx files * chore: remove unused clang formatter in treefmt config * style: linter findings for mdx files * ci: exclude Grafana dashboard JSON files from prettier formatting * Revert "style: linter findings for json files" This reverts commitf40c2e1759. * ci: exclude Grafana dashboard JSON files from all formatting as we use the grafana export style * style: linter findings for json files * doc: update changelog * ci(refactor): use composite action to avoid duplication in elixir workflow * doc: update changelog * ci: prevent workflow runs for certain conditions and allow scheduled runs * ci(refactor): use reusable workflow to check paths * ci(fix): correct output syntax for check_paths workflow and setting base branch * ci(refactor): use reusable workflows for streamlined DevOps pipeline * ci(fix): add write permission for packages in DevOps workflow * ci(test): test DevOps workflow * ci(test): test DevOps workflow * ci(fix): Update condition for spell_check, ensure_linting, elixir, and ghcr_build workflows to reflect empty result instead of false * ci: revert test DevOps * ci(refactor): allow ghcr_build parallel to elixir test * ci(refactor): Remove redundant check_paths job from elixir.yml, elixir_test.yml, and spell_check.yml workflows, check is done in devops.yml * feat: add treefmt-nix to nix flake (#4219 - @JakobLichterfeld) * ci: ensure proper linting via treefmt * ci(test): test ensure_linting workflow * ci(fix): checkout code for spell_checker to access file to check * ci(fix): allow impure in ensure_linting workflow * Revert "ci(test): test ensure_linting workflow" This reverts commita67b17ec09. * ci(fix): correct use of flake-utils for formatter and checks Co-authored-by: scottbot95 <scottbot95@gmail.com> * ci(fix): correct use of flake-utils for treefmt Co-authored-by: scottbot95 <scottbot95@gmail.com> * refactor: Remove unnecessary imports in flake * ci(fix): correct syntax in flake * ci(refactor): Remove unused code in flake.nix * style: standardised style for input url in flake * ci(fix): treefmt-nix config with existing options * ci(feat): Add Nix binary cache and update treefmt command in CI workflow * ci(refactor): Remove unused code in flake.nix * fix: include devShell packages only on supported platforms * fix: update hash for mix-deps package in flake.nix * ci(fix): Update treefmt command in CI workflow * ci(test): test ensure_linting workflow * feat: ensure mix deps are present in devShell * ci(feat): use flake-parts to enable treefmt-nix * feat: use flake-parts * fix: correct use of flake-parts for package build * doc: update CI badge URL for devops workflow * ci(fix): handle empty path filter output * ci: remove --impure flag from treefmt command in CI workflow * fix: correct treefmt.config settings in formatter.nix * fix: correct flake-parts inputs, avoid with in imports * fix: correct program name for mix-format in formatter.nix * feat: devenv via flake-parts * fix: correct use of legacy nix code with flake-parts * ci(fix): correct nix develop command in ensure_linting.yml * refactor: list imports explicitly in flake, rename folder to flake-modules to be precise * style: use tabs for indent size to format sh * style: use nixfmt-rfc-style * Revert "style: use nixfmt-rfc-style" This reverts commit082056159e. * style: use nixfmt style * fix: remove glibcLocales from optional dependencies to avoid "A definition for option `packages."[definition 4-entry 16]"' is not of type `package'." * fix: remove inotify-tools from optional dependencies to avoid "A definition for option `packages."[definition 4-entry 16]"' is not of type `package'." * fix: Remove inotify-tools and glibcLocales from optional dependencie * fix: correct file paths in flake.nix to version * fix: add ELIXIR_ERL_OPTIONS to shell environment to force utf8 locale * fix: add LOCALE_ARCHIVE to shell environment in flake.nix * Revert "fix: add LOCALE_ARCHIVE to shell environment in flake.nix" This reverts commitd45f6e32ee. * ci(refactor): rename workflow to elixir_dep_verification_and_static_analysis.yml to better reflect the intention,, remove duplicate checks * ci(debug): debug locale settings * Revert "ci(debug): debug locale settings" This reverts commit9b402f3c5f. * Revert "fix: add ELIXIR_ERL_OPTIONS to shell environment to force utf8 locale" This reverts commitd02419cba4. * fix: add LOCALE_ARCHIVE to shell environment in flake.nix * Revert "fix: add LOCALE_ARCHIVE to shell environment in flake.nix" This reverts commit761b437e69. * fix: add LANG=C.UTF-8 to shell environment in flake.nix * fix: add mix local.rebar and mix local.hex commands to flake.nix * fix: pin devenv to version without unix socket bug * chore: update nixpkgs to nixos-24.05 and update dependencies * doc: add treefmt config comments * ci: do not expose treefmt formatter programs in devshell * fix: correct use of module option to enable PostgreSQL server in flake.nix * Revert "chore: update nixpkgs to nixos-24.05 and update dependencies" This reverts commita6ea3f25aa. * feat: consistent use of erlang 26 and elixir 1_16 in flake * ci: switch to macOS runner for linting workflow * Revert "ci: do not expose treefmt formatter programs in devshell" This reverts commit1ecfa451dc. * Revert "ci: switch to macOS runner for linting workflow" This reverts commit7b430667d8. * ci: Remove nixpkgs channel specification in ensure_linting workflow * ci(debug): Add debug output for PATH and NIX_PATH in flake.nix * Revert "ci(debug): Add debug output for PATH and NIX_PATH in flake.nix" This reverts commit07faec5ddf. * fix: avoid the need for impure for devenv see #4245 * fix: remove invalid custom build.check for formatter and use default * style: linter findings * fix: Add emptyTest to avoid nix flake check test execution on non-Linux systems * chore: Remove LANG=C.UTF-8 from enterShell in flake.nix * ci(fix): Remove --impure flag from treefmt command in CI mode * ci(fix): avoid impure mode in ensure_linting workflow * style: linter findings * ci(debug): debug elixir version and locale * chore: Update flake.lock dependencies * feat: use newer devenv as unix socket bug is fixed in upstream https://github.com/cachix/devenv/issues/1497 * fix: set rebar3 path in devenv * Revert "ci(debug): debug elixir version and locale" This reverts commit7ecdc77c16. * ci: re-enable path check in DevOps workflow * doc: update Development and Contributing guide with nix and treefmt * ci: use PostgreSQL 17 * style: linter findings * ci(fix): ensure cache name in build action does not contain invalid characters to avoid invalid reference format * doc: update changelog * Revert "ci(fix): ensure cache name in build action does not contain invalid characters to avoid invalid reference format" This reverts commit02abb0359d. * ci: remove branch restriction for check_paths workflow to increase sec * ci(fix): run ghcr build workflow only for specific conditions - Ensure workflow only run if there are no changes to the .github folder - Allow workflow to run on workflow call or PRs from forks - Prevent duplicate runs for PRs from non-forks - Avoid invalid reference format for cache name in PRs from our repository * doc: update changelog * fix: update hash for mix-deps package in flake.nix * fix: disable flakeCheck for formatter, as mix format need the dep to be fetched beforehand * ci(fix): run ghcr build workflow only for specific conditions * fix: move nixosModules.default to top-level attribute set * refactor: remove unnecessary config nesting in formatter.nix * ci(fix): ensure version for buildx is set to correct name --------- Co-authored-by: scottbot95 <scottbot95@gmail.com>
122 lines
2.6 KiB
Bash
Executable File
122 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# The script assumes that basic authentication is configured
|
|
# (change the login credentials with `LOGIN`).
|
|
#
|
|
# DASHBOARD_DIRECTORY represents the path to the directory
|
|
# where the JSON files corresponding to the dashboards exist.
|
|
# The default location is relative to the execution of the
|
|
# script.
|
|
#
|
|
# URL specifies the URL of the Grafana instance.
|
|
#
|
|
# Source: https://github.com/cirocosta/sample-grafana/blob/master/update-dashboards.sh
|
|
|
|
set -o errexit
|
|
|
|
readonly URL=${URL:-"http://localhost:3000"}
|
|
readonly LOGIN=${LOGIN:-"admin:admin"}
|
|
readonly DASHBOARDS_DIRECTORY=${DASHBOARDS_DIRECTORY:-"./grafana/dashboards"}
|
|
|
|
main() {
|
|
local task=$1
|
|
|
|
echo "
|
|
URL: $URL
|
|
LOGIN: $LOGIN
|
|
DASHBOARDS_DIRECTORY: $DASHBOARDS_DIRECTORY
|
|
"
|
|
|
|
case $task in
|
|
backup) backup ;;
|
|
restore) restore ;;
|
|
*) exit 1 ;;
|
|
esac
|
|
|
|
}
|
|
|
|
backup() {
|
|
local dashboard_json
|
|
|
|
for dashboard in $(list_dashboards); do
|
|
dashboard_json=$(get_dashboard "$dashboard")
|
|
|
|
if [[ -z $dashboard_json ]]; then
|
|
echo "ERROR:
|
|
Couldn't retrieve dashboard $dashboard.
|
|
"
|
|
exit 1
|
|
fi
|
|
|
|
echo "$dashboard_json" >"$DASHBOARDS_DIRECTORY/$dashboard".json
|
|
|
|
echo "BACKED UP $(basename "$dashboard").json"
|
|
done
|
|
}
|
|
|
|
restore() {
|
|
find "$DASHBOARDS_DIRECTORY" -type f -name \*.json -print0 |
|
|
while IFS= read -r -d '' dashboard_path; do
|
|
folder_id=$(get_folder_id "$(basename "$dashboard_path" .json)")
|
|
curl \
|
|
--silent --fail --show-error --output /dev/null \
|
|
--user "$LOGIN" \
|
|
-X POST -H "Content-Type: application/json" \
|
|
-d "{\"dashboard\":$(cat "$dashboard_path"), \
|
|
\"overwrite\":true, \
|
|
\"folderId\":$folder_id, \
|
|
\"inputs\":[{\"name\":\"DS_CLOUDWATCH\", \
|
|
\"type\":\"datasource\", \
|
|
\"pluginId\":\"cloudwatch\", \
|
|
\"value\":\"TeslaMate\"}]}" \
|
|
"$URL/api/dashboards/import"
|
|
|
|
echo "RESTORED $(basename "$dashboard_path")"
|
|
done
|
|
}
|
|
|
|
get_dashboard() {
|
|
local dashboard=$1
|
|
|
|
if [[ -z $dashboard ]]; then
|
|
echo "ERROR:
|
|
A dashboard must be specified.
|
|
"
|
|
exit 1
|
|
fi
|
|
|
|
curl \
|
|
--silent \
|
|
--user "$LOGIN" \
|
|
"$URL/api/dashboards/db/$dashboard" |
|
|
jq '.dashboard | .id = null'
|
|
}
|
|
|
|
get_folder_id() {
|
|
local dashboard=$1
|
|
|
|
if [[ -z $dashboard ]]; then
|
|
echo "ERROR:
|
|
A dashboard must be specified.
|
|
"
|
|
exit 1
|
|
fi
|
|
|
|
curl \
|
|
--silent \
|
|
--user "$LOGIN" \
|
|
"$URL/api/dashboards/db/$dashboard" |
|
|
jq '.meta | .folderId'
|
|
}
|
|
|
|
list_dashboards() {
|
|
curl \
|
|
--silent \
|
|
--user "$LOGIN" \
|
|
"$URL/api/search" |
|
|
jq -r '.[] | select(.type == "dash-db") | .uri' |
|
|
cut -d '/' -f2
|
|
}
|
|
|
|
main "$@"
|