-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
59 lines (48 loc) · 2.36 KB
/
Makefile
File metadata and controls
59 lines (48 loc) · 2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# =============================================================================
# Makefile — Dotfiles management entry point
# =============================================================================
.DEFAULT_GOAL := help
DOTFILES_DIR := $(shell pwd)
SCRIPTS_DIR := $(DOTFILES_DIR)/scripts
.PHONY: all install link update check clean help
help: ## Show available targets
@echo ""
@echo " \033[1mDotfiles\033[0m"
@echo ""
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) \
| awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-12s\033[0m %s\n", $$1, $$2}'
@echo ""
install: ## Install all tools + create symlinks
@bash $(SCRIPTS_DIR)/setup.sh
macos: ## Apply macOS system defaults (macOS only)
@bash $(SCRIPTS_DIR)/macos.sh
brew-bundle: ## Install all apps from Brewfile (macOS only)
@brew bundle --file=$(DOTFILES_DIR)/scripts/brew-bundle/Brewfile
link: ## Create symlinks only (no installs)
@bash $(SCRIPTS_DIR)/link.sh
link-force: ## Create symlinks, overwriting existing (no backup)
@bash $(SCRIPTS_DIR)/link.sh --force
update: ## Update all tools + pull latest dotfiles
@bash $(SCRIPTS_DIR)/update.sh
check: ## Validate shell scripts and JSON configs
@echo "Checking shell scripts..."
@bash -n $(SCRIPTS_DIR)/setup.sh && echo " ✓ setup.sh"
@bash -n $(SCRIPTS_DIR)/link.sh && echo " ✓ link.sh"
@zsh -n shell/.zshrc && echo " ✓ shell/.zshrc"
@zsh -n shell/exports.zsh && echo " ✓ shell/exports.zsh"
@zsh -n shell/aliases.zsh && echo " ✓ shell/aliases.zsh"
@zsh -n shell/plugins.zsh && echo " ✓ shell/plugins.zsh"
@zsh -n shell/keybindings.zsh && echo " ✓ shell/keybindings.zsh"
@zsh -n shell/functions.zsh && echo " ✓ shell/functions.zsh"
@node -e "require('fs').readFileSync('config/vscode/settings.json','utf8')" \
&& echo " ✓ vscode/settings.json (JSONC)"
@node -e "require('fs').readFileSync('config/vscode/keybindings.json','utf8')" \
&& echo " ✓ vscode/keybindings.json (JSONC)"
@echo "All checks passed."
clean: ## Remove all symlinks created by link.sh
@echo "Removing symlinks..."
@rm -f ~/.zshrc ~/.tmux.conf ~/.gitconfig ~/.gitignore_global
@rm -f ~/.config/starship.toml
@rm -f ~/.config/zsh/exports.zsh ~/.config/zsh/aliases.zsh \
~/.config/zsh/plugins.zsh ~/.config/zsh/keybindings.zsh
@echo "Done. Your original files (if backed up) are at ~/.*.backup.*"