-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
136 lines (117 loc) · 4.03 KB
/
Makefile
File metadata and controls
136 lines (117 loc) · 4.03 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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# MARP Slides Makefile
# Usage:
# make all - Build all slides (HTML + PPTX)
# make html - Build all HTML slides
# make pptx - Build all PPTX slides
# make slides/01-Intro.html - Build specific HTML
# make slides/01-Intro.pptx - Build specific PPTX
# make clean - Remove all generated files
# make watch - Watch for changes and rebuild
# make portfolio - Generate portfolio table from CSV
# Directories
SLIDES_DIR := slides
OUTPUT_DIR := slides/output
# Find all markdown files in slides directory
MD_FILES := $(wildcard $(SLIDES_DIR)/*.md)
# Generate output file paths
HTML_FILES := $(patsubst $(SLIDES_DIR)/%.md,$(OUTPUT_DIR)/%.html,$(MD_FILES))
PPTX_FILES := $(patsubst $(SLIDES_DIR)/%.md,$(OUTPUT_DIR)/%.pptx,$(MD_FILES))
# MARP CLI command
MARP := npx @marp-team/marp-cli
# MARP options
MARP_OPTS := --allow-local-files
# Default target
.PHONY: all
all: html pptx
# Build all HTML files
.PHONY: html
html: $(HTML_FILES)
# Build all PPTX files
.PHONY: pptx
pptx: $(PPTX_FILES)
# Create output directory
$(OUTPUT_DIR):
@mkdir -p $(OUTPUT_DIR)
# Pattern rule for HTML
$(OUTPUT_DIR)/%.html: $(SLIDES_DIR)/%.md | $(OUTPUT_DIR)
@echo "Building HTML: $<"
$(MARP) $(MARP_OPTS) $< -o $@
# Pattern rule for PPTX
$(OUTPUT_DIR)/%.pptx: $(SLIDES_DIR)/%.md | $(OUTPUT_DIR)
@echo "Building PPTX: $<"
$(MARP) $(MARP_OPTS) $< -o $@
# Build specific slide (both formats)
# Usage: make slide NAME=01-Intro
.PHONY: slide
slide:
ifndef NAME
$(error NAME is required. Usage: make slide NAME=01-Intro)
endif
@$(MAKE) $(OUTPUT_DIR)/$(NAME).html
@$(MAKE) $(OUTPUT_DIR)/$(NAME).pptx
# Watch mode for development
.PHONY: watch
watch:
$(MARP) $(MARP_OPTS) -w $(SLIDES_DIR)/*.md -o $(OUTPUT_DIR)
# Preview specific slide in browser
# Usage: make preview NAME=01-Intro
.PHONY: preview
preview:
ifndef NAME
$(error NAME is required. Usage: make preview NAME=01-Intro)
endif
$(MARP) $(MARP_OPTS) -p $(SLIDES_DIR)/$(NAME).md
# Clean generated files
.PHONY: clean
clean:
@echo "Cleaning generated files..."
@rm -rf $(OUTPUT_DIR)
@echo "Done."
# List all available slides
.PHONY: list
list:
@echo "Available slides:"
@for f in $(MD_FILES); do echo " - $$(basename $$f .md)"; done
# Portfolio table generation
# Default values
CSV_FILE ?= attendee.csv
START_DATE ?= 2025-12-22
PORTFOLIO_OUTPUT ?=
# Generate portfolio markdown table
# Usage: make portfolio [CSV_FILE=path/to/file.csv] [START_DATE=YYYY-MM-DD] [PORTFOLIO_OUTPUT=output.md]
.PHONY: portfolio
portfolio:
@echo "Generating portfolio table from $(CSV_FILE) (repos since $(START_DATE))..."
ifdef PORTFOLIO_OUTPUT
@python3 scripts/generate_portfolio_table.py "$(CSV_FILE)" "$(START_DATE)" -o "$(PORTFOLIO_OUTPUT)"
else
@python3 scripts/generate_portfolio_table.py "$(CSV_FILE)" "$(START_DATE)"
endif
# Help
.PHONY: help
help:
@echo "MARP Slides Makefile"
@echo ""
@echo "Usage:"
@echo " make all Build all slides (HTML + PPTX)"
@echo " make html Build all HTML slides"
@echo " make pptx Build all PPTX slides"
@echo " make slide NAME=<name> Build specific slide (both formats)"
@echo " make preview NAME=<name> Preview specific slide in browser"
@echo " make watch Watch for changes and rebuild"
@echo " make clean Remove all generated files"
@echo " make list List all available slides"
@echo " make portfolio Generate portfolio table from CSV"
@echo ""
@echo "Portfolio Options:"
@echo " CSV_FILE=<path> CSV file path (default: attendee.csv)"
@echo " START_DATE=<YYYY-MM-DD> Filter repos created after this date (default: 2025-12-22)"
@echo " PORTFOLIO_OUTPUT=<path> Output file path (default: stdout)"
@echo ""
@echo "Examples:"
@echo " make slide NAME=01-Intro"
@echo " make slides/output/01-Intro.html"
@echo " make slides/output/01-Intro.pptx"
@echo " make portfolio"
@echo " make portfolio CSV_FILE=data/attendees.csv START_DATE=2025-12-20"
@echo " make portfolio PORTFOLIO_OUTPUT=portfolio_table.md"