tagged-tree 0.4.0

A tree-like data structure where the values are tagged.
Documentation
#!/usr/bin/env bash
set -euo pipefail
shopt -s inherit_errexit

readonly dependencies=(
  cargo
  cargo-make
  cargo-clippy
  pre-commit
  shellcheck
)

function main() {
  status "Checking dependencies..."
  check_dependencies

  status "Installing git hooks..."
  pre-commit install --install-hooks -t pre-commit -t pre-merge-commit \
    -t pre-push -t prepare-commit-msg -t commit-msg -t post-commit \
    -t post-checkout -t post-merge

  status "Dev environment is set up!"
}

function status() {
  printf "\\n\\n[Status] %s\\n" "$1"
}

function check_dependencies() {
  missing=0
  set +e
  for dependency in "${dependencies[@]}"; do
    if ! type "$dependency" >/dev/null 2>/dev/null; then
      ((missing++))
      echo >&2 "Missing dependency: $dependency"
    fi
  done
  set -e

  if ((missing)); then
    exit 1
  fi
}

main