check-ansible:
	@command -v ansible-playbook > /dev/null || (echo "Error: ansible-playbook not found. Please install Ansible." && exit 1)
	@command -v ansible-inventory > /dev/null || (echo "Error: ansible-inventory not found. Please install Ansible." && exit 1)

check-sops:
	@command -v sops > /dev/null || (echo "Error: sops not found. Please install sops." && exit 1)
	@command -v age > /dev/null || (echo "Error: age not found. Please install age." && exit 1)
	@test -n "$${SOPS_AGE_KEY_FILE:-}$${SOPS_AGE_KEY:-}" || (echo "Error: SOPS age credentials are not set." && exit 1)

check-ssm:
	@command -v aws > /dev/null || (echo "Error: aws not found. Please install the AWS CLI." && exit 1)
	@command -v curl > /dev/null || (echo "Error: curl not found." && exit 1)
	@command -v jq > /dev/null || (echo "Error: jq not found." && exit 1)
	@command -v session-manager-plugin > /dev/null || (echo "Error: session-manager-plugin not found. Please install the AWS Session Manager plugin." && exit 1)
	@test -n "$(AWS_REGION)" || (echo "Error: AWS_REGION is not set." && exit 1)
	@test -n "$(ANSIBLE_PRIVATE_KEY_FILE)" || (echo "Error: ANSIBLE_PRIVATE_KEY_FILE is not set." && exit 1)
	@aws sts get-caller-identity > /dev/null || (echo "Error: valid AWS credentials were not found." && exit 1)

bootstrap_machine: check-ansible check-ssm
	@if [ -n "$(TAGS)" ]; then \
		ansible-playbook -i inventory/ playbooks/bootstrap_machine.yml --tags $(TAGS); \
	else \
		ansible-playbook -i inventory/ playbooks/bootstrap_machine.yml; \
	fi

deploy_monitoring: check-ansible check-sops
	ansible-playbook -i inventory/inventory.ini playbooks/monitoring.yml

deploy_metabase: check-ansible check-sops
	ansible-playbook -i inventory/inventory.ini playbooks/metabase.yml

deploy_labs_service: check-ansible check-sops check-ssm
	./scripts/deploy_labs_rolling.sh
