diff --git a/houy.py b/houy.py index 17ed3a7..4dade76 100755 --- a/houy.py +++ b/houy.py @@ -2,7 +2,7 @@ from subprocess import call from sys import argv, platform, exit, stderr -from os import environ, chdir +from os import environ, getenv, chdir import shlex import subprocess @@ -11,9 +11,10 @@ if __name__ == '__main__': setup_path = { 'darwin': '/Applications/Houdini/Houdini17.5.173/Frameworks/Houdini.framework/Versions/Current/Resources', 'linux': '/opt/hfs17.5.229', + 'win32': 'C:\Program Files\Side Effects Software\Houdini 17.5.173' } if platform not in setup_path: - print('Platform `{}` not supported... yet.', file=stderr) + print('Platform `{}` not supported... yet.'.format(platform), file=stderr) exit(1) chdir(setup_path[platform]) if '-rs3' in argv: @@ -28,12 +29,23 @@ if __name__ == '__main__': 'HOUDINI_PATH': '{}/redshift4houdini/17.5.173;&'.format(redshift_path), 'REDSHIFT_COREDATAPATH': '{}'.format(redshift_path), }) - command = shlex.split("env -i sh -c '. houdini_setup >/dev/null && env'") - proc = subprocess.Popen(command, stdout=subprocess.PIPE, - universal_newlines=True) - for line in proc.stdout: - (key, _, value) = str(line.strip()).partition('=') - environ[key] = value - print(key, '=', value) - proc.communicate() + if platform == 'win32': + #call(['runas', '/noprofile', '/user:Administrator', r'"c:\Windows\System32\tscon.exe {} /dest:console"'.format(getenv('SessionName'))], env=environ) + environ.update({ + 'PATH': "C:/ProgramData/Redshift/bin;$PATH", + 'HOUDINI_PATH': "C:/ProgramData/Redshift/Plugins/Houdini/17.5.173;&", + 'HOUDINI_OCL_DEVICETYPE': 'GPU', + 'HOUDINI_OCL_DEVICENUMBER': '0', + }) + + # Initialize env vars. + if platform != 'win32': + command = shlex.split("env -i sh -c '. houdini_setup >/dev/null && env'") + proc = subprocess.Popen(command, stdout=subprocess.PIPE, + universal_newlines=True) + for line in proc.stdout: + (key, _, value) = str(line.strip()).partition('=') + environ[key] = value + print(key, '=', value) + proc.communicate() call(['./bin/houdini'], env=environ)