some fixes to python builder
This commit is contained in:
parent
1ce60da9cf
commit
f112e8fa52
|
@ -9,7 +9,6 @@ python "D:\dev\websites\sandpoints-dev\custom_syadmin\git_hooks_post-receive.py"
|
||||||
--git_repo "D:\dev\websites\pirate-care-syllabus\gitea\gitea-repositories\gitea\pirate-care-syllabus.git" \
|
--git_repo "D:\dev\websites\pirate-care-syllabus\gitea\gitea-repositories\gitea\pirate-care-syllabus.git" \
|
||||||
--website "D:\dev\websites\testing-ground\sandpoints" \
|
--website "D:\dev\websites\testing-ground\sandpoints" \
|
||||||
--website_preview "D:\dev\websites\testing-ground\sandpoints\_preview" \
|
--website_preview "D:\dev\websites\testing-ground\sandpoints\_preview" \
|
||||||
--hugo_preview_url http://localhost:8000/_preview/ \
|
|
||||||
--library "D:\dev\websites\pirate-care-syllabus\_library" \
|
--library "D:\dev\websites\pirate-care-syllabus\_library" \
|
||||||
--tmp_dir "D:\tmp\tmp"
|
--tmp_dir "D:\tmp\tmp"
|
||||||
--oldrev $oldrev \
|
--oldrev $oldrev \
|
||||||
|
@ -22,7 +21,7 @@ python "D:\dev\websites\sandpoints-dev\custom_syadmin\git_hooks_post-receive.py"
|
||||||
|
|
||||||
Just a mental note to read refs from the post-receive hook like this:
|
Just a mental note to read refs from the post-receive hook like this:
|
||||||
|
|
||||||
oldrev,newrev,refname = sys.stdin.readline().strip().split(’ ‘)
|
oldrev,newrev,refname = sys.stdin.readline().strip().split(' ')
|
||||||
|
|
||||||
"""
|
"""
|
||||||
import os
|
import os
|
||||||
|
@ -84,14 +83,20 @@ def cmd(parts, cwd=None, env=None):
|
||||||
return subprocess.check_output(parts, cwd=cwd, env=env, universal_newlines=True).strip()
|
return subprocess.check_output(parts, cwd=cwd, env=env, universal_newlines=True).strip()
|
||||||
|
|
||||||
|
|
||||||
def rmrf(path):
|
def rmrf(path, keep_dir=False):
|
||||||
""" Use safe-rm for recursive removal """
|
""" Use safe-rm for recursive removal """
|
||||||
""" @TODO: make it safer """
|
""" @TODO: make it safer """
|
||||||
def remove_readonly(func, path, excinfo):
|
def remove_readonly(func, path, excinfo):
|
||||||
os.chmod(path, stat.S_IWRITE)
|
os.chmod(path, stat.S_IWRITE)
|
||||||
func(path)
|
func(path)
|
||||||
# Try removal
|
# Try removal
|
||||||
if os.path.exists(path) and len(os.path.realpath(path)) > 1:
|
if keep_dir and os.path.exists(path) and len(os.path.realpath(path)) > 1:
|
||||||
|
for root, dirs, files in os.walk(path):
|
||||||
|
for f in files:
|
||||||
|
os.unlink(os.path.join(root, f))
|
||||||
|
for d in dirs:
|
||||||
|
shutil.rmtree(os.path.join(root, d), onerror=remove_readonly)
|
||||||
|
elif os.path.exists(path) and len(os.path.realpath(path)) > 1:
|
||||||
shutil.rmtree(path, onerror=remove_readonly)
|
shutil.rmtree(path, onerror=remove_readonly)
|
||||||
else:
|
else:
|
||||||
print("Either the path doesn't exist or you are trying to delete the root directory(?!):", path)
|
print("Either the path doesn't exist or you are trying to delete the root directory(?!):", path)
|
||||||
|
@ -109,12 +114,19 @@ def build_site(dest, tmp, branch=None, hugo_environment='gitea'):
|
||||||
global GIT_PATH, GIT_REPO, HUGO_PATH
|
global GIT_PATH, GIT_REPO, HUGO_PATH
|
||||||
if branch:
|
if branch:
|
||||||
print("Cloning branch: ", branch)
|
print("Cloning branch: ", branch)
|
||||||
cmd([GIT_PATH, 'clone', '--single-branch', '--branch', branch, '.', tmp], cwd=GIT_REPO)
|
cmd([GIT_PATH, 'clone', '--branch', branch, '.', tmp], cwd=GIT_REPO)
|
||||||
|
#print(' '.join([GIT_PATH, 'archive', '--format', 'tar', branch, '|', 'tar', '-x', '-C', tmp]))
|
||||||
|
#subprocess.call(' '.join([GIT_PATH, 'archive', '--format', 'tar', branch, '|', 'tar', '-x', '-C', tmp]), shell=True, cwd=GIT_REPO)
|
||||||
else:
|
else:
|
||||||
cmd([GIT_PATH, 'clone', '.', tmp], cwd=GIT_REPO)
|
cmd([GIT_PATH, 'clone', '.', tmp], cwd=GIT_REPO)
|
||||||
rmrf(dest)
|
rmrf(os.path.join(tmp, '.git'))
|
||||||
|
rmrf(dest, keep_dir=True)
|
||||||
try:
|
try:
|
||||||
os.makedirs(dest, exist_ok=True)
|
if not os.path.exists(dest):
|
||||||
|
os.makedirs(dest)
|
||||||
|
print("Build destination created: ", dest)
|
||||||
|
else:
|
||||||
|
print("Build destination exists: ", dest)
|
||||||
except:
|
except:
|
||||||
print(f"Error creating the directory: {dest}")
|
print(f"Error creating the directory: {dest}")
|
||||||
lcl = f'{tmp}/last-commit-log.txt'
|
lcl = f'{tmp}/last-commit-log.txt'
|
||||||
|
@ -130,7 +142,6 @@ def build_site(dest, tmp, branch=None, hugo_environment='gitea'):
|
||||||
now_time = datetime.now().strftime(date_format)
|
now_time = datetime.now().strftime(date_format)
|
||||||
clobber(lcl, f"\n{start_time}\n{now_time}", append=True)
|
clobber(lcl, f"\n{start_time}\n{now_time}", append=True)
|
||||||
shutil.move(lcl, dest)
|
shutil.move(lcl, dest)
|
||||||
rmrf(tmp)
|
|
||||||
|
|
||||||
|
|
||||||
# Parsing command line arguments
|
# Parsing command line arguments
|
||||||
|
@ -171,5 +182,9 @@ if not published:
|
||||||
print("The site wasn't build because there was no publish trigger, nor was it forced.")
|
print("The site wasn't build because there was no publish trigger, nor was it forced.")
|
||||||
# create preview version
|
# create preview version
|
||||||
build_site(WEBSITE_PREVIEW, TMP_WEBSITE_PREVIEW, branch=PREVIEW_BRANCH, hugo_environment='preview')
|
build_site(WEBSITE_PREVIEW, TMP_WEBSITE_PREVIEW, branch=PREVIEW_BRANCH, hugo_environment='preview')
|
||||||
|
|
||||||
|
# Clean up temp directories
|
||||||
|
rmrf(TMP_WEBSITE)
|
||||||
|
rmrf(TMP_WEBSITE_PREVIEW)
|
||||||
|
|
||||||
# @TODO: link the library
|
# @TODO: link the library
|
Loading…
Reference in New Issue