pelican-subtle-giggi: update release v2
diff --git a/Makefile b/Makefile
index cc1ec0b..5d8677e 100644
--- a/Makefile
+++ b/Makefile
@@ -3,10 +3,18 @@
PELICANOPTS=
BASEDIR=$(CURDIR)
-INPUTDIR=$(BASEDIR)/content
-OUTPUTDIR=$(BASEDIR)/output
CONFFILE=$(BASEDIR)/pelicanconf.py
PUBLISHCONF=$(BASEDIR)/publishconf.py
+OUTPUTDIR=$(BASEDIR)/output
+OUTPUTDIR_THEME=$(OUTPUTDIR)/theme
+OUTPUTDIR_PHOTOS=$(OUTPUTDIR)/photos
+OUTPUTDIR_VIDEOS=$(OUTPUTDIR)/videos
+
+ifeq ($(PELICAN_CONTENT),)
+ INPUTDIR=$(BASEDIR)/content
+else
+ INPUTDIR=$(PELICAN_CONTENT)
+endif
FTP_HOST=localhost
FTP_USER=anonymous
@@ -27,10 +35,17 @@
GITHUB_PAGES_BRANCH=gh-pages
-INSTALLDIR=
-UID="www-data"
-GID="www-data"
-MOD="664"
+INSTALLSUDO ?= 0
+ifeq ($(INSTALLSUDO),1)
+ SUDO := sudo -E
+endif
+INSTALLFLAGS := $(INSTALLFLAGS) -rXaA
+INSTALLDIR ?=
+# Copy the whole directory theme
+INSTALLDIR_THEME ?=
+# Copy contents only
+INSTALLDIR_PHOTOS ?=
+INSTALLDIR_VIDEOS ?=
DEBUG ?= 0
ifeq ($(DEBUG), 1)
@@ -47,7 +62,12 @@
@echo ' '
@echo 'Usage: '
@echo ' make html (re)generate the web site '
- @echo ' make clean remove the generated files '
+ @echo ' make clean-html remove all html files and folders '
+ @echo ' make clean-theme remove output/theme '
+ @echo ' make clean-photos remove output/photos '
+ @echo ' make clean-videos remove output/videos '
+ @echo ' make distclean remove output and __pycache__ '
+ @echo ' make clean remove output folder '
@echo ' make regenerate regenerate files upon modification '
@echo ' make publish generate using production settings '
@echo ' make serve [PORT=8000] serve site at http://localhost:8000'
@@ -61,6 +81,11 @@
@echo ' make s3_upload upload the web site via S3 '
@echo ' make cf_upload upload the web site via Cloud Files'
@echo ' make github upload the web site via gh-pages '
+ @echo ' make install-html copy *.html, html folders locally '
+ @echo ' make install-theme copy output/theme locally '
+ @echo ' make install-photos copy output/photos locally '
+ @echo ' make install-videos copy output/videos locally '
+ @echo ' make install copy output/* locally '
@echo ' '
@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
@echo 'Set the RELATIVE variable to 1 to enable relative urls '
@@ -69,8 +94,24 @@
html:
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
+clean-html:
+ find "$(OUTPUTDIR)" -type f -name *.html -delete
+ find "$(OUTPUTDIR)" -type d -empty -delete
+
+clean-theme:
+ [ ! -d "$(OUTPUTDIR_THEME)" ] || rm -rf $(OUTPUTDIR_THEME)
+
+clean-photos:
+ [ ! -d "$(OUTPUTDIR_PHOTOS)" ] || rm -rf $(OUTPUTDIR_PHOTOS)
+
+clean-videos:
+ [ ! -d "$(OUTPUTDIR_VIDEOS)" ] || rm -rf $(OUTPUTDIR_VIDEOS)
+
clean:
- [ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)
+ [ ! -d "$(OUTPUTDIR)" ] || rm -rf $(OUTPUTDIR)
+
+distclean: clean
+ find $(BASEDIR) -type d -name "__pycache__" -exec rm -rf '{}' '+'
regenerate:
$(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
@@ -126,18 +167,29 @@
ghp-import -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) $(OUTPUTDIR)
git push origin $(GITHUB_PAGES_BRANCH)
-install:
- @command [ -z "$(INSTALLDIR)" ] && echo "INSTALLDIR unset. i.e. make install INSTALLDIR=\"/path/to/dir\"" && exit 1 ||:
- @command [ ! -d $(OUTPUTDIR) ] && echo "OUTPUTDIR unset. i.e. make html" && exit 1 ||:
- @echo "Copying $(OUTPUTDIR) to $(INSTALLDIR)"
- @command sudo cp -ra $(OUTPUTDIR)/* $(INSTALLDIR) ||:
- @echo "Setting chown to $(UID):$(GID)"
- @command sudo chown -R $(UID):$(GID) $(INSTALLDIR) ||:
- @echo "Setting chmod $(MOD) to files"
- @command find $(INSTALLDIR) -type f | sudo xargs -i{} chmod $(MOD) {} ||:
- @echo "Installed files:"
- @command find $(INSTALLDIR) -type f ||:
- @echo "Done."
+install-html:
+ [ -d "$(OUTPUTDIR)" ] && [ -d "$(INSTALLDIR)" ] && \
+ $(SUDO) rsync $(INSTALLFLAGS) \
+ --exclude=$(notdir $(OUTPUTDIR_THEME)) \
+ --exclude=$(notdir $(OUTPUTDIR_PHOTOS)) \
+ --exclude=$(notdir $(OUTPUTDIR_VIDEOS)) \
+ $(OUTPUTDIR)/* $(INSTALLDIR)
+
+install-theme:
+ [ -d "$(OUTPUTDIR_THEME)" ] && [ -d "$(INSTALLDIR_THEME)" ] && \
+ $(SUDO) rsync $(INSTALLFLAGS) $(OUTPUTDIR_THEME) $(INSTALLDIR_THEME)/
+
+install-photos:
+ [ ! -d "$(OUTPUTDIR_PHOTOS)" ] && { echo "Nothing to do for: install-photos"; \
+ exit 0; } || [ -d "$(INSTALLDIR_PHOTOS)" ] && \
+ $(SUDO) rsync $(INSTALLFLAGS) $(OUTPUTDIR_PHOTOS)/ $(INSTALLDIR_PHOTOS)
+
+install-videos:
+ [ ! -d "$(OUTPUTDIR_VIDEOS)" ] && { echo "Nothing to do for: install-videos"; \
+ exit 0; } || [ -d "$(INSTALLDIR_VIDEOS)" ] && \
+ $(SUDO) rsync $(INSTALLFLAGS) $(OUTPUTDIR_VIDEOS)/ $(INSTALLDIR_VIDEOS)
+
+install: install-html install-theme install-photos install-videos
-.PHONY: html help clean regenerate serve serve-global devserver stopserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github install
+.PHONY: html help clean clean-html clean-theme clean-photos regenerate serve serve-global devserver stopserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github install install-html install-theme install-photos