Add & build archive
This commit is contained in:
		
							
								
								
									
										48
									
								
								makefile
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								makefile
									
									
									
									
									
								
							@@ -1,40 +1,52 @@
 | 
			
		||||
ifdef CHORDPRO_PIPELINE
 | 
			
		||||
	CHORDPRO_CMD = chordpro
 | 
			
		||||
else
 | 
			
		||||
	CHORDPRO_CMD = docker run -ti --rm --env HOME=$(HOME) --env USER=$(USER) --workdir $(shell pwd) --volume $(HOME):$(HOME) chordpro/chordpro:latest chordpro --config=chordpro.json 
 | 
			
		||||
	CHORDPRO_CMD = docker run -ti --rm \
 | 
			
		||||
		--env HOME=$(HOME) --env USER=$(USER) \
 | 
			
		||||
		--workdir $(shell pwd) \
 | 
			
		||||
		--volume $(HOME):$(HOME) \
 | 
			
		||||
		chordpro/chordpro:latest chordpro --config=chordpro.json
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
SRC_DIR := $(wildcard content/*)
 | 
			
		||||
SRC_EXTENSION := .cho
 | 
			
		||||
CURRENT_DIR := content/current
 | 
			
		||||
ARCHIVE_DIR := content/archive
 | 
			
		||||
 | 
			
		||||
SONG_CHO := $(foreach dir,$(SRC_DIR),$(wildcard $(dir)/*$(SRC_EXTENSION)))
 | 
			
		||||
SONG_PDF := $(patsubst %$(SRC_EXTENSION),%.pdf,$(SONG_CHO))
 | 
			
		||||
SONG_HTML := $(patsubst %$(SRC_EXTENSION),%.html,$(SONG_CHO))
 | 
			
		||||
# Find all .cho files in both current and archive
 | 
			
		||||
SONG_CHO := $(shell find $(CURRENT_DIR) $(ARCHIVE_DIR) -type f -name "*$(SRC_EXTENSION)")
 | 
			
		||||
SONG_PDF := $(SONG_CHO:$(SRC_EXTENSION)=.pdf)
 | 
			
		||||
SONG_HTML := $(SONG_CHO:$(SRC_EXTENSION)=.html)
 | 
			
		||||
 | 
			
		||||
# Songbook only includes current songs (sorted alphabetically)
 | 
			
		||||
CURRENT_CHO := $(shell find $(CURRENT_DIR) -type f -name "*$(SRC_EXTENSION)" | sort)
 | 
			
		||||
CURRENT_PDF := $(CURRENT_CHO:$(SRC_EXTENSION)=.pdf)
 | 
			
		||||
SONGBOOK := content/songbook.pdf
 | 
			
		||||
 | 
			
		||||
.DEFAULT_GOAL := pdf
 | 
			
		||||
 | 
			
		||||
%.pdf: %$(SRC_EXTENSION)
 | 
			
		||||
# Pattern rules that work for nested directories
 | 
			
		||||
content/%.pdf: content/%$(SRC_EXTENSION)
 | 
			
		||||
	@echo "Building PDF: $@"
 | 
			
		||||
	$(CHORDPRO_CMD) -o $@ $<
 | 
			
		||||
 | 
			
		||||
%.html: %$(SRC_EXTENSION)
 | 
			
		||||
content/%.html: content/%$(SRC_EXTENSION)
 | 
			
		||||
	@echo "Building HTML: $@"
 | 
			
		||||
	$(CHORDPRO_CMD) -o $@ $<
 | 
			
		||||
 | 
			
		||||
# Aggregate targets
 | 
			
		||||
all: pdf html songbook
 | 
			
		||||
 | 
			
		||||
$(SONGBOOK): $(SONG_PDF)
 | 
			
		||||
	gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=$@ $^
 | 
			
		||||
 | 
			
		||||
.PHONY: html
 | 
			
		||||
html: $(SONG_HTML)
 | 
			
		||||
 | 
			
		||||
.PHONY: pdf
 | 
			
		||||
pdf: $(SONG_PDF)
 | 
			
		||||
 | 
			
		||||
.PHONY: songbook
 | 
			
		||||
songbook: pdf
 | 
			
		||||
	$(MAKE) $(SONGBOOK)
 | 
			
		||||
html: $(SONG_HTML)
 | 
			
		||||
 | 
			
		||||
songbook: $(SONGBOOK)
 | 
			
		||||
 | 
			
		||||
# Songbook combines alphabetically sorted PDFs
 | 
			
		||||
$(SONGBOOK): $(CURRENT_PDF)
 | 
			
		||||
	@echo "Creating songbook (alphabetically sorted)..."
 | 
			
		||||
	gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=$@ $(CURRENT_PDF)
 | 
			
		||||
 | 
			
		||||
.PHONY: clean
 | 
			
		||||
clean:
 | 
			
		||||
	rm -f $(SONG_PDF) $(SONG_HTML) $(SONGBOOK)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user