35 lines
		
	
	
		
			900 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			900 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
CONFIGS = $(patsubst /%,%,$(shell cat configs))
 | 
						|
STORE = $(patsubst /%,%,$(shell cat store))
 | 
						|
CP = mkdir -p $(dir $@) && cp -a
 | 
						|
IGNORE_FILE = $(shell test -d .git/info && echo .git/info/exclude || echo .gitignore)
 | 
						|
GIT_COMMIT = git commit -m"add $@" --no-gpg-sign --no-signoff
 | 
						|
SELECTOR != command -v sk || command -v fzy || command -f fzf
 | 
						|
 | 
						|
.PHONY: all
 | 
						|
all: init backup.tgz $(IGNORE_FILE)
 | 
						|
 | 
						|
backup.tgz: $(CONFIGS) $(STORE)
 | 
						|
	tar czf $@ $^
 | 
						|
 | 
						|
$(IGNORE_FILE): store
 | 
						|
	echo $(STORE) backup.tgz | tr ' ' '\n' > $@
 | 
						|
 | 
						|
.PHONY: init
 | 
						|
init: configs store
 | 
						|
 | 
						|
configs store:
 | 
						|
	while con="$$(find /var /etc/ /sys/ -maxdepth 2 -mindepth 1 -type f 2>/dev/null  | $(SELECTOR) -p "Select files for $@\nPress Ctrl+d once done")"; do \
 | 
						|
	echo "$$con"; \
 | 
						|
	done > $@
 | 
						|
 | 
						|
$(CONFIGS): %: /%
 | 
						|
	$(CP) $< $@
 | 
						|
	git add $@
 | 
						|
	$(GIT_COMMIT)
 | 
						|
	$(info made git commit for $@)
 | 
						|
$(STORE): %: /%
 | 
						|
	$(CP) $< $@
 | 
						|
 | 
						|
clean:
 | 
						|
	$(RM) -r $(CONFIGS) $(STORE) backup.tgz
 |