Scripts: Re-Sync Blend Files #240
@ -37,6 +37,14 @@ parser.add_argument(
|
||||
help="Path folder on which to perform crawl.",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"-e",
|
||||
"--exec",
|
||||
help="user must provide blender executable path.",
|
||||
type=str,
|
||||
required=True,
|
||||
)
|
||||
|
||||
|
||||
def get_bbatch_script_path() -> str:
|
||||
"""Returns path to script that runs with bbatch"""
|
||||
@ -44,29 +52,6 @@ def get_bbatch_script_path() -> str:
|
||||
return str(dir.joinpath("resync_blend_file.py"))
|
||||
|
||||
|
||||
def get_blender_path(project_path: Path) -> str:
|
||||
"""Get the path to a project's blender executable
|
||||
|
||||
Args:
|
||||
project_path (Path): Path Object, containing project's root path
|
||||
|
||||
Returns:
|
||||
str: Path to blender executable as a string
|
||||
"""
|
||||
local_blender_path = project_path.joinpath('local').joinpath('blender')
|
||||
if not local_blender_path.exists():
|
||||
return
|
||||
system_name = platform.system().lower()
|
||||
blender_path_base = local_blender_path / system_name
|
||||
if system_name == 'linux':
|
||||
blender_path = blender_path_base / 'blender'
|
||||
elif system_name == 'darwin':
|
||||
blender_path = blender_path_base / 'Blender.app' / 'Contents' / 'MacOS' / 'Blender'
|
||||
elif system_name == 'windows':
|
||||
blender_path = blender_path_base / 'blender.exe'
|
||||
return str(blender_path.absolute())
|
||||
|
||||
|
||||
def get_files_to_crawl(project_path: str): # -> returns list of strings
|
||||
|
||||
blend_files = [
|
||||
@ -91,11 +76,14 @@ def main():
|
||||
project_path = Path(args.path)
|
||||
if not project_path.exists():
|
||||
cancel_program("Provided Path does not exist")
|
||||
exec_path = Path(args.exec)
|
||||
if not exec_path.exists():
|
||||
cancel_program("Provided Executable path does not exist")
|
||||
script_path = get_bbatch_script_path()
|
||||
files_to_craw = get_files_to_crawl(project_path)
|
||||
if len(files_to_craw) < 1:
|
||||
cancel_program("No Files to resync")
|
||||
project_blender = get_blender_path(project_path)
|
||||
|
||||
os.chdir("../bbatch")
|
||||
print("Resyncing Files...")
|
||||
cmd_list = [
|
||||
@ -106,19 +94,15 @@ def main():
|
||||
"--recursive",
|
||||
'--script',
|
||||
script_path,
|
||||
'--exec',
|
||||
exec_path,
|
||||
]
|
||||
|
||||
for item in files_to_craw:
|
||||
cmd_list.insert(3, item)
|
||||
|
||||
if project_blender:
|
||||
cmd_list.append('--exec')
|
||||
cmd_list.append(project_blender)
|
||||
|
||||
with open('/tmp/resync_log.txt', 'w') as log:
|
||||
# TODO Debug why logging isn't working as expected
|
||||
process = subprocess.Popen(cmd_list, stdout=log, shell=False) # stderr=log,
|
||||
# process = subprocess.Popen(cmd_list, shell=False)
|
||||
process = subprocess.Popen(cmd_list, stdout=log, stderr=log, shell=False)
|
||||
if process.wait() != 0:
|
||||
cancel_program(f"Resync Failed!")
|
||||
print("Resync Completed Successfully")
|
||||
|
Loading…
Reference in New Issue
Block a user