This commit is contained in:
David Cantrell 2025-07-08 16:29:05 +00:00 committed by GitHub
commit 8ee801e923
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 34 additions and 4 deletions

View file

@ -86,6 +86,14 @@ class _DEFAULT_PATH_TYPE(str): # noqa: SLOT000
_DEFAULT_PATH = _DEFAULT_PATH_TYPE(os.curdir)
RSYNC_EXCLUDES = """\
# Files to exclude with rsync(1) during publishing.
# See the INCLUDE/EXCLUDE PATTERN RULES section of the rsync man page.
.DS_Store
"""
def ask(question, answer=str, default=None, length=None):
if answer is str:
r = ""
@ -391,8 +399,30 @@ needed by Pelican.
render_jinja_template("publishconf.py.jinja2", CONF, "publishconf.py")
if automation:
render_jinja_template("tasks.py.jinja2", CONF, "tasks.py")
render_jinja_template("Makefile.jinja2", CONF, "Makefile")
try:
with open(os.path.join(CONF['basedir'], 'tasks.py'),
'w', 'utf-8') as fd:
_template = _jinja_env.get_template('tasks.py.jinja2')
fd.write(_template.render(**CONF))
fd.close()
except OSError as e:
print('Error: {0}'.format(e))
try:
with open(os.path.join(CONF['basedir'], 'Makefile'),
'w', 'utf-8') as fd:
py_v = 'python3'
_template = _jinja_env.get_template('Makefile.jinja2')
fd.write(_template.render(py_v=py_v, **CONF))
fd.close()
except OSError as e:
print('Error: {0}'.format(e))
try:
with open(os.path.join(CONF['basedir'], 'rsync_excludes.txt'),
'w', 'utf-8') as fd:
fd.write(RSYNC_EXCLUDES)
fd.close()
except OSError as e:
print('Error: {0}'.format(e))
print("Done. Your new project is available at {}".format(CONF["basedir"]))

View file

@ -132,7 +132,7 @@ sftp_upload: publish
{% set upload = upload + ["rsync_upload"] %}
rsync_upload: publish
rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --include tags --cvs-exclude --delete "$(OUTPUTDIR)"/ "$(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)"
rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --include tags --cvs-exclude --exclude-from=rsync_excludes.txt --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)
{% endif %}
{% if dropbox %}

View file

@ -169,7 +169,7 @@ def publish(c):
"""Publish to production via rsync"""
pelican_run("-s {settings_publish}".format(**CONFIG))
c.run(
'rsync --delete --exclude ".DS_Store" -pthrvz -c '
'rsync --delete --exclude-from=rsync_excludes.txt -pthrvz -c '
'-e "ssh -p {ssh_port}" '
"{} {ssh_user}@{ssh_host}:{ssh_path}".format(
CONFIG["deploy_path"].rstrip("/") + "/", **CONFIG