mirror of
				https://github.com/kevinveenbirkenbach/computer-playbook.git
				synced 2025-11-04 12:18:17 +00:00 
			
		
		
		
	- Add all group_vars/all/*.yml as extra-vars (-e @file) in Makefile syntax-check - Use consistent quoting in playbook.yml for SOFTWARE_NAME and host_type templating Ref: https://chatgpt.com/share/68cdee8a-4e88-800f-bf62-bed66dbbb417
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
ROLES_DIR           := ./roles
 | 
						|
APPLICATIONS_OUT    := ./group_vars/all/04_applications.yml
 | 
						|
APPLICATIONS_SCRIPT := ./cli/build/defaults/applications.py
 | 
						|
USERS_OUT           := ./group_vars/all/03_users.yml
 | 
						|
USERS_SCRIPT        := ./cli/build/defaults/users.py
 | 
						|
INCLUDES_SCRIPT     := ./cli/build/role_include.py
 | 
						|
 | 
						|
INCLUDE_GROUPS := $(shell python3 main.py meta categories invokable -s "-" --no-signal | tr '\n' ' ')
 | 
						|
 | 
						|
# Directory where these include-files will be written
 | 
						|
INCLUDES_OUT_DIR    := ./tasks/groups
 | 
						|
 | 
						|
# Compute extra users as before
 | 
						|
EXTRA_USERS := $(shell \
 | 
						|
  find $(ROLES_DIR) -maxdepth 1 -type d -printf '%f\n' \
 | 
						|
    | sed -E 's/.*-//' \
 | 
						|
    | grep -E -x '[a-z0-9]+' \
 | 
						|
    | sort -u \
 | 
						|
    | paste -sd, - \
 | 
						|
)
 | 
						|
 | 
						|
.PHONY: build install test
 | 
						|
 | 
						|
clean-keep-logs:
 | 
						|
	@echo "🧹 Cleaning ignored files but keeping logs/…"
 | 
						|
	git clean -fdX -- ':!logs' ':!logs/**'
 | 
						|
 | 
						|
clean:
 | 
						|
	@echo "Removing ignored git files"
 | 
						|
	git clean -fdX
 | 
						|
 | 
						|
list:
 | 
						|
	@echo Generating the roles list
 | 
						|
	python3 main.py build roles_list
 | 
						|
 | 
						|
tree:
 | 
						|
	@echo Generating Tree
 | 
						|
	python3 main.py build tree -D 2 --no-signal
 | 
						|
 | 
						|
mig: list tree
 | 
						|
	@echo Creating meta data for meta infinity graph
 | 
						|
 | 
						|
dockerignore:
 | 
						|
	@echo Create dockerignore
 | 
						|
	cat .gitignore > .dockerignore
 | 
						|
	echo ".git" >> .dockerignore 
 | 
						|
 | 
						|
messy-build: dockerignore
 | 
						|
	@echo "🔧 Generating users defaults → $(USERS_OUT)…"
 | 
						|
	python3 $(USERS_SCRIPT) \
 | 
						|
	  --roles-dir $(ROLES_DIR) \
 | 
						|
	  --output $(USERS_OUT) \
 | 
						|
	  --extra-users "$(EXTRA_USERS)"
 | 
						|
	@echo "✅ Users defaults written to $(USERS_OUT)\n"
 | 
						|
 | 
						|
	@echo "🔧 Generating applications defaults → $(APPLICATIONS_OUT)…"
 | 
						|
	python3 $(APPLICATIONS_SCRIPT) \
 | 
						|
	  --roles-dir $(ROLES_DIR) \
 | 
						|
	  --output-file $(APPLICATIONS_OUT)
 | 
						|
	@echo "✅ Applications defaults written to $(APPLICATIONS_OUT)\n"
 | 
						|
 | 
						|
	@echo "🔧 Generating role-include files for each group…"
 | 
						|
	@mkdir -p $(INCLUDES_OUT_DIR)
 | 
						|
	@$(foreach grp,$(INCLUDE_GROUPS), \
 | 
						|
	  out=$(INCLUDES_OUT_DIR)/$(grp)roles.yml; \
 | 
						|
	  echo "→ Building $$out (pattern: '$(grp)')…"; \
 | 
						|
	  python3 $(INCLUDES_SCRIPT) $(ROLES_DIR) \
 | 
						|
	    -p $(grp) -o $$out; \
 | 
						|
	  echo "  ✅ $$out"; \
 | 
						|
	)
 | 
						|
 | 
						|
messy-test: 
 | 
						|
	@echo "🧪 Running Python tests…"
 | 
						|
	PYTHONPATH=. python -m unittest discover -s tests
 | 
						|
	@echo "📑 Checking Ansible syntax…"
 | 
						|
	ansible-playbook -i localhost, -c local $(foreach f,$(wildcard group_vars/all/*.yml),-e @$(f)) playbook.yml --syntax-check
 | 
						|
 | 
						|
install: build
 | 
						|
	@echo "⚙️  Install complete."
 | 
						|
 | 
						|
build: clean messy-build
 | 
						|
	@echo "Full build with cleanup before was executed."
 | 
						|
 | 
						|
test: build messy-test
 | 
						|
	@echo "Full test with build before was executed."
 |